@Override public Object getAttributeValueFromObject(Object object) { List sourceFields = ((ManyToManyMapping)object).getSourceKeyFields(); List relationFields = ((ManyToManyMapping)object).getSourceRelationKeyFields(); List associations = new ArrayList(sourceFields.size()); for (int index = 0; index < sourceFields.size(); index++) { associations.add(new Association(relationFields.get(index), sourceFields.get(index))); } return associations; }
public Object getAttributeValueFromObject(Object object) { List sourceFields = ((ManyToManyMapping)object).getSourceKeyFields(); List relationFields = ((ManyToManyMapping)object).getSourceRelationKeyFields(); List associations = new ArrayList(sourceFields.size()); for (int index = 0; index < sourceFields.size(); index++) { associations.add(new Association(relationFields.get(index), sourceFields.get(index))); } return associations; }
public Object getAttributeValueFromObject(Object object) { List sourceFields = ((ManyToManyMapping)object).getSourceKeyFields(); List relationFields = ((ManyToManyMapping)object).getSourceRelationKeyFields(); List associations = new ArrayList(sourceFields.size()); for (int index = 0; index < sourceFields.size(); index++) { associations.add(new Association(relationFields.get(index), sourceFields.get(index))); } return associations; }
public void setAttributeValueInObject(Object object, Object value) { ManyToManyMapping mapping = (ManyToManyMapping)object; List associations = (List)value; mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size())); mapping.setSourceRelationKeyFields(NonSynchronizedVector.newInstance(associations.size())); Iterator iterator = associations.iterator(); while (iterator.hasNext()) { Association association = (Association)iterator.next(); mapping.getSourceKeyFields().add((DatabaseField)association.getValue()); mapping.getSourceRelationKeyFields().add((DatabaseField)association.getKey()); } } });
public void setAttributeValueInObject(Object object, Object value) { ManyToManyMapping mapping = (ManyToManyMapping)object; List associations = (List)value; mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size())); mapping.setSourceRelationKeyFields(NonSynchronizedVector.newInstance(associations.size())); Iterator iterator = associations.iterator(); while (iterator.hasNext()) { Association association = (Association)iterator.next(); mapping.getSourceKeyFields().add((DatabaseField)association.getValue()); mapping.getSourceRelationKeyFields().add((DatabaseField)association.getKey()); } } });
@Override public void setAttributeValueInObject(Object object, Object value) { ManyToManyMapping mapping = (ManyToManyMapping)object; List associations = (List)value; mapping.setSourceKeyFields(NonSynchronizedVector.newInstance(associations.size())); mapping.setSourceRelationKeyFields(NonSynchronizedVector.newInstance(associations.size())); Iterator iterator = associations.iterator(); while (iterator.hasNext()) { Association association = (Association)iterator.next(); mapping.getSourceKeyFields().add((DatabaseField)association.getValue()); mapping.getSourceRelationKeyFields().add((DatabaseField)association.getKey()); } } });
/** * INTERNAL: * Extract the source primary key value from the relation row. * Used for batch reading, most following same order and fields as in the mapping. */ protected Vector extractKeyFromTargetRow(AbstractRecord row, AbstractSession session) { Vector key = new Vector(getSourceRelationKeyFields().size()); for (int index = 0; index < getSourceRelationKeyFields().size(); index++) { DatabaseField relationField = getSourceRelationKeyFields().elementAt(index); DatabaseField sourceField = getSourceKeyFields().elementAt(index); Object value = row.get(relationField); // Must ensure the classification gets a cache hit. try { value = session.getDatasourcePlatform().getConversionManager().convertObject(value, getDescriptor().getObjectBuilder().getFieldClassification(sourceField)); } catch (ConversionException e) { throw ConversionException.couldNotBeConverted(this, getDescriptor(), e); } key.addElement(value); } return key; }
protected void addManyToManyMappingLines(NonreflectiveMethodDefinition method, String mappingName, ManyToManyMapping mapping) { if (mapping.getRelationTable() != null) { method.addLine(mappingName + ".setRelationTableName(\"" + mapping.getRelationTable().getQualifiedName() + "\");"); } Enumeration sourceRelationKeysEnum = mapping.getSourceRelationKeyFields().elements(); Enumeration sourceKeysEnum = mapping.getSourceKeyFields().elements(); while (sourceRelationKeysEnum.hasMoreElements()) { DatabaseField sourceField = (DatabaseField)sourceKeysEnum.nextElement(); DatabaseField relationField = (DatabaseField)sourceRelationKeysEnum.nextElement(); method.addLine(mappingName + ".addSourceRelationKeyFieldName(\"" + relationField.getQualifiedName() + "\", \"" + sourceField.getQualifiedName() + "\");"); } Enumeration targetRelationKeysEnum = mapping.getTargetRelationKeyFields().elements(); Enumeration targetKeysEnum = mapping.getTargetKeyFields().elements(); while (targetRelationKeysEnum.hasMoreElements()) { DatabaseField targetField = (DatabaseField)targetKeysEnum.nextElement(); DatabaseField relationField = (DatabaseField)targetRelationKeysEnum.nextElement(); method.addLine(mappingName + ".addTargetRelationKeyFieldName(\"" + relationField.getQualifiedName() + "\", \"" + targetField.getQualifiedName() + "\");"); } addHistoryPolicyLines(method, mapping, mappingName); }
protected void addManyToManyMappingLines(NonreflectiveMethodDefinition method, String mappingName, ManyToManyMapping mapping) { if (mapping.getRelationTable() != null) { method.addLine(mappingName + ".setRelationTableName(\"" + mapping.getRelationTable().getQualifiedName() + "\");"); } Enumeration sourceRelationKeysEnum = mapping.getSourceRelationKeyFields().elements(); Enumeration sourceKeysEnum = mapping.getSourceKeyFields().elements(); while (sourceRelationKeysEnum.hasMoreElements()) { DatabaseField sourceField = (DatabaseField)sourceKeysEnum.nextElement(); DatabaseField relationField = (DatabaseField)sourceRelationKeysEnum.nextElement(); method.addLine(mappingName + ".addSourceRelationKeyFieldName(\"" + relationField.getQualifiedName() + "\", \"" + sourceField.getQualifiedName() + "\");"); } Enumeration targetRelationKeysEnum = mapping.getTargetRelationKeyFields().elements(); Enumeration targetKeysEnum = mapping.getTargetKeyFields().elements(); while (targetRelationKeysEnum.hasMoreElements()) { DatabaseField targetField = (DatabaseField)targetKeysEnum.nextElement(); DatabaseField relationField = (DatabaseField)targetRelationKeysEnum.nextElement(); method.addLine(mappingName + ".addTargetRelationKeyFieldName(\"" + relationField.getQualifiedName() + "\", \"" + targetField.getQualifiedName() + "\");"); } addHistoryPolicyLines(method, mapping, mappingName); }
protected void addManyToManyMappingLines(NonreflectiveMethodDefinition method, String mappingName, ManyToManyMapping mapping) { if (mapping.getRelationTable() != null) { method.addLine(mappingName + ".setRelationTableName(\"" + mapping.getRelationTable().getQualifiedName() + "\");"); } Enumeration sourceRelationKeysEnum = mapping.getSourceRelationKeyFields().elements(); Enumeration sourceKeysEnum = mapping.getSourceKeyFields().elements(); while (sourceRelationKeysEnum.hasMoreElements()) { DatabaseField sourceField = (DatabaseField)sourceKeysEnum.nextElement(); DatabaseField relationField = (DatabaseField)sourceRelationKeysEnum.nextElement(); method.addLine(mappingName + ".addSourceRelationKeyFieldName(\"" + relationField.getQualifiedName() + "\", \"" + sourceField.getQualifiedName() + "\");"); } Enumeration targetRelationKeysEnum = mapping.getTargetRelationKeyFields().elements(); Enumeration targetKeysEnum = mapping.getTargetKeyFields().elements(); while (targetRelationKeysEnum.hasMoreElements()) { DatabaseField targetField = (DatabaseField)targetKeysEnum.nextElement(); DatabaseField relationField = (DatabaseField)targetRelationKeysEnum.nextElement(); method.addLine(mappingName + ".addTargetRelationKeyFieldName(\"" + relationField.getQualifiedName() + "\", \"" + targetField.getQualifiedName() + "\");"); } addHistoryPolicyLines(method, mapping, mappingName); }
Vector targetFields = null; if(mapping.isManyToManyMapping()) { targetFields = ((ManyToManyMapping)mapping).getSourceRelationKeyFields(); } else if(mapping.isDirectCollectionMapping()) { targetFields = ((DirectCollectionMapping)mapping).getReferenceKeyFields();
protected Vector buildDeleteAllStatementsForMappings(SQLCall selectCallForExist, SQLSelectStatement selectStatementForExist, boolean dontCheckDescriptor) { Vector deleteStatements = new Vector(); Iterator itMappings = getDescriptor().getMappings().iterator(); while(itMappings.hasNext()) { DatabaseMapping mapping = (DatabaseMapping)itMappings.next(); if(mapping.isManyToManyMapping() || mapping.isDirectCollectionMapping()) { if(dontCheckDescriptor || mapping.getDescriptor().equals(getDescriptor())) { Vector sourceFields = null; Vector targetFields = null; if(mapping.isManyToManyMapping()) { sourceFields = ((ManyToManyMapping)mapping).getSourceKeyFields(); targetFields = ((ManyToManyMapping)mapping).getSourceRelationKeyFields(); } else if(mapping.isDirectCollectionMapping()) { sourceFields = ((DirectCollectionMapping)mapping).getSourceKeyFields(); targetFields = ((DirectCollectionMapping)mapping).getReferenceKeyFields(); } deleteStatements.addElement(buildDeleteAllStatementForMapping(selectCallForExist, selectStatementForExist, sourceFields, targetFields)); } } } return deleteStatements; }
/** * Initialize delete all query. This query is used to all relevant rows from the * relation table. */ protected void initializeDeleteAllQuery(AbstractSession session) { if (!getDeleteAllQuery().hasSessionName()) { getDeleteAllQuery().setSessionName(session.getName()); } if (hasCustomDeleteAllQuery()) { return; } Expression expression = null; Expression subExpression; Expression builder = new ExpressionBuilder(); SQLDeleteStatement statement = new SQLDeleteStatement(); // Construct an expression to delete from the relation table. for (int index = 0; index < getSourceRelationKeyFields().size(); index++) { DatabaseField sourceRelationKey = getSourceRelationKeyFields().elementAt(index); DatabaseField sourceKey = getSourceKeyFields().elementAt(index); subExpression = builder.getField(sourceRelationKey).equal(builder.getParameter(sourceKey)); expression = subExpression.and(expression); } // All the entries are deleted in one shot. statement.setWhereClause(expression); statement.setTable(getRelationTable()); getDeleteAllQuery().setSQLStatement(statement); }
/** * INTERNAL: * Add additional fields and check for history. */ protected void postPrepareNestedBatchQuery(ReadQuery batchQuery, ReadAllQuery query) { ReadAllQuery mappingBatchQuery = (ReadAllQuery)batchQuery; mappingBatchQuery.setShouldIncludeData(true); for (Enumeration relationFieldsEnum = getSourceRelationKeyFields().elements(); relationFieldsEnum.hasMoreElements();) { mappingBatchQuery.getAdditionalFields().add(mappingBatchQuery.getExpressionBuilder().getTable(getRelationTable()).getField((DatabaseField)relationFieldsEnum.nextElement())); } if (getHistoryPolicy() != null) { ExpressionBuilder builder = mappingBatchQuery.getExpressionBuilder(); Expression twisted = batchQuery.getSelectionCriteria(); if (query.getSession().getAsOfClause() != null) { builder.asOf(query.getSession().getAsOfClause()); } else if (builder.getAsOfClause() == null) { builder.asOf(AsOfClause.NO_CLAUSE); } twisted = twisted.and(getHistoryPolicy().additionalHistoryExpression(builder)); mappingBatchQuery.setSelectionCriteria(twisted); } }
for (int index = 0; index < getSourceRelationKeyFields().size(); index++) { DatabaseField sourceRelationKey = getSourceRelationKeyFields().elementAt(index); DatabaseField sourceKey = getSourceKeyFields().elementAt(index);
for (int index = 0; index < getSourceRelationKeyFields().size(); index++) { DatabaseField sourceRelationKey = getSourceRelationKeyFields().elementAt(index); DatabaseField sourceKey = getSourceKeyFields().elementAt(index);
Expression builder = new ExpressionBuilder(); List<DatabaseField> sourceRelationKeyFields = getSourceRelationKeyFields(); int size = sourceRelationKeyFields.size(); for (int index = 0; index < size; index++) {
Expression builder = new ExpressionBuilder(); List<DatabaseField> sourceRelationKeyFields = getSourceRelationKeyFields(); int size = sourceRelationKeyFields.size(); for (int index = 0; index < size; index++) {
Expression builder = new ExpressionBuilder(); List<DatabaseField> sourceRelationKeyFields = getSourceRelationKeyFields(); int size = sourceRelationKeyFields.size(); for (int index = 0; index < size; index++) {
mappingClone.setRelationTable(overrideMapping.getRelationTable()); mappingClone.setSourceKeyFields(overrideMapping.getSourceKeyFields()); mappingClone.setSourceRelationKeyFields(overrideMapping.getSourceRelationKeyFields()); mappingClone.setTargetKeyFields(overrideMapping.getTargetKeyFields()); mappingClone.setTargetRelationKeyFields(overrideMapping.getTargetRelationKeyFields());