/** * INTERNAL: * All the target key field names are converted to DatabaseField and stored. */ protected void initializeTargetKeys(AbstractSession session) { for (Enumeration targetEnum = getTargetKeyFields().elements(); targetEnum.hasMoreElements();) { getReferenceDescriptor().buildField((DatabaseField)targetEnum.nextElement()); } }
/** * INTERNAL: * If a user does not specify the target key then the primary keys of the target table are used. */ protected void initializeTargetKeysWithDefaults(AbstractSession session) { List<DatabaseField> primaryKeyFields = getReferenceDescriptor().getPrimaryKeyFields(); for (int index = 0; index < primaryKeyFields.size(); index++) { getTargetKeyFields().addElement(primaryKeyFields.get(index)); } }
/** * INTERNAL: * An object was added to the collection during an update, insert it. */ protected void insertAddedObjectEntry(ObjectLevelModifyQuery query, Object objectAdded) throws DatabaseException, OptimisticLockException { //cr 3819 added the line below to fix the translationtable to ensure that it // contains the required values prepareTranslationRow(query.getTranslationRow(), query.getObject(), query.getSession()); AbstractRecord databaseRow = new DatabaseRecord(); // Extract primary key and value from the source. for (int index = 0; index < getSourceRelationKeyFields().size(); index++) { DatabaseField sourceRelationKey = (DatabaseField)getSourceRelationKeyFields().elementAt(index); DatabaseField sourceKey = (DatabaseField)getSourceKeyFields().elementAt(index); Object sourceKeyValue = query.getTranslationRow().get(sourceKey); databaseRow.put(sourceRelationKey, sourceKeyValue); } // Extract target field and its value. Construct insert statement and execute it for (int index = 0; index < getTargetRelationKeyFields().size(); index++) { DatabaseField targetRelationKey = (DatabaseField)getTargetRelationKeyFields().elementAt(index); DatabaseField targetKey = (DatabaseField)getTargetKeyFields().elementAt(index); Object targetKeyValue = getReferenceDescriptor().getObjectBuilder().extractValueFromObjectForField(objectAdded, targetKey, query.getSession()); databaseRow.put(targetRelationKey, targetKeyValue); } query.getSession().executeQuery(getInsertQuery(), databaseRow); }
DatabaseField targetRelationKey = (DatabaseField)getTargetRelationKeyFields().elementAt(index); DatabaseField targetKey = (DatabaseField)getTargetKeyFields().elementAt(index); Object targetKeyValue = getReferenceDescriptor().getObjectBuilder().extractValueFromObjectForField(objectDeleted, targetKey, query.getSession()); databaseRow.put(targetRelationKey, targetKeyValue);
DatabaseField targetRelationKey = (DatabaseField)getTargetRelationKeyFields().elementAt(index); DatabaseField targetKey = (DatabaseField)getTargetKeyFields().elementAt(index); Object targetKeyValue = getReferenceDescriptor().getObjectBuilder().extractValueFromObjectForField(object, targetKey, query.getSession()); databaseRow.put(targetRelationKey, targetKeyValue);