public void addToCollection(NakedObject nakedObject) { getOneToManyAssociation().addElement(getNakedObject(), nakedObject); fireObjectAddedEvent(nakedObject); }
public void removeFromCollection(NakedObject nakedObject) { getOneToManyAssociation().removeElement(getNakedObject(), nakedObject); fireObjectRemovedEvent(nakedObject); }
public OneToManyAssociation getOneToManyAssociation() { return (OneToManyAssociation) getNakedObjectField(); }
public int size() { NakedCollection nakedColl = (NakedCollection) getOneToManyAssociation().get(getNakedObject()); return nakedColl.size(); }
public OneToManyAssociationInstance[] getOneToManyAssociationInstances() { if (oneToManyAssociationInstances == null) { NakedObjectField[] fields = getSpecification().getFields(NakedObjectField.COLLECTIONS); oneToManyAssociationInstances = new OneToManyAssociationInstance[fields.length]; for(int i=0; i<fields.length; i++) { oneToManyAssociationInstances[i] = new OneToManyAssociationInstanceImpl(this, (OneToManyAssociation) fields[i]); } } return oneToManyAssociationInstances; } // TODO: use a Hashtable instead
private void fireObjectAddedEvent(NakedObject addedObject) { CollectionChangeEvent e = new CollectionChangeEvent(this, addedObject, size()); List list = new ArrayList(listeners); // safeguard in case any listeners de-register themselves for (Iterator iter = list.iterator(); iter.hasNext();) { CollectionChangeListener l = (CollectionChangeListener) iter.next(); l.objectAdded(e); } }
public Collection getCollection() { List list = new ArrayList(); NakedCollection coll = (NakedCollection) getOneToManyAssociation().get(getNakedObject()); Enumeration elements = coll.elements(); while (elements.hasMoreElements()) { list.add(elements.nextElement()); } return list; }
public OneToManyAssociationInstance[] getOneToManyAssociationInstances() { if (oneToManyAssociationInstances == null) { NakedObjectField[] fields = getSpecification().getFields(NakedObjectField.COLLECTIONS); oneToManyAssociationInstances = new OneToManyAssociationInstance[fields.length]; for(int i=0; i<fields.length; i++) { oneToManyAssociationInstances[i] = new OneToManyAssociationInstanceImpl(this, (OneToManyAssociation) fields[i]); } } return oneToManyAssociationInstances; } // TODO: use a Hashtable instead
private void fireObjectRemovedEvent(NakedObject removedObject) { CollectionChangeEvent e = new CollectionChangeEvent(this, removedObject, size()); List list = new ArrayList(listeners); // safeguard in case any listeners de-register themselves for (Iterator iter = list.iterator(); iter.hasNext();) { CollectionChangeListener l = (CollectionChangeListener) iter.next(); l.objectRemoved(e); } }
public String validateAddToCollection(NakedObject nakedObject) { Consent validToAdd = getOneToManyAssociation().isValidToAdd(getNakedObject(), nakedObject); return validToAdd.isAllowed() ? null : validToAdd.getReason(); }
public String validateRemoveFromCollection(NakedObject nakedObject) { Consent validToRemove = getOneToManyAssociation().isValidToRemove(getNakedObject(), nakedObject); return validToRemove.isAllowed() ? null : validToRemove.getReason(); }