protected boolean isPK(int fieldNumber) { int[] pkPositions = cmd.getPKMemberPositions(); return pkPositions != null && pkPositions[0] == fieldNumber; } }
protected boolean isPK(int fieldNumber) { if (fieldManagerStateStack.getFirst().embmd != null) { // ignore the pk annotations if this object is embedded return false; } // Assumes that if we have a pk we only have a single field pk int[] pkPositions = getClassMetaData().getPKMemberPositions(); return pkPositions != null && pkPositions[0] == fieldNumber; }
public void fetchFields(ObjectProvider op) { op.replaceFields(cmd.getPKMemberPositions(), fm); } }, null, ignoreCache, false);
public void fetchNonLoadedFields(ObjectProvider op) { op.replaceNonLoadedFields(cmd.getPKMemberPositions(), fm); } public void fetchFields(ObjectProvider op)
public Set<SingularAttribute<? super X, ?>> getIdClassAttributes() { Set<SingularAttribute<? super X, ?>> pks = new HashSet<SingularAttribute<? super X,?>>(); int[] pkPositions = cmd.getPKMemberPositions(); for (int i=0;i<pkPositions.length;i++) { AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtAbsolutePosition(pkPositions[i]); SingularAttribute pkAttr = (SingularAttribute) attributes.get(mmd.getName()); pks.add(pkAttr); } return pks; }
/** * Retrieves the primary key Force.com API field name for the * given class metadata. * * @param acmd JPA class metadata * @return a Force.com API primary key field name */ public String getPKFieldName(AbstractClassMetaData acmd) { ColumnImpl col = getColumnAt(acmd, acmd.getPKMemberPositions()[0]); return col != null ? col.getFieldName() : "id"; }
/** * Retrieves the primary key Force.com API field name for the * given class metadata. * * @param acmd JPA class metadata * @return a Force.com API primary key field name */ public String getPKFieldName(AbstractClassMetaData acmd) { ColumnImpl col = getColumnAt(acmd, acmd.getPKMemberPositions()[0]); return col != null ? col.getFieldName() : "id"; }
public void fetchFields(ObjectProvider op) { op.replaceFields(acmd.getPKMemberPositions(), new FetchFieldManager(op, entity)); } public void fetchNonLoadedFields(ObjectProvider op) {
public void fetchNonLoadedFields(ObjectProvider op) { op.replaceNonLoadedFields(acmd.getPKMemberPositions(), new FetchFieldManager(op, entity)); } public FetchPlan getFetchPlanForLoading() {
public void fetchFields(ObjectProvider op) { op.replaceFields(acmd.getPKMemberPositions(), new FetchFieldManager(op, entity)); } public void fetchNonLoadedFields(ObjectProvider op) {}
public <Y> SingularAttribute<? super X, Y> getId(Class<Y> cls) { if (cmd.getNoOfPrimaryKeyMembers() > 1) { throw new IllegalArgumentException("More than 1 PK field, so use getIdClassAttributes()"); } int pkPosition = cmd.getPKMemberPositions()[0]; AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtAbsolutePosition(pkPosition); if (cls.isAssignableFrom(mmd.getType())) { return (SingularAttribute) attributes.get(mmd.getName()); } else { throw new IllegalArgumentException("PK member is not of specified type (" + cls.getName() + "). Should be " + mmd.getTypeName()); } }
/** * Convenience method for getting the id value from an entity. * * @param entity the entity containing the id * @param acmd the class metadata (for discovering the id field) * @return the id value of the object */ public static Object getIdFromObject(PersistenceCapable entity, AbstractClassMetaData acmd) { Object ret = null; AbstractMemberMetaData ammd = acmd.getMetaDataForManagedMemberAtAbsolutePosition(acmd.getPKMemberPositions()[0]); try { ret = PersistenceUtils.getMemberValue(acmd, acmd.getPKMemberPositions()[0], entity); if (ret instanceof String) { ret = new StringIdentity(ammd.getType(), (String) ret); } return ret; } catch (Exception e) { throw new NucleusDataStoreException(e.getMessage(), e); } }
@Override public void fetchFields(ObjectProvider sm) { try { sm.replaceFields(acmd.getPKMemberPositions(), new ForceFetchFieldManager(sm, storeManager, mconn, sobject, query)); sm.replaceFields(fieldsToLoad, new ForceFetchFieldManager(sm, storeManager, mconn, sobject, query)); } catch (Exception e) { throw new NucleusException(e.getMessage(), e); } }
@Override public void fetchFields(ObjectProvider sm) { try { sm.replaceFields(acmd.getPKMemberPositions(), new ForceFetchFieldManager(sm, storeManager, mconn, sobject, query)); sm.replaceFields(fieldsToLoad, new ForceFetchFieldManager(sm, storeManager, mconn, sobject, query)); } catch (Exception e) { throw new NucleusException(e.getMessage(), e); } }
public static boolean hasEncodedPKField(AbstractClassMetaData acmd) { if (acmd.getIdentityType() == IdentityType.DATASTORE) { IdentityMetaData idmd = acmd.getIdentityMetaData(); return idmd.hasExtension(DatastoreManager.ENCODED_PK); } else { int pkFieldNumber = acmd.getPKMemberPositions()[0]; // TODO Cater for composite PKs return isEncodedPKField(acmd, pkFieldNumber); } }
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)); }
/** * Gets the relative distinguished name for object. * @param op ObjectProvider * @return the RDN for object */ private static Rdn getRdnForObject(StoreManager storeMgr, ObjectProvider op) throws InvalidNameException { AbstractClassMetaData cmd = op.getClassMetaData(); // TODO Cater for composite PK int fieldNumber = cmd.getPKMemberPositions()[0]; // Object value = op.provideField(fieldNumber); // AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtAbsolutePosition(fieldNumber); Attributes rdnAttributes = new BasicAttributes(); StoreFieldManager storeFM = new StoreFieldManager(storeMgr, op, rdnAttributes, true); op.provideFields(new int[]{fieldNumber}, storeFM); // AbstractMappingStrategy ms = MappingStrategyHelper.findMappingStrategy(storeMgr, op, mmd, rdnAttributes); // ms.insert(value); return new Rdn(rdnAttributes); }
/** * @see DatastoreIdentityKeyTranslator for an explanation of how this is useful. * * Supported translations: * <ul> * <li>When the pk field is a Long you can give us a Long, an encoded key string, or a Key.</li> * <li>When the pk field is an unencoded String you can give us an unencoded String, an encoded String, or a Key.</li> * <li>When the pk field is an encoded String you can give us an unencoded String, an encoded String, or a Key.</li> * </ul> */ public static Object idToInternalKey(ExecutionContext ec, Class<?> cls, Object val, boolean allowSubclasses) { AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(cls, ec.getClassLoaderResolver()); String kind = determineKind(cmd, ec); AbstractMemberMetaData pkMemberMetaData = cmd.getMetaDataForManagedMemberAtAbsolutePosition(cmd.getPKMemberPositions()[0]); return idToInternalKey(kind, pkMemberMetaData, cls, val, ec, allowSubclasses); }
/** * Method to add fields to match the PK fields of the persistable class * @param cw The ClassWriter to use */ protected void addFields(ClassWriter cw) { int[] pkPositions = cmd.getPKMemberPositions(); for (int i=0;i<pkPositions.length;i++) { AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtPosition(pkPositions[i]); String fieldTypeName = getTypeNameForField(mmd); if (DataNucleusEnhancer.LOGGER.isDebugEnabled()) { DataNucleusEnhancer.LOGGER.debug(LOCALISER.msg("Enhancer.AddField", fieldTypeName + " " + pkClassName + " " + mmd.getName())); } FieldVisitor fv = cw.visitField(Opcodes.ACC_PUBLIC, mmd.getName(), ASMUtils.getTypeDescriptorForType(fieldTypeName), null, null); fv.visitEnd(); } }
/** * Locates this object in the datastore. * * @param op The ObjectProvider for the object to be found */ @Override public void locateObject(ObjectProvider op) { ForceManagedConnection mconn = (ForceManagedConnection) storeManager.getConnection(op.getExecutionContext()); try { AbstractClassMetaData acmd = op.getClassMetaData(); TableImpl table = storeManager.getTable(acmd); QueryResult qr = ((PartnerConnection) mconn.getConnection()) .query("select count() from " + table.getTableName().getForceApiName() + " where id='" + op.provideField(op.getClassMetaData().getPKMemberPositions()[0]) + "'"); if (qr.getSize() == 0) { throw new NucleusObjectNotFoundException(); } } catch (ConnectionException x) { throw new NucleusDataStoreException(x.getMessage(), x); } finally { mconn.release(); } }