/** * ADVANCED: * This method returns the list of removed objects */ public Vector getRemoveObjectList(){ Vector vector = new Vector(); for (Iterator iterator = getRemoveObjectMap().keySet().iterator(); iterator.hasNext();){ Object object = iterator.next(); int count = ((Integer)getRemoveObjectMap().get(object)).intValue(); while (count > 0){ vector.add(object); --count; } } return vector; }
/** * returns true if the change set has changes */ public boolean hasChanges() { return (!(getAddObjectMap().isEmpty() && getRemoveObjectMap().isEmpty())) || getOwner().isNew(); }
if (getRemoveObjectMap().containsKey(key)){ int removeValue = ((Integer)getRemoveObjectMap().get(key)).intValue(); int addition = count.intValue(); int result = removeValue - addition; if (result > 0 ) { // more removes still getRemoveObjectMap().put(key, new Integer(result)); }else if (result < 0) { // more adds now getRemoveObjectMap().remove(key); getAddObjectMap().put(key, new Integer(Math.abs(result))); }else{ // equal getRemoveObjectMap().remove(key);
}else if (result < 0) { // more adds now getAddObjectMap().remove(key); getRemoveObjectMap().put(key, new Integer(Math.abs(result))); }else{ // equal getAddObjectMap().remove(key); if (this.getRemoveObjectMap().containsKey(key)){ int addValue = ((Integer)this.getRemoveObjectMap().get(key)).intValue(); addValue += count.intValue(); this.getRemoveObjectMap().put(key, new Integer(addValue)); }else{ this.getRemoveObjectMap().put(key, count);
/** * INTERNAL: * This method will be used to merge one record into another */ public void mergeRecord(ChangeRecord mergeFromRecord, UnitOfWorkChangeSet mergeToChangeSet, UnitOfWorkChangeSet mergeFromChangeSet) { HashMap addMapToMerge = ((DirectCollectionChangeRecord)mergeFromRecord).getAddObjectMap(); HashMap removeMapToMerge = ((DirectCollectionChangeRecord)mergeFromRecord).getRemoveObjectMap(); //merge additions for (Iterator iterator = addMapToMerge.keySet().iterator(); iterator.hasNext();){ Object added = iterator.next(); if (!((DirectCollectionChangeRecord)mergeFromRecord).getCommitAddMap().containsKey(added)){ // we have not recorded a change of this type in this class before so add it this.getCommitAddMap().put(added, ((DirectCollectionChangeRecord)mergeFromRecord).getCommitAddMap().get(added)); } this.addAdditionChange(added, (Integer)addMapToMerge.get(added)); } //merge removals for (Iterator iterator = removeMapToMerge.keySet().iterator(); iterator.hasNext();){ Object removed = iterator.next(); if (!((DirectCollectionChangeRecord)mergeFromRecord).getCommitAddMap().containsKey(removed)){ // we have not recorded a change of this type in this class before so add it this.getCommitAddMap().put(removed, ((DirectCollectionChangeRecord)mergeFromRecord).getCommitAddMap().get(removed)); } this.addRemoveChange(removed, (Integer)addMapToMerge.get(removed)); } }
HashMap removeObjects = ((DirectCollectionChangeRecord)changeRecord).getRemoveObjectMap();
writeQuery.getTranslationRow().put(referenceKey, sourceKeyValue); for (Iterator iterator = changeRecord.getRemoveObjectMap().keySet().iterator(); iterator.hasNext();){ Object object = iterator.next(); AbstractRecord thisRow = (AbstractRecord)writeQuery.getTranslationRow().clone();