/** * Search the collection using object identity. * @return true if the collection already contains the instance */ protected boolean containsObjectInstance(T instance) { Collection<T> collection = getCollection(); if (collection != null) { for (T item : collection) { if (instance == item) return true; } } return false; }
protected CollectionDatasource createCollectionPropertyDatasource() { return new CollectionPropertyDatasourceImpl(); }
@Override public void includeItemFirst(T item) { checkNotNullArgument(item, "item is null"); internalIncludeItem(item, () -> { addToCollectionFirst(item); }); }
protected void reattachListeners(Collection prevColl, Collection coll) { if (prevColl != null) for (Object entity : prevColl) { if (entity instanceof Instance) detachListener((Instance) entity); } if (coll != null) for (Object entity : coll) { if (entity instanceof Instance) attachListener((Instance) entity); } }
@Override public int indexOfId(K itemId) { if (itemId == null) return -1; Collection<T> collection = getCollection(); if (CollectionUtils.isNotEmpty(collection)) { List<T> list = new ArrayList<>(collection); T currentItem = getItem(itemId); return list.indexOf(currentItem); } return -1; }
protected void doSort() { Collection<T> collection = getCollection(); if (collection == null) return; List<T> list = new LinkedList<>(collection); list.sort(createEntityComparator()); collection.clear(); collection.addAll(list); }
@Override public void removeItem(T item) { checkNotNullArgument(item, "item is null"); checkState(); checkPermission(); Collection<T> collection = getCollection(); if (collection != null) { if (this.item != null && this.item.equals(item)) { setItem(null); T entity = iterator.next(); if (entity.equals(item)) { detachListener(entity); iterator.remove(); deleted(item); fireCollectionChanged(Operation.REMOVE, Collections.singletonList(item));
protected void internalIncludeItem(T item, Runnable addToCollection) { backgroundWorker.checkUIAccess(); checkState(); checkPermission(); if (getCollection() == null) { initCollection(); } doNotModify = true; try { // Don't add the same object instance twice if (!containsObjectInstance(item)) addToCollection.run(); MetaProperty inverseProperty = metaProperty.getInverse(); if (inverseProperty != null) item.setValue(inverseProperty.getName(), masterDs.getItem()); // attach listener only after setting value to the link property attachListener(item); fireCollectionChanged(Operation.ADD, Collections.singletonList(item)); } finally { doNotModify = false; } }
return; Collection<T> collection = getCollection(); if (collection != null) { for (T item : new ArrayList<>(collection)) { set.add(entity); attachListener(entity); fireCollectionChanged(Operation.UPDATE, Collections.singletonList(item)); detachListener(item); // to avoid duplication in any case attachListener(item); clearCommitLists();
@SuppressWarnings("unchecked") public void replaceItem(T item) { checkNotNullArgument(item, "item is null"); Collection<T> collection = getCollection(); if (collection != null) { for (T t : collection) { if (t.equals(item)) { detachListener(t); if (collection instanceof List) { List list = (List) collection; collection.add(item); attachListener(item); doSort(); fireCollectionChanged(Operation.UPDATE, Collections.singletonList(item));
@Override public K prevItemId(K itemId) { if (itemId == null) return null; Collection<T> collection = getCollection(); if ((collection != null) && !collection.isEmpty() && !itemId.equals(firstItemId())) { List<T> list = new ArrayList<>(collection); T currentItem = getItem(itemId); return list.get(list.indexOf(currentItem) - 1).getId(); } return null; }
@Override public K nextItemId(K itemId) { if (itemId == null) return null; Collection<T> collection = getCollection(); if ((collection != null) && !collection.isEmpty() && !itemId.equals(lastItemId())) { List<T> list = new ArrayList<>(collection); T currentItem = getItem(itemId); return list.get(list.indexOf(currentItem) + 1).getId(); } return null; }
@Override public void modifyItem(T item) { checkNotNullArgument(item, "item is null"); Collection<T> collection = getCollection(); if (collection != null) { for (T t : collection) { if (t.equals(item)) { EntityCopyUtils.copyCompositionsBack(item, t); modified = true; if (cascadeProperty) { final Entity parentItem = masterDs.getItem(); //noinspection unchecked ((DatasourceImplementation) masterDs).modified(parentItem); } else { modified(t); } } } fireCollectionChanged(Operation.UPDATE, Collections.singletonList(item)); } }
@Override public void addItem(T item) { checkNotNullArgument(item, "item is null"); internalAddItem(item, () -> { getCollection().add(item); }); }
@Override public void includeItem(T item) { checkNotNullArgument(item, "item is null"); internalIncludeItem(item, () -> { getCollection().add(item); }); }
@Override public void updateItem(T item) { checkNotNullArgument(item, "item is null"); backgroundWorker.checkUIAccess(); Collection<T> collection = getCollection(); if (collection != null) { // this method must not change the "modified" state by contract boolean saveModified = modified; for (T t : collection) { if (t.equals(item)) { metadata.getTools().copy(item, t); } } modified = saveModified; fireCollectionChanged(Operation.UPDATE, Collections.singletonList(item)); } }
@Override public void addItemFirst(T item) { checkNotNullArgument(item, "item is null"); internalAddItem(item, () -> { addToCollectionFirst(item); }); }
@Override public void committed(Set<Entity> entities) { super.committed(entities); if (State.VALID.equals(masterDs.getState())) { Collection<ReportInputParameter> collection = getCollection(); if (item != null && collection != null) { for (ReportInputParameter entity : collection) { if (entity.equals(item)) { item = entity; } } } } } }
@Override public void init(Map<String, Object> params) { super.init(params); categoryAttrsTable.addAction(new CategoryAttributeCreateAction()); categoryAttrsTable.addAction(new CategoryAttributeEditAction()); categoryAttrsTable.addAction(new RemoveAction(categoryAttrsTable, false)); categoryAttrsTable.addAction(new RefreshAction(categoryAttrsTable)); categoryAttrsDs.addStateChangeListener(e -> { if (e.getState() != Datasource.State.VALID) { return; } initDataTypeColumn(); initDefaultValueColumn(); }); initMoveButtons(); }
@Override public void excludeItem(T item) { checkNotNullArgument(item, "item is null"); backgroundWorker.checkUIAccess(); checkState(); checkPermission(); Collection<T> collection = getCollection(); if (collection != null) { if (this.item != null && this.item.equals(item)) { setItem(null); } doNotModify = true; try { collection.remove(item); MetaProperty inverseProperty = metaProperty.getInverse(); if (inverseProperty != null) item.setValue(inverseProperty.getName(), null); // detach listener only after setting value to the link property detachListener(item); fireCollectionChanged(Operation.REMOVE, Collections.singletonList(item)); } finally { doNotModify = false; } } }