/** * Convenience method. */ private Object buildAddedElementFromChangeSet(Object changeSet, MergeManager mergeManager, AbstractSession targetSession) { return this.getMapping().buildAddedElementFromChangeSet(changeSet, mergeManager, targetSession); }
/** * Convenience method. */ private Object buildChangeSet(Object element, ObjectChangeSet owner, AbstractSession session) { return this.getMapping().buildChangeSet(element, owner, session); }
/** * Convenience method. */ private Object buildElementFromElement(Object element, MergeManager mergeManager, AbstractSession targetSession) { return this.getMapping().buildElementFromElement(element, mergeManager, targetSession); }
/** * 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. */ @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: * 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: * Build and return a new element based on the change set. */ public Object buildAddedElementFromChangeSet(Object changeSet, MergeManager mergeManager) { ObjectChangeSet objectChangeSet = (ObjectChangeSet)changeSet; if (this.shouldMergeCascadeParts(mergeManager)) { Object targetElement = null; if (mergeManager.shouldMergeChangesIntoDistributedCache()) { targetElement = objectChangeSet.getTargetVersionOfSourceObject(mergeManager.getSession(), true); } else { targetElement = objectChangeSet.getUnitOfWorkClone(); } mergeManager.mergeChanges(targetElement, objectChangeSet); } return this.buildElementFromChangeSet(changeSet, mergeManager); }
/** * Convenience method. */ private Object buildRemovedElementFromChangeSet(Object changeSet, MergeManager mergeManager, AbstractSession targetSession) { return this.getMapping().buildRemovedElementFromChangeSet(changeSet, mergeManager, targetSession); }
/** * INTERNAL: * Build and return a new element based on the change set. */ public Object buildRemovedElementFromChangeSet(Object changeSet, MergeManager mergeManager, AbstractSession targetSession) { ObjectChangeSet objectChangeSet = (ObjectChangeSet)changeSet; if (!mergeManager.shouldMergeChangesIntoDistributedCache()) { mergeManager.registerRemovedNewObjectIfRequired(objectChangeSet.getUnitOfWorkClone()); } return this.buildElementFromChangeSet(changeSet, mergeManager, targetSession); }
/** * PUBLIC: * Define the source foreign key relationship in the one-to-many mapping. * This method is used for composite source foreign key relationships. * That is, the source object's table has multiple foreign key fields * that are references to * the target object's (typically primary) key fields. * Both the source foreign key field name and the corresponding * target primary key field name must be specified. */ public void addForeignKeyFieldName(String sourceForeignKeyFieldName, String targetKeyFieldName) { this.addForeignKeyField(new DatabaseField(sourceForeignKeyFieldName), new DatabaseField(targetKeyFieldName)); }
/** * Convenience method. * Check for null values before delegating to the mapping. */ private boolean compareElements(Object element1, Object element2, AbstractSession session) { if ((element1 == null) && (element2 == null)) { return true; } if ((element1 == null) || (element2 == null)) { return false; } if (element2 == XXX) {// if element2 was marked as cleared out, it is not a match return false; } return this.getMapping().compareElements(element1, element2, session); }
/** * Convenience method. * Check for null values before delegating to the mapping. */ private boolean compareElementsForChange(Object element1, Object element2, AbstractSession session) { if ((element1 == null) && (element2 == null)) { return true; } if ((element1 == null) || (element2 == null)) { return false; } if (element2 == XXX) {// if element2 was marked as cleared out, it is not a match return false; } return this.getMapping().compareElementsForChange(element1, element2, session); }
/** * 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. */ 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: * 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: * Build and return a new element based on the change set. */ public Object buildAddedElementFromChangeSet(Object changeSet, MergeManager mergeManager, AbstractSession targetSession) { ObjectChangeSet objectChangeSet = (ObjectChangeSet)changeSet; if (this.shouldMergeCascadeParts(mergeManager)) { Object targetElement = null; if (mergeManager.shouldMergeChangesIntoDistributedCache()) { targetElement = objectChangeSet.getTargetVersionOfSourceObject(mergeManager, mergeManager.getSession(), true); } else { targetElement = objectChangeSet.getUnitOfWorkClone(); } mergeManager.mergeChanges(targetElement, objectChangeSet, targetSession); } return this.buildElementFromChangeSet(changeSet, mergeManager, targetSession); }
/** * Convenience method. */ private Object buildRemovedElementFromChangeSet(Object changeSet, MergeManager mergeManager) { return this.getMapping().buildRemovedElementFromChangeSet(changeSet, mergeManager); }
/** * INTERNAL: * Build and return a new element based on the change set. */ public Object buildRemovedElementFromChangeSet(Object changeSet, MergeManager mergeManager, AbstractSession targetSession) { ObjectChangeSet objectChangeSet = (ObjectChangeSet)changeSet; if (!mergeManager.shouldMergeChangesIntoDistributedCache()) { mergeManager.registerRemovedNewObjectIfRequired(objectChangeSet.getUnitOfWorkClone()); } return this.buildElementFromChangeSet(changeSet, mergeManager, targetSession); }
/** * PUBLIC: * Define the source foreign key relationship in the one-to-many mapping. * This method is used for composite source foreign key relationships. * That is, the source object's table has multiple foreign key fields * that are references to * the target object's (typically primary) key fields. * Both the source foreign key field name and the corresponding * target primary key field name must be specified. */ public void addForeignKeyFieldName(String sourceForeignKeyFieldName, String targetKeyFieldName) { this.addForeignKeyField(new DatabaseField(sourceForeignKeyFieldName), new DatabaseField(targetKeyFieldName)); }
/** * Convenience method. * Check for null values before delegating to the mapping. */ private boolean compareElements(Object element1, Object element2, AbstractSession session) { if ((element1 == null) && (element2 == null)) { return true; } if ((element1 == null) || (element2 == null)) { return false; } if (element2 == XXX) {// if element2 was marked as cleared out, it is not a match return false; } return this.getMapping().compareElements(element1, element2, session); }