/** * INTERNAL: * Update the object primary key by fetching a new sequence number from the accessor. * This assume the uses sequence numbers check has already been done. * @return the sequence value or null if not assigned. * @exception DatabaseException - an error has occurred on the database. */ public Object assignSequenceNumber(Object object, AbstractSession writeSession) throws DatabaseException { return assignSequenceNumber(object, writeSession, null); }
/** * INTERNAL: * Update the object primary key by fetching a new sequence number from the accessor. * This assume the uses sequence numbers check has already been done. * @return the sequence value or null if not assigned. * @exception DatabaseException - an error has occurred on the database. */ public Object assignSequenceNumber(Object object, AbstractSession writeSession) throws DatabaseException { return assignSequenceNumber(object, writeSession, null); }
/** * INTERNAL: * Update the writeQuery's object primary key by fetching a new sequence number from the accessor. * This assume the uses sequence numbers check has already been done. * Adds the assigned sequence value to writeQuery's modify row. * If object has a changeSet then sets sequence value into change set as an Id * adds it also to object's change set in a ChangeRecord if required. * @return the sequence value or null if not assigned. * @exception DatabaseException - an error has occurred on the database. */ public Object assignSequenceNumber(WriteObjectQuery writeQuery) throws DatabaseException { return assignSequenceNumber(writeQuery.getObject(), writeQuery.getSession(), writeQuery); }
/** * INTERNAL: * Update the writeQuery's object primary key by fetching a new sequence number from the accessor. * This assume the uses sequence numbers check has already been done. * Adds the assigned sequence value to writeQuery's modify row. * If object has a changeSet then sets sequence value into change set as an Id * adds it also to object's change set in a ChangeRecord if required. * @return the sequence value or null if not assigned. * @exception DatabaseException - an error has occurred on the database. */ public Object assignSequenceNumber(WriteObjectQuery writeQuery) throws DatabaseException { return assignSequenceNumber(writeQuery.getObject(), writeQuery.getSession(), writeQuery); }
/** * Update the object's primary key by fetching a new sequence number from the accessor. */ protected void updateObjectAndRowWithSequenceNumber() throws DatabaseException { WriteObjectQuery writeQuery = getWriteObjectQuery(); writeQuery.getDescriptor().getObjectBuilder().assignSequenceNumber(writeQuery); }
/** * Update the object's primary key by fetching a new sequence number from the accessor. */ protected void updateObjectAndRowWithSequenceNumber() throws DatabaseException { WriteObjectQuery writeQuery = getWriteObjectQuery(); writeQuery.getDescriptor().getObjectBuilder().assignSequenceNumber(writeQuery); }
if (descriptor.usesSequenceNumbers() && (shouldAcquireValueBeforeInsertForAll || !descriptor.getSequence().shouldAcquireValueAfterInsert())) { descriptor.getObjectBuilder().assignSequenceNumber(object, this);
if (descriptor.usesSequenceNumbers() && (shouldAcquireValueBeforeInsertForAll || !descriptor.getSequence().shouldAcquireValueAfterInsert())) { descriptor.getObjectBuilder().assignSequenceNumber(object, this);
/** * INTERNAL: * Assign sequence numbers to all of the objects. * This allows for an object's id to be assigned before commit. * It can be used if the application requires to use the object id before the object exists on the database. * Normally all ids are assigned during the commit automatically. */ protected void assignSequenceNumbers(Map objects) throws DatabaseException { Sequencing sequencing = getSequencing(); if (sequencing == null) { return; } int whenShouldAcquireValueForAll = sequencing.whenShouldAcquireValueForAll(); if (whenShouldAcquireValueForAll == Sequencing.AFTER_INSERT) { return; } boolean shouldAcquireValueBeforeInsertForAll = whenShouldAcquireValueForAll == Sequencing.BEFORE_INSERT; startOperationProfile(SessionProfiler.AssignSequence); Iterator newObjects = objects.keySet().iterator(); while (newObjects.hasNext()) { Object object = newObjects.next(); ClassDescriptor descriptor = getDescriptor(object); if (descriptor.usesSequenceNumbers() && (shouldAcquireValueBeforeInsertForAll || !descriptor.getSequence().shouldAcquireValueAfterInsert())) { descriptor.getObjectBuilder().assignSequenceNumber(object, this); } } endOperationProfile(SessionProfiler.AssignSequence); }
/** * INTERNAL: * Assign sequence number to the object. */ public Object assignSequenceNumber(Object object, ClassDescriptor descriptor) throws DatabaseException { Object value = null; // This is done outside of a transaction to ensure optimal concurrency and deadlock avoidance in the sequence table. if (descriptor.usesSequenceNumbers() && !descriptor.getSequence().shouldAcquireValueAfterInsert()) { startOperationProfile(SessionProfiler.AssignSequence); ObjectBuilder builder = descriptor.getObjectBuilder(); try { value = builder.assignSequenceNumber(object, this); } catch (RuntimeException exception) { handleException(exception); } finally { endOperationProfile(SessionProfiler.AssignSequence); } } return value; }
/** * INTERNAL: * Assign sequence number to the object. */ public Object assignSequenceNumber(Object object, ClassDescriptor descriptor) throws DatabaseException { Object value = null; // This is done outside of a transaction to ensure optimal concurrency and deadlock avoidance in the sequence table. if (descriptor.usesSequenceNumbers() && !descriptor.getSequence().shouldAcquireValueAfterInsert()) { startOperationProfile(SessionProfiler.AssignSequence); ObjectBuilder builder = descriptor.getObjectBuilder(); try { value = builder.assignSequenceNumber(object, this); } catch (RuntimeException exception) { handleException(exception); } finally { endOperationProfile(SessionProfiler.AssignSequence); } } return value; }
/** * INTERNAL: * Assign sequence number to the object. */ public Object assignSequenceNumber(Object object, ClassDescriptor descriptor) throws DatabaseException { Object value = null; // This is done outside of a transaction to ensure optimal concurrency and deadlock avoidance in the sequence table. if (descriptor.usesSequenceNumbers() && !descriptor.getSequence().shouldAcquireValueAfterInsert()) { startOperationProfile(SessionProfiler.AssignSequence); ObjectBuilder builder = descriptor.getObjectBuilder(); try { value = builder.assignSequenceNumber(object, this); } catch (RuntimeException exception) { handleException(exception); } finally { endOperationProfile(SessionProfiler.AssignSequence); } } return value; }
ObjectBuilder objectBuilder = descriptor.getObjectBuilder(); AbstractSession session = writeQuery.getSession(); Object sequenceValue = objectBuilder.assignSequenceNumber(object, session); if (sequenceValue == null) { return;