public boolean useBackedSCOWrapperForMember(AbstractMemberMetaData mmd, ExecutionContext ec) { // Use backed SCO wrapper on relation field (to support legacy), and use simple SCO wrapper on others return (mmd.getRelationType(ec.getClassLoaderResolver()) == Relation.NONE ? false : true); }
public boolean isAssociation() { int relationType = mmd.getRelationType(owner.getModel().getClassLoaderResolver()); return relationType != Relation.NONE; }
/** * Method to set the owner for this backing store. * Sets the metadata of the owner field/property, as well as whether nulls are allowed, and the relation type. * @param mmd MetaData for the member owning this backing store. */ protected void setOwner(AbstractMemberMetaData mmd) { this.ownerMemberMetaData = mmd; if (Boolean.TRUE.equals(ownerMemberMetaData.getContainer().allowNulls())) { // User has requested allowing nulls in this field/property allowNulls = true; } this.relationType = ownerMemberMetaData.getRelationType(clr); }
public javax.persistence.metamodel.Attribute.PersistentAttributeType getPersistentAttributeType() { int relationType = mmd.getRelationType(owner.getModel().getClassLoaderResolver()); switch (relationType) { case Relation.MANY_TO_ONE_BI : return PersistentAttributeType.MANY_TO_ONE; case Relation.ONE_TO_ONE_BI : case Relation.ONE_TO_ONE_UNI : return PersistentAttributeType.ONE_TO_ONE; case Relation.ONE_TO_MANY_BI : case Relation.ONE_TO_MANY_UNI : return PersistentAttributeType.ONE_TO_MANY; case Relation.MANY_TO_MANY_BI : return PersistentAttributeType.MANY_TO_MANY; default : if (Collection.class.isAssignableFrom(mmd.getType())) { return PersistentAttributeType.ELEMENT_COLLECTION; } // TODO Detect embedded return PersistentAttributeType.BASIC; } }
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)); }
if (ammd.getEmbeddedMetaData() == null && ammd.getRelationType(clr) != RelationType.NONE)
if (m.getNumberOfDatastoreMappings() == 0) { int relationType = fmd.getRelationType(clr); if (relationType == Relation.ONE_TO_ONE_BI) { if (fmd.getMappedBy() != null) {
RelationType relationType = mmd.getRelationType(clr); if (relationType == RelationType.ONE_TO_ONE_UNI || relationType == RelationType.ONE_TO_ONE_BI) " with relation type " + mmd.getRelationType(clr) + " is not supported for this datastore");
protected static void selectAllFieldsOfEmbeddedObject(AbstractMemberMetaData mmd, BasicDBObject fieldsSelection, ExecutionContext ec, ClassLoaderResolver clr) { EmbeddedMetaData embmd = mmd.getEmbeddedMetaData(); AbstractMemberMetaData[] embmmds = embmd.getMemberMetaData(); for (int i=0;i<embmmds.length;i++) { RelationType relationType = embmmds[i].getRelationType(clr); if (embmmds[i].isEmbedded() && RelationType.isRelationSingleValued(relationType)) { selectAllFieldsOfEmbeddedObject(embmmds[i], fieldsSelection, ec, clr); } else { fieldsSelection.append(MongoDBUtils.getFieldName(mmd, i), 1); } } }
RelationType relType = mmd.getRelationType(clr); if (RelationType.isRelationSingleValued(relType)) " with relation type " + mmd.getRelationType(clr) + " is not supported for this datastore");
RelationType relationType = mmd.getRelationType(clr); EmbeddedMetaData embmd = mmds.get(0).getEmbeddedMetaData(); if (mmds.size() == 1 && embmd != null && embmd.getOwnerMember() != null && embmd.getOwnerMember().equals(mmd.getName()))
public WrappedMemberMetaData(AbstractMemberMetaData fmd, Class type, ClassLoaderResolver clr) { super(fmd.getParent(), fmd); this.singleCollectionMetadata = fmd; this.type = type; // Use element definition in preference to field since it may be copied to the element in metadata processing this.columnMetaData = (fmd.getElementMetaData() != null) ? fmd.getElementMetaData().getColumnMetaData() : fmd.getColumnMetaData(); this.relationType = fmd.getRelationType(clr); this.relatedMemberMetaData = fmd.getRelatedMemberMetaData(clr); // Copy the Element embedded definition to the field embedded metaData because EmbeddedPCMapping reads it from there. (Maybe it should use EmbeddedElementPCMapping?) ElementMetaData fmdElementMetaData = fmd.getElementMetaData(); if (fmdElementMetaData != null && fmdElementMetaData.getEmbeddedMetaData() != null) { setEmbeddedMetaData(fmdElementMetaData.getEmbeddedMetaData()); } }
@Override public Object fetch() { RelationType relType = mmd.getRelationType(clr); if (relType == RelationType.ONE_TO_ONE_UNI || relType == RelationType.ONE_TO_ONE_BI) { Set<String> objectClasses = LDAPUtils.getObjectClassesForClass(effectiveClassMetaData); if (objectClasses.isEmpty()) { // embedded into the current entry return fetchEmbedded(); } // embedded as child-entry return fetchFromChild(); } else if (relType == RelationType.ONE_TO_MANY_UNI || relType == RelationType.ONE_TO_MANY_BI) { if (mmd.hasCollection()) { Class instanceType = mmd.getType(); instanceType = org.datanucleus.store.types.SCOUtils.getContainerInstanceType(instanceType, mmd.getOrderMetaData() != null); Collection<Object> coll = fetchFromChildren(instanceType); return SCOUtils.wrapSCOField(op, fieldNumber, coll, true); } } // TODO Localise this throw new NucleusException("Cant obtain value for field " + mmd.getFullFieldName() + " since type=" + mmd.getTypeName() + " is not supported for this datastore"); }
RelationType relationType = mmd.getRelationType(clr); EmbeddedMetaData embmd = mmds.get(0).getEmbeddedMetaData(); if (mmds.size() == 1 && embmd != null && embmd.getOwnerMember() != null && embmd.getOwnerMember().equals(mmd.getName()))
RelationType relationType = mmd.getRelationType(clr); EmbeddedMetaData embmd = mmds.get(0).getEmbeddedMetaData(); if (mmds.size() == 1 && embmd != null && embmd.getOwnerMember() != null && embmd.getOwnerMember().equals(mmd.getName()))
public Object fetchObjectField(int fieldNumber) { ClassLoaderResolver clr = ec.getClassLoaderResolver(); AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber); RelationType relationType = mmd.getRelationType(clr); // Special cases if (relationType != RelationType.NONE && MetaDataUtils.getInstance().isMemberEmbedded(ec.getMetaDataManager(), clr, mmd, relationType, null)) { // Embedded field if (RelationType.isRelationSingleValued(relationType)) { // TODO Null detection List<AbstractMemberMetaData> embMmds = new ArrayList<AbstractMemberMetaData>(); embMmds.add(mmd); AbstractClassMetaData embCmd = ec.getMetaDataManager().getMetaDataForClass(mmd.getType(), clr); ObjectProvider embOP = ec.getNucleusContext().getObjectProviderFactory().newForEmbedded(ec, embCmd, op, fieldNumber); FieldManager fetchEmbFM = new FetchEmbeddedFieldManager(embOP, sheet, rowNumber, embMmds, table); embOP.replaceFields(embCmd.getAllMemberPositions(), fetchEmbFM); return embOP.getObject(); } else if (RelationType.isRelationMultiValued(relationType)) { throw new NucleusUserException("Dont support embedded multi-valued field at " + mmd.getFullFieldName() + " with Excel"); } } return fetchObjectFieldInternal(fieldNumber, mmd, clr, relationType); }
@Override public Object fetchObjectField(int fieldNumber) { ClassLoaderResolver clr = ec.getClassLoaderResolver(); AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber); RelationType relationType = mmd.getRelationType(clr); // Special cases if (relationType != RelationType.NONE && MetaDataUtils.getInstance().isMemberEmbedded(ec.getMetaDataManager(), clr, mmd, relationType, null)) { // Embedded field if (RelationType.isRelationSingleValued(relationType)) { // TODO Null detection List<AbstractMemberMetaData> embMmds = new ArrayList<AbstractMemberMetaData>(); embMmds.add(mmd); AbstractClassMetaData embCmd = ec.getMetaDataManager().getMetaDataForClass(mmd.getType(), clr); ObjectProvider embOP = ec.getNucleusContext().getObjectProviderFactory().newForEmbedded(ec, embCmd, op, fieldNumber); FieldManager fetchEmbFM = new FetchEmbeddedFieldManager(embOP, row, embMmds, table); embOP.replaceFields(embCmd.getAllMemberPositions(), fetchEmbFM); return embOP.getObject(); } else if (RelationType.isRelationMultiValued(relationType)) { throw new NucleusUserException("Dont support embedded multi-valued field at " + mmd.getFullFieldName() + " with ODF"); } } return fetchObjectFieldInternal(fieldNumber, mmd, clr, relationType); }
public Object fetchObjectField(int fieldNumber) { AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber); if (mmd.getPersistenceModifier() != FieldPersistenceModifier.PERSISTENT) { return op.provideField(fieldNumber); } ClassLoaderResolver clr = ec.getClassLoaderResolver(); RelationType relationType = mmd.getRelationType(clr); if (relationType != RelationType.NONE && MetaDataUtils.getInstance().isMemberEmbedded(ec.getMetaDataManager(), clr, mmd, relationType, null)) { // Embedded field try { return fetchObjectFieldEmbedded(fieldNumber, mmd, clr, relationType); } catch (JSONException e) { throw new NucleusException(e.getMessage(), e); } } try { return fetchObjectFieldInternal(fieldNumber, mmd, clr, relationType); } catch (JSONException e) { throw new NucleusException(e.getMessage(), e); } }
RelationType relationType = mmd.getRelationType(clr); if (relationType != RelationType.NONE)
pc = mmd.isSingleCollection() ? SCOUtils.singleCollectionValue(getStoreManager().getNucleusContext().getTypeManager(), pc) : pc; ClassLoaderResolver clr = op.getExecutionContext().getClassLoaderResolver(); RelationType relationType = mmd.getRelationType(clr); if (pc == null)