public boolean exists(String id) { return find(id) != null; }
private static Manageable findSub(Manageable target, String sub) { String[] parts = sub.split("/", 3); String seg = parts[0]; String id = parts[1]; List<? extends Manageable> segment = target.getManageableChildren().get(seg); U.must(segment != null, "Cannot find the manageable segment: %s", seg); target = findById(segment, id); U.must(target != null, "Cannot find the sub-manageable with id: %s in segment: %s", id, seg); target.reloadManageable(); return parts.length > 2 ? findSub(target, parts[2]) : target; }
public static Manageable find(String kind, String id, String sub) { Manageable target = find(kind, id); U.must(target != null, "Cannot find the manageable!"); target.reloadManageable(); if (U.isEmpty(sub)) { return target; } return findSub(target, sub); }
public E find(String id) { U.notNull(id, "id"); for (E item : items) { if (U.eq(id, item.id())) return item; } return null; }
public E set(int index, E element) { checkType(element); checkDuplicates(element); return items.set(index, element); }
public int indexOf(E element) { checkType(element); return items.indexOf(element); }
public GroupOf(Class<E> itemType) { this.kind = Manageables.kindOf(itemType); this.itemType = itemType; Groups.ALL.add(this); }
@Action(name = "!purge") public void purge() { cache.clear(); }
public static Object of(Object target) { MultiWidget actions = multi(); if (target instanceof Manageable) { Manageable manageable = (Manageable) target; for (String action : manageable.getManageableActions()) { actions.add(action(manageable, action)); } } return actions; }
private static Manageable findById(List<? extends Manageable> items, String id) { U.notNull(id, "id"); for (Manageable item : items) { if (U.eq(id, item.id())) return item; } return null; }
public boolean remove(E element) { checkType(element); return items.remove(element); }
public E get(String id) { E item = find(id); U.must(item != null, "Cannot find item with id='%s'!", id); return item; }
public boolean contains(E element) { checkType(element); return items.contains(element); }