/** * INTERNAL: * Compare the changes between two collections. Element comparisons are * made using identity and, when appropriate, the value of the element's key * for the Map container. */ @Override public ChangeRecord compareForChange(Object clone, Object backup, ObjectChangeSet owner, AbstractSession session) { if (isForeignKeyRelationship()) { if ((this.getAttributeValueFromObject(clone) != null) && (!this.isAttributeValueInstantiatedOrChanged(clone))) { return null;// never instantiated - no changes to report } return (new EISOneToManyMappingHelper(this)).compareForChange(clone, backup, owner, session); } else { return super.compareForChange(clone, backup, owner, session); } }
/** * INTERNAL: * Compare the changes between two collections. Element comparisons are * made using identity and, when appropriate, the value of the element's key * for the Map container. */ @Override public ChangeRecord compareForChange(Object clone, Object backup, ObjectChangeSet owner, AbstractSession session) { if (isForeignKeyRelationship()) { if ((this.getAttributeValueFromObject(clone) != null) && (!this.isAttributeValueInstantiatedOrChanged(clone))) { return null;// never instantiated - no changes to report } return (new EISOneToManyMappingHelper(this)).compareForChange(clone, backup, owner, session); } else { return super.compareForChange(clone, backup, owner, session); } }
/** * INTERNAL: * Compare the changes between two collections. Element comparisons are * made using identity and, when appropriate, the value of the element's key * for the Map container. */ public ChangeRecord compareForChange(Object clone, Object backup, ObjectChangeSet owner, AbstractSession session) { if (isForeignKeyRelationship()) { if ((this.getAttributeValueFromObject(clone) != null) && (!this.isAttributeValueInstantiatedOrChanged(clone))) { return null;// never instantiated - no changes to report } return (new EISOneToManyMappingHelper(this)).compareForChange(clone, backup, owner, session); } else { return super.compareForChange(clone, backup, owner, session); } }
/** * INTERNAL: * Update the privately owned parts. */ @Override public void preUpdate(WriteObjectQuery query) throws DatabaseException, OptimisticLockException { if (!isForeignKeyRelationship()) { return; } if (!shouldObjectModifyCascadeToParts(query)) { return; } // if the target objects are not instantiated, they could not have been changed.... if (!isAttributeValueInstantiatedOrChanged(query.getObject())) { return; } if (query.getObjectChangeSet() != null) { // UnitOfWork writeChanges(query.getObjectChangeSet(), query); } else { // OLD COMMIT compareObjectsAndWrite(query); } }
/** * INTERNAL: * Update the reference objects. */ @Override public void postUpdate(WriteObjectQuery query) throws DatabaseException, OptimisticLockException { if (isForeignKeyRelationship()) { return; } if (!shouldObjectModifyCascadeToParts(query)) { return; } // if the target objects are not instantiated, they could not have been changed.... if (!isAttributeValueInstantiatedOrChanged(query.getObject())) { return; } if (query.getObjectChangeSet() != null) { // UnitOfWork writeChanges(query.getObjectChangeSet(), query); } else { // OLD COMMIT compareObjectsAndWrite(query); } }
/** * INTERNAL: * Update the privately owned parts. */ @Override public void preUpdate(WriteObjectQuery query) throws DatabaseException, OptimisticLockException { if (!isForeignKeyRelationship()) { return; } if (!shouldObjectModifyCascadeToParts(query)) { return; } // if the target objects are not instantiated, they could not have been changed.... if (!isAttributeValueInstantiatedOrChanged(query.getObject())) { return; } if (query.getObjectChangeSet() != null) { // UnitOfWork writeChanges(query.getObjectChangeSet(), query); } else { // OLD COMMIT compareObjectsAndWrite(query); } }
/** * INTERNAL: * Update the reference objects. */ public void postUpdate(WriteObjectQuery query) throws DatabaseException, OptimisticLockException { if (isForeignKeyRelationship()) { return; } if (!this.shouldObjectModifyCascadeToParts(query)) { return; } // if the target objects are not instantiated, they could not have been changed.... if (!this.isAttributeValueInstantiatedOrChanged(query.getObject())) { return; } // manage objects added and removed from the collection Object objectsInMemory = this.getRealCollectionAttributeValueFromObject(query.getObject(), query.getSession()); Object objectsInDB = this.readPrivateOwnedForObject(query); this.compareObjectsAndWrite(objectsInDB, objectsInMemory, query); }
/** * INTERNAL: * Update the privately owned parts. */ public void preUpdate(WriteObjectQuery query) throws DatabaseException, OptimisticLockException { if (!this.isForeignKeyRelationship()) { return; } if (!this.shouldObjectModifyCascadeToParts(query)) { return; } // if the target objects are not instantiated, they could not have been changed.... if (!this.isAttributeValueInstantiatedOrChanged(query.getObject())) { return; } // manage objects added and removed from the collection Object objectsInMemory = this.getRealCollectionAttributeValueFromObject(query.getObject(), query.getSession()); Object objectsInDB = this.readPrivateOwnedForObject(query); this.compareObjectsAndWrite(objectsInDB, objectsInMemory, query); }
/** * INTERNAL: * Update the reference objects. */ @Override public void postUpdate(WriteObjectQuery query) throws DatabaseException, OptimisticLockException { if (isForeignKeyRelationship()) { return; } if (!shouldObjectModifyCascadeToParts(query)) { return; } // if the target objects are not instantiated, they could not have been changed.... if (!isAttributeValueInstantiatedOrChanged(query.getObject())) { return; } if (query.getObjectChangeSet() != null) { // UnitOfWork writeChanges(query.getObjectChangeSet(), query); } else { // OLD COMMIT compareObjectsAndWrite(query); } }
/** * INTERNAL: * If any of the references objects has changed, write out * all the keys. */ @Override public void writeFromObjectIntoRowForUpdate(WriteObjectQuery writeQuery, AbstractRecord row) throws DescriptorException { if (!this.isAttributeValueInstantiatedOrChanged(writeQuery.getObject())) { return; } AbstractSession session = writeQuery.getSession(); if (session.isUnitOfWork()) { // PRS2074 fix for "traditional" Indirection Object collection1 = this.getRealCollectionAttributeValueFromObject(writeQuery.getObject(), session); Object collection2 = this.getRealCollectionAttributeValueFromObject(writeQuery.getBackupClone(), session); if (this.compareObjectsWithoutPrivateOwned(collection1, collection2, session)) { return;// nothing has changed - don't put anything in the row } } this.writeFromObjectIntoRow(writeQuery.getObject(), row, session, WriteType.UPDATE); }
/** * INTERNAL: * If any of the references objects has changed, write out * all the keys. */ public void writeFromObjectIntoRowForUpdate(WriteObjectQuery writeQuery, AbstractRecord row) throws DescriptorException { if (!this.isAttributeValueInstantiatedOrChanged(writeQuery.getObject())) { return; } AbstractSession session = writeQuery.getSession(); if (session.isUnitOfWork()) { // PRS2074 fix for "traditional" Indirection Object collection1 = this.getRealCollectionAttributeValueFromObject(writeQuery.getObject(), session); Object collection2 = this.getRealCollectionAttributeValueFromObject(writeQuery.getBackupClone(), session); if (this.compareObjectsWithoutPrivateOwned(collection1, collection2, session)) { return;// nothing has changed - don't put anything in the row } } this.writeFromObjectIntoRow(writeQuery.getObject(), row, session); }
/** * INTERNAL: * If any of the references objects has changed, write out * all the keys. */ @Override public void writeFromObjectIntoRowForUpdate(WriteObjectQuery writeQuery, AbstractRecord row) throws DescriptorException { if (!this.isAttributeValueInstantiatedOrChanged(writeQuery.getObject())) { return; } AbstractSession session = writeQuery.getSession(); if (session.isUnitOfWork()) { // PRS2074 fix for "traditional" Indirection Object collection1 = this.getRealCollectionAttributeValueFromObject(writeQuery.getObject(), session); Object collection2 = this.getRealCollectionAttributeValueFromObject(writeQuery.getBackupClone(), session); if (this.compareObjectsWithoutPrivateOwned(collection1, collection2, session)) { return;// nothing has changed - don't put anything in the row } } this.writeFromObjectIntoRow(writeQuery.getObject(), row, session, WriteType.UPDATE); }