/** * INTERNAL: * Extract primary key from a row. */ protected Vector extractPrimaryKeyFromRow(Record rowContainingPrimaryKey, Class theClass) { return this.session.getDescriptor(theClass).getObjectBuilder().extractPrimaryKeyFromRow((AbstractRecord)rowContainingPrimaryKey, this.session); }
/** * INTERNAL: * Extract primary key from a row. */ protected Object extractPrimaryKeyFromRow(Record rowContainingPrimaryKey, Class theClass) { return this.session.getDescriptor(theClass).getObjectBuilder().extractPrimaryKeyFromRow((AbstractRecord)rowContainingPrimaryKey, this.session); }
/** * INTERNAL: * Extract primary key from a row. */ protected Object extractPrimaryKeyFromRow(Record rowContainingPrimaryKey, Class theClass) { return this.session.getDescriptor(theClass).getObjectBuilder().extractPrimaryKeyFromRow((AbstractRecord)rowContainingPrimaryKey, this.session); }
/** * Return the row with primary keys and their values from the given expression. */ public Vector extractPrimaryKeyFromExpression(boolean requiresExactMatch, Expression expression, AbstractRecord translationRow, AbstractSession session) { AbstractRecord primaryKeyRow = createRecord(getPrimaryKeyMappings().size(), session); expression.getBuilder().setSession(session.getRootSession(null)); // Get all the field & values from expression. boolean isValid = expression.extractPrimaryKeyValues(requiresExactMatch, this.descriptor, primaryKeyRow, translationRow); if (requiresExactMatch && (!isValid)) { return null; } // Check that the sizes match. if (primaryKeyRow.size() != this.descriptor.getPrimaryKeyFields().size()) { return null; } return extractPrimaryKeyFromRow(primaryKeyRow, session); }
/** * Return the row with primary keys and their values from the given expression. */ public Object extractPrimaryKeyFromExpression(boolean requiresExactMatch, Expression expression, AbstractRecord translationRow, AbstractSession session) { AbstractRecord primaryKeyRow = createRecord(getPrimaryKeyMappings().size(), session); expression.getBuilder().setSession(session.getRootSession(null)); // Get all the field & values from expression. boolean isValid = expression.extractPrimaryKeyValues(requiresExactMatch, this.descriptor, primaryKeyRow, translationRow); if (requiresExactMatch && (!isValid)) { return null; } // Check that the sizes match. if (primaryKeyRow.size() != this.descriptor.getPrimaryKeyFields().size()) { return null; } Object primaryKey = extractPrimaryKeyFromRow(primaryKeyRow, session); if ((primaryKey == null) && isValid) { return InvalidObject.instance; } return primaryKey; }
/** * Return the row with primary keys and their values from the given expression. */ public Object extractPrimaryKeyFromExpression(boolean requiresExactMatch, Expression expression, AbstractRecord translationRow, AbstractSession session) { AbstractRecord primaryKeyRow = createRecord(getPrimaryKeyMappings().size(), session); expression.getBuilder().setSession(session.getRootSession(null)); // Get all the field & values from expression. boolean isValid = expression.extractPrimaryKeyValues(requiresExactMatch, this.descriptor, primaryKeyRow, translationRow); if (requiresExactMatch && (!isValid)) { return null; } // Check that the sizes match. if (primaryKeyRow.size() != this.descriptor.getPrimaryKeyFields().size()) { return null; } Object primaryKey = extractPrimaryKeyFromRow(primaryKeyRow, session); if ((primaryKey == null) && isValid) { return InvalidObject.instance; } return primaryKey; }
public void addObjectToCache(Object obj, Node node, XMLMapping selfRecordMapping) { // Can't process non-element nodes if (node.getNodeType() != Node.ELEMENT_NODE) { return; } AbstractSession session = context.getSession(obj); XMLDescriptor xmlDescriptor = (XMLDescriptor)session.getDescriptor(obj); DOMRecord row = new DOMRecord((Element)node); row.setSession(session); Vector pk = xmlDescriptor.getObjectBuilder().extractPrimaryKeyFromRow(row, session); if (xmlDescriptor.shouldPreserveDocument() || xmlDescriptor.getPrimaryKeyFieldNames().size() > 0) { if ((pk == null) || (pk.size() == 0)) { pk = new Vector(); pk.addElement(new WeakObjectWrapper(obj)); } CacheKey key = session.getIdentityMapAccessorInstance().acquireDeferredLock(pk, xmlDescriptor.getJavaClass(), xmlDescriptor); if ((xmlDescriptor).shouldPreserveDocument()) { key.setRecord(row); } key.setObject(obj); key.releaseDeferredLock(); } }
AbstractSession session = cursor.getExecutionSession(); Object sourceKey = builder.extractPrimaryKeyFromRow(parentRow, session); AbstractRecord extraRow = null; while (true) { Object nextKey = builder.extractPrimaryKeyFromRow(nextParentRow, session); if ((sourceKey != null) && sourceKey.equals(nextKey)) { childRows.add(nextRow);
setId(query.getDescriptor().getObjectBuilder().extractPrimaryKeyFromRow(row, query.getSession()));
/** * INTERNAL: * setup the modifyQuery for update, */ public void prepareModifyQueryForUpdate(ObjectLevelModifyQuery originalQuery, ObjectLevelModifyQuery modifyQuery, Object object) { AbstractRecord aggregateRow = getAggregateRow(originalQuery, object); modifyQuery.setObject(object); modifyQuery.setDescriptor(getReferenceDescriptor(object.getClass(), originalQuery.getSession())); modifyQuery.setPrimaryKey(getReferenceDescriptor().getObjectBuilder().extractPrimaryKeyFromRow(aggregateRow, originalQuery.getSession())); modifyQuery.setTranslationRow(aggregateRow); modifyQuery.setSession(originalQuery.getSession()); modifyQuery.setCascadePolicy(originalQuery.getCascadePolicy()); modifyQuery.dontMaintainCache(); }
/** * INTERNAL: * setup the modifyQuery for update, */ public void prepareModifyQueryForUpdate(ObjectLevelModifyQuery originalQuery, ObjectLevelModifyQuery modifyQuery, Object object) { AbstractRecord aggregateRow = getAggregateRow(originalQuery, object); modifyQuery.setObject(object); modifyQuery.setDescriptor(getReferenceDescriptor(object.getClass(), originalQuery.getSession())); modifyQuery.setPrimaryKey(getReferenceDescriptor().getObjectBuilder().extractPrimaryKeyFromRow(aggregateRow, originalQuery.getSession())); modifyQuery.setTranslationRow(aggregateRow); modifyQuery.setSession(originalQuery.getSession()); modifyQuery.setCascadePolicy(originalQuery.getCascadePolicy()); modifyQuery.dontMaintainCache(); }
/** * INTERNAL: * setup the modifyQuery for update, */ public void prepareModifyQueryForUpdate(ObjectLevelModifyQuery originalQuery, ObjectLevelModifyQuery modifyQuery, Object object) { AbstractRecord aggregateRow = getAggregateRow(originalQuery, object); modifyQuery.setObject(object); modifyQuery.setDescriptor(getReferenceDescriptor(object.getClass(), originalQuery.getSession())); modifyQuery.setPrimaryKey(getReferenceDescriptor().getObjectBuilder().extractPrimaryKeyFromRow(aggregateRow, originalQuery.getSession())); modifyQuery.setTranslationRow(aggregateRow); modifyQuery.setSession(originalQuery.getSession()); modifyQuery.setCascadePolicy(originalQuery.getCascadePolicy()); modifyQuery.dontMaintainCache(); }
/** * INTERNAL: * setup the modifyQuery for pre delete */ public void prepareModifyQueryForDelete(ObjectLevelModifyQuery originalQuery, ObjectLevelModifyQuery modifyQuery, Object wrappedObject, Map extraData) { Object object = getContainerPolicy().unwrapIteratorResult(wrappedObject); AbstractRecord aggregateRow = getAggregateRow(originalQuery, object); ContainerPolicy.copyMapDataToRow(containerPolicy.getKeyMappingDataForWriteQuery(wrappedObject, modifyQuery.getSession()), aggregateRow); if(this.listOrderField != null && extraData != null) { aggregateRow.put(this.listOrderField, extraData.get(this.listOrderField)); } modifyQuery.setObject(object); modifyQuery.setDescriptor(getReferenceDescriptor(object.getClass(), originalQuery.getSession())); modifyQuery.setPrimaryKey(getReferenceDescriptor().getObjectBuilder().extractPrimaryKeyFromRow(aggregateRow, originalQuery.getSession())); modifyQuery.setModifyRow(aggregateRow); modifyQuery.setTranslationRow(aggregateRow); modifyQuery.setSession(originalQuery.getSession()); if (originalQuery.shouldCascadeOnlyDependentParts()) { //This query is the result of being in a UnitOfWork therefor use the Aggregate Collection //specific cascade policy to prevent cascading the delete now modifyQuery.setCascadePolicy(DatabaseQuery.CascadeAggregateDelete); } else { modifyQuery.setCascadePolicy(originalQuery.getCascadePolicy()); } modifyQuery.dontMaintainCache(); }
/** * INTERNAL: * setup the modifyQuery for pre delete */ public void prepareModifyQueryForDelete(ObjectLevelModifyQuery originalQuery, ObjectLevelModifyQuery modifyQuery, Object wrappedObject, Map extraData) { Object object = getContainerPolicy().unwrapIteratorResult(wrappedObject); AbstractRecord aggregateRow = getAggregateRow(originalQuery, object); ContainerPolicy.copyMapDataToRow(containerPolicy.getKeyMappingDataForWriteQuery(wrappedObject, modifyQuery.getSession()), aggregateRow); if(this.listOrderField != null && extraData != null) { aggregateRow.put(this.listOrderField, extraData.get(this.listOrderField)); } modifyQuery.setObject(object); modifyQuery.setDescriptor(getReferenceDescriptor(object.getClass(), originalQuery.getSession())); modifyQuery.setPrimaryKey(getReferenceDescriptor().getObjectBuilder().extractPrimaryKeyFromRow(aggregateRow, originalQuery.getSession())); modifyQuery.setModifyRow(aggregateRow); modifyQuery.setTranslationRow(aggregateRow); modifyQuery.setSession(originalQuery.getSession()); if (originalQuery.shouldCascadeOnlyDependentParts()) { //This query is the result of being in a UnitOfWork therefor use the Aggregate Collection //specific cascade policy to prevent cascading the delete now modifyQuery.setCascadePolicy(DatabaseQuery.CascadeAggregateDelete); } else { modifyQuery.setCascadePolicy(originalQuery.getCascadePolicy()); } modifyQuery.dontMaintainCache(); }
/** * INTERNAL: * setup the modifyQuery for pre delete */ public void prepareModifyQueryForDelete(ObjectLevelModifyQuery originalQuery, ObjectLevelModifyQuery modifyQuery, Object wrappedObject, Map extraData) { Object object = getContainerPolicy().unwrapIteratorResult(wrappedObject); AbstractRecord aggregateRow = getAggregateRow(originalQuery, object); ContainerPolicy.copyMapDataToRow(containerPolicy.getKeyMappingDataForWriteQuery(wrappedObject, modifyQuery.getSession()), aggregateRow); if(this.listOrderField != null && extraData != null) { aggregateRow.put(this.listOrderField, extraData.get(this.listOrderField)); } modifyQuery.setObject(object); modifyQuery.setDescriptor(getReferenceDescriptor(object.getClass(), originalQuery.getSession())); modifyQuery.setPrimaryKey(getReferenceDescriptor().getObjectBuilder().extractPrimaryKeyFromRow(aggregateRow, originalQuery.getSession())); modifyQuery.setModifyRow(aggregateRow); modifyQuery.setTranslationRow(aggregateRow); modifyQuery.setSession(originalQuery.getSession()); if (originalQuery.shouldCascadeOnlyDependentParts()) { //This query is the result of being in a UnitOfWork therefor use the Aggregate Collection //specific cascade policy to prevent cascading the delete now modifyQuery.setCascadePolicy(DatabaseQuery.CascadeAggregateDelete); } else { modifyQuery.setCascadePolicy(originalQuery.getCascadePolicy()); } modifyQuery.dontMaintainCache(); }
Vector key = this.referenceDescriptor.getObjectBuilder().extractPrimaryKeyFromRow(targetRow, executionSession); if (key == null) { return this.indirectionPolicy.nullValueFromRow();
Object primaryKey = descriptor.getObjectBuilder().extractPrimaryKeyFromRow(translationRow, session); if (primaryKey == null) { return null;
Object primaryKey = descriptor.getObjectBuilder().extractPrimaryKeyFromRow(translationRow, session); if (primaryKey == null) { return null;
Object key = this.referenceDescriptor.getObjectBuilder().extractPrimaryKeyFromRow(targetRow, executionSession); if (key == null) { return this.indirectionPolicy.nullValueFromRow();
Object key = this.referenceDescriptor.getObjectBuilder().extractPrimaryKeyFromRow(targetRow, executionSession); if (key == null) { return this.indirectionPolicy.nullValueFromRow();