/** * INTERNAL: * Return all the fields with this mapping. */ protected Vector collectFields() { Vector databaseFields = new Vector(getFieldToTransformers().size()); for (Enumeration stream = getFieldToTransformers().elements(); stream.hasMoreElements();) { databaseFields.addElement(((Object[])stream.nextElement())[0]); } return databaseFields; }
protected Object invokeFieldTransformer(DatabaseField field, Object domainObject, AbstractSession session) { Enumeration transformers = getFieldToTransformers().elements(); while (transformers.hasMoreElements()) { Object[] next = (Object[])transformers.nextElement(); if (field.equals(next[0])) { return invokeFieldTransformer(field, (FieldTransformer)next[1], domainObject, session); } } return null; }
/** * INTERNAL: * Write fields needed for insert into the template for with null values. */ public void writeInsertFieldsIntoRow(AbstractRecord record, AbstractSession session) { if (isReadOnly()) { return; } for (Enumeration entry = getFieldToTransformers().elements(); entry.hasMoreElements();) { DatabaseField field = (DatabaseField)((Object[])entry.nextElement())[0]; record.put(field, null); } } }
/** * INTERNAL: * Return true if read-only is explicitly set to true; * otherwise return whether the transformation has no fields * (no fields = read-only) */ public boolean isReadOnly() { if (super.isReadOnly()) { return true; } else { return getFieldTransformations().isEmpty() && getFieldToTransformers().isEmpty(); } }
/** * INTERNAL * Build a phantom row that contains only the fields * for the mapping, populated with the values generated by * invoking the field methods on the specified object. */ protected AbstractRecord buildPhantomRowFrom(Object domainObject, AbstractSession session) { AbstractRecord row = new DatabaseRecord(this.getFieldToTransformers().size()); for (Enumeration stream = this.getFieldToTransformers().elements(); stream.hasMoreElements();) { Object[] pair = (Object[])stream.nextElement(); DatabaseField field = (DatabaseField)pair[0]; FieldTransformer transformer = (FieldTransformer)pair[1]; Object fieldValue = this.invokeFieldTransformer(field, transformer, domainObject, session); row.put(field, fieldValue); } return row; }
/** * INTERNAL: * The mapping clones itself to create deep copy. */ public Object clone() { AbstractTransformationMapping clone = (AbstractTransformationMapping)super.clone(); clone.setFieldToTransformers(org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance(getFieldToTransformers().size() + 1)); for (Enumeration enumtr = getFieldToTransformers().elements(); enumtr.hasMoreElements();) { Object[] transformation = new Object[2]; Object[] pair = (Object[])enumtr.nextElement(); transformation[0] = pair[0]; transformation[1] = pair[1]; clone.getFieldToTransformers().addElement(transformation); } clone.setIndirectionPolicy((IndirectionPolicy)indirectionPolicy.clone()); return clone; }
/** * INTERNAL: * Compare the attributes belonging to this mapping for the objects. */ public boolean compareObjects(Object firstObject, Object secondObject, AbstractSession databaseSession) { for (Enumeration stream = getFieldToTransformers().elements(); stream.hasMoreElements();) { Object[] objects = (Object[])stream.nextElement(); DatabaseField field = (DatabaseField)objects[0]; FieldTransformer transformer = (FieldTransformer)objects[1]; Object firstFieldValue = invokeFieldTransformer(field, transformer, firstObject, databaseSession); Object secondFieldValue = invokeFieldTransformer(field, transformer, secondObject, databaseSession); if ((firstFieldValue == null) && (secondFieldValue == null)) { continue;// skip this iteration, go to the next one } if ((firstFieldValue == null) || (secondFieldValue == null)) { return false; } if (!firstFieldValue.equals(secondFieldValue)) { return false; } } return true; }
/** * INTERNAL: * Get a value from the object and set that in the respective field of the row. */ public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session) { if (isReadOnly()) { return; } for (Enumeration stream = getFieldToTransformers().elements(); stream.hasMoreElements();) { Object[] next = (Object[])stream.nextElement(); DatabaseField field = (DatabaseField)next[0]; FieldTransformer transformer = (FieldTransformer)next[1]; Object fieldValue = invokeFieldTransformer(field, transformer, object, session); row.put(field, fieldValue); } }
/** * INTERNAL: * Get a value from the object and set that in the respective field of the row. */ public void writeFromObjectIntoRowWithChangeRecord(ChangeRecord changeRecord, AbstractRecord row, AbstractSession session) { if (isReadOnly()) { return; } for (Enumeration stream = getFieldToTransformers().elements(); stream.hasMoreElements();) { Object[] next = (Object[])stream.nextElement(); DatabaseField field = (DatabaseField)next[0]; Object fieldValue = ((TransformationMappingChangeRecord)changeRecord).getRecord().get(field); row.put(field, fieldValue); } }
/** * INTERNAL: * The mapping clones itself to create deep copy. */ @Override public Object clone() { AbstractTransformationMapping clone = (AbstractTransformationMapping)super.clone(); clone.setFieldToTransformers(new ArrayList(this.fieldToTransformers.size())); for (Object[] pair : this.fieldToTransformers) { Object[] transformation = new Object[2]; transformation[0] = pair[0]; transformation[1] = pair[1]; clone.getFieldToTransformers().add(transformation); } clone.setIndirectionPolicy((IndirectionPolicy)indirectionPolicy.clone()); return clone; }
/** * INTERNAL: * The mapping clones itself to create deep copy. */ @Override public Object clone() { AbstractTransformationMapping clone = (AbstractTransformationMapping)super.clone(); clone.setFieldToTransformers(new ArrayList(this.fieldToTransformers.size())); for (Object[] pair : this.fieldToTransformers) { Object[] transformation = new Object[2]; transformation[0] = pair[0]; transformation[1] = pair[1]; clone.getFieldToTransformers().add(transformation); } clone.setIndirectionPolicy((IndirectionPolicy)indirectionPolicy.clone()); return clone; }
for (Enumeration stream = getFieldToTransformers().elements(); stream.hasMoreElements();) { Object[] pair = (Object[])stream.nextElement(); pair[0] = getDescriptor().buildField(((DatabaseField)pair[0])); fieldToTransformer[1] = transformer; getFieldToTransformers().addElement(fieldToTransformer);
for (Enumeration stream = getFieldToTransformers().elements(); stream.hasMoreElements();) { Object[] pair = (Object[])stream.nextElement();
transformationMapping = (AbstractTransformationMapping)xmlMapping; addTransformationMapping(transformationMapping); fieldTransformerIterator = transformationMapping.getFieldToTransformers().iterator(); while (fieldTransformerIterator.hasNext()) { fieldTransformerNodeValue = new FieldTransformerNodeValue();