protected int getAbsoluteFieldNumber() { if (absFieldNumber < 0 && mmd != null) { absFieldNumber = mmd.getAbsoluteFieldNumber(); } return absFieldNumber; } public void setAbsFieldNumber(int num)
@Override public int getAbsoluteFieldNumber() { return singleCollectionMetadata.getAbsoluteFieldNumber(); }
/** * Method to extract the value of the persistable from a ResultSet. * @param ec The ExecutionContext * @param resultSet The ResultSet * @param exprIndex The parameter positions in the result set to use. * @return The (deserialised) persistable object */ public Object getObject(ExecutionContext ec, ResultSet resultSet, int[] exprIndex) { return getObject(ec, resultSet, exprIndex, null, mmd.getAbsoluteFieldNumber()); }
protected void addFieldMapping(JavaTypeMapping fieldMapping) { AbstractMemberMetaData fmd = fieldMapping.getMemberMetaData(); fieldMappingsMap.put(fmd, fieldMapping); // Update highest field number if this is higher int absoluteFieldNumber = fmd.getAbsoluteFieldNumber(); if (absoluteFieldNumber > highestFieldNumber) { highestFieldNumber = absoluteFieldNumber; } }
/** * Method to populate parameter positions in a PreparedStatement with this object * @param ec The ExecutionContext * @param ps The Prepared Statement * @param exprIndex The parameter positions to populate * @param value The value of the PC to use in populating the parameter positions */ public void setObject(ExecutionContext ec, PreparedStatement ps, int[] exprIndex, Object value) { setObject(ec, ps, exprIndex, value, null, mmd.getAbsoluteFieldNumber()); }
/** * Accessor for the mapping for the specified field/property. * @param mmd Metadata for the field/property * @return The Mapping for the field. */ public JavaTypeMapping getMemberMapping(AbstractMemberMetaData mmd) { assertIsInitialized(); JavaTypeMapping m = fieldMappings[mmd.getAbsoluteFieldNumber()]; if (m == null) { throw new NoSuchPersistentFieldException(cmd.getFullClassName(), mmd.getAbsoluteFieldNumber()); } return m; }
public void postFetch(ObjectProvider op) { Object value = deserialiseFieldValue(op); op.replaceField(mmd.getAbsoluteFieldNumber(), value); }
/** * Method to extract the value of the persistable from a ResultSet. * @param ec execution context * @param resultSet The ResultSet * @param exprIndex The parameter positions in the result set to use. * @return The (deserialised) persistable object */ public Object getObject(ExecutionContext ec, ResultSet resultSet, int[] exprIndex) { if (mmd != null) { return getObject(ec, resultSet, exprIndex, null, mmd.getAbsoluteFieldNumber()); } return super.getObject(ec, resultSet, exprIndex); }
/** * This seems to return the field number in the element of the relation when it is a bidirectional relation. * @param elementOP ObjectProvider of the element * @return The field number in the element for this relation */ protected int getFieldNumberInElementForBidirectional(ObjectProvider elementOP) { if (Relation.isBidirectional(relationType)) { AbstractMemberMetaData[] relMmds = ownerMemberMetaData.getRelatedMemberMetaData(clr); if (relMmds != null) { return relMmds[0].getAbsoluteFieldNumber(); } } return -1; } }
private void addFetchGroupMemberPositions(AbstractClassMetaData acmd, Set<Integer> memberPositions, FetchGroupMetaData fm) { for (AbstractMemberMetaData ammd : fm.getMemberMetaData()) { memberPositions.add(ammd.getAbsoluteFieldNumber()); } for (FetchGroupMetaData f : fm.getFetchGroupMetaData()) { addFetchGroupMemberPositions(acmd, memberPositions, f); } }
private void addFetchGroupMemberPositions(AbstractClassMetaData acmd, Set<Integer> memberPositions, FetchGroupMetaData fm) { for (AbstractMemberMetaData ammd : fm.getMemberMetaData()) { memberPositions.add(ammd.getAbsoluteFieldNumber()); } for (FetchGroupMetaData f : fm.getFetchGroupMetaData()) { addFetchGroupMemberPositions(acmd, memberPositions, f); } }
/** * Method to populate parameter positions in a PreparedStatement with this object * @param ec execution context * @param ps The Prepared Statement * @param exprIndex The parameter positions to populate * @param value The value of the PC to use in populating the parameter positions */ public void setObject(ExecutionContext ec, PreparedStatement ps, int[] exprIndex, Object value) { if (mmd != null) { setObject(ec, ps, exprIndex, value, null, mmd.getAbsoluteFieldNumber()); } else { super.setObject(ec, ps, exprIndex, value); } }
/** * Utility to add the mapping for a field/property to the managed list. * @param fieldMapping The mapping for the field/property */ protected void addMemberMapping(JavaTypeMapping fieldMapping) { AbstractMemberMetaData mmd = fieldMapping.getMemberMetaData(); logMapping(mmd.getFullFieldName(), fieldMapping); memberMappingsMap.put(mmd, fieldMapping); // Update highest field number if this is higher int absoluteFieldNumber = mmd.getAbsoluteFieldNumber(); if (absoluteFieldNumber > highestMemberNumber) { highestMemberNumber = absoluteFieldNumber; } }
protected EmbeddedMappingStrategy(StoreManager storeMgr, ObjectProvider op, AbstractMemberMetaData mmd, Attributes attributes) { super(op, mmd, attributes); this.fieldNumber = mmd.getAbsoluteFieldNumber(); this.storeMgr = storeMgr; this.clr = ec.getClassLoaderResolver(); this.effectiveClassMetaData = LDAPUtils.getEffectiveClassMetaData(mmd, ec.getMetaDataManager()); }
public void fetchFields(ObjectProvider op) { op.replaceFields(cmd.getPKMemberPositions(), new FetchFieldManager(storeMgr, op, attrs)); List<AbstractMemberMetaData> allMemberMetaData = getAllMemberMetaData(cmd); List<AbstractMemberMetaData> basicMemberMetaData = new ArrayList<AbstractMemberMetaData>(); for (AbstractMemberMetaData mmd : allMemberMetaData) { mmd.getAbsoluteFieldNumber(); if (mmd.getRelationType(clr) == RelationType.NONE && !mmd.isPersistentInterface(clr) && !Collection.class.isAssignableFrom(mmd.getType()) && !Map.class.isAssignableFrom(mmd.getType()) && !mmd.getType().isArray()) { basicMemberMetaData.add(mmd); } } int[] basicMemberPosition = new int[basicMemberMetaData.size()]; for (int i = 0; i < basicMemberMetaData.size(); i++) { basicMemberPosition[i] = basicMemberMetaData.get(i).getAbsoluteFieldNumber(); } op.replaceFields(basicMemberPosition, new FetchFieldManager(storeMgr, op, attrs)); }
protected RelationByAttributeStrategy(StoreManager storeMgr, ObjectProvider sm, AbstractMemberMetaData mmd, Attributes attributes) { super(sm, mmd, attributes); this.fieldNumber = mmd.getAbsoluteFieldNumber(); this.storeMgr = storeMgr; this.clr = ec.getClassLoaderResolver(); this.effectiveClassMetaData = LDAPUtils.getEffectiveClassMetaData(mmd, ec.getMetaDataManager()); this.mappingMetaData = new RelationByAttributeMetaData(mmd, ec.getMetaDataManager()); }
protected RelationByHierarchyStrategy(StoreManager storeMgr, ObjectProvider op, AbstractMemberMetaData mmd, Attributes attributes) { super(op, mmd, attributes); this.fieldNumber = mmd.getAbsoluteFieldNumber(); this.storeMgr = storeMgr; this.clr = ec.getClassLoaderResolver(); this.effectiveClassMetaData = LDAPUtils.getEffectiveClassMetaData(mmd, ec.getMetaDataManager()); this.isFieldHierarchicalMapped = isChildOfHierarchicalMapping(mmd, ec.getMetaDataManager()); this.isFieldParentOfHierarchicalMapping = isParentOfHierarchicalMapping(mmd, ec.getMetaDataManager()); }
/** * Method to return the ObjectProvider for an embedded PC object (element, key, value). * It creates one if the element is not currently managed. * @param op ObjectProvider of the owner * @param obj The embedded PC object * @param ownerMmd The meta data for the owner field * @param pcType Object type for the embedded object (see ObjectProvider EMBEDDED_PC etc) * @return The ObjectProvider */ public ObjectProvider getObjectProviderForEmbeddedPCObject(ObjectProvider op, Object obj, AbstractMemberMetaData ownerMmd, short pcType) { ExecutionContext ec = op.getExecutionContext(); ObjectProvider objOP = ec.findObjectProvider(obj); if (objOP == null) { objOP = ec.getNucleusContext().getObjectProviderFactory().newForEmbedded(ec, obj, false, op, ownerMmd.getAbsoluteFieldNumber()); } objOP.setPcObjectType(pcType); return objOP; }
/** * Accessor for the ObjectProvider of the embedded PC object when provided with the owner object. * @param ownerOP ObjectProvider of the owner * @return ObjectProvider of the embedded object */ private ObjectProvider getObjectProviderForEmbeddedObject(ObjectProvider ownerOP) { AbstractMemberMetaData theMmd = getRealMemberMetaData(); Object value = ownerOP.provideField(theMmd.getAbsoluteFieldNumber()); // Owner (non-embedded) PC TypeManager typeManager = ownerOP.getExecutionContext().getTypeManager(); value = mmd.isSingleCollection() ? typeManager.getContainerAdapter(value).iterator().next() : value; if (value == null) { return null; } ExecutionContext ec = ownerOP.getExecutionContext(); ObjectProvider thisOP = ec.findObjectProvider(value); if (thisOP == null) { // Assign a ObjectProvider to manage our embedded object thisOP = ec.getNucleusContext().getObjectProviderFactory().newForEmbedded(ec, value, false, ownerOP, theMmd.getAbsoluteFieldNumber()); thisOP.setPcObjectType(objectType); } return thisOP; } }
protected RelationByDnStrategy(StoreManager storeMgr, ObjectProvider sm, AbstractMemberMetaData mmd, Attributes attributes) { super(sm, mmd, attributes); this.fieldNumber = mmd.getAbsoluteFieldNumber(); this.storeMgr = storeMgr; this.clr = ec.getClassLoaderResolver(); this.effectiveClassMetaData = LDAPUtils.getEffectiveClassMetaData(mmd, ec.getMetaDataManager()); this.mappingMetaData = new RelationByDnMetaData(mmd, ec.getMetaDataManager()); if (mappingMetaData.getOwnerAttributeName() == null) { // Sanity check on metadata throw new NucleusUserException("Member " + mmd.getFullFieldName() + " stores multiple values and has owner LDAP attribute as NULL. The metadata is incorrect and needs to set this."); } }