public Object fetchObjectField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); Object value = sfv.fetchObjectField(fieldNumber); return value; }
public boolean fetchBooleanField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchBooleanField(fieldNumber); }
public double fetchDoubleField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchDoubleField(fieldNumber); }
public long fetchLongField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchLongField(fieldNumber); }
public short fetchShortField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchShortField(fieldNumber); }
public String fetchStringField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchStringField(fieldNumber); } }
public byte fetchByteField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchByteField(fieldNumber); }
public int fetchIntField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchIntField(fieldNumber); }
public char fetchCharField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchCharField(fieldNumber); }
public float fetchFloatField(int fieldNumber) { SingleValueFieldManager sfv = new SingleValueFieldManager(); op.provideFields(new int[]{fieldNumber}, sfv); return sfv.fetchFloatField(fieldNumber); }
/** * Check if we need to update the schema before performing an insert/update. * This is typically of use where the user has an interface field and some new implementation * is trying to be persisted to that field, so we need to update the schema. * @param sm ObjectProvider for the object * @param fieldNumbers The fields to check for required schema updates */ private void checkForSchemaUpdatesForFieldsOfObject(ObjectProvider sm, int[] fieldNumbers) { if (fieldNumbers == null || fieldNumbers.length == 0) { // Nothing to do for a class with no fields/attributes return; } if (storeMgr.getBooleanObjectProperty(RDBMSPropertyNames.PROPERTY_RDBMS_DYNAMIC_SCHEMA_UPDATES).booleanValue()) { DynamicSchemaFieldManager dynamicSchemaFM = new DynamicSchemaFieldManager((RDBMSStoreManager)storeMgr, sm); sm.provideFields(fieldNumbers, dynamicSchemaFM); if (dynamicSchemaFM.hasPerformedSchemaUpdates()) { requestsByID.clear(); } } } }
/** * 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); }
/** * Gets the attribute value of an specific attribute name from the ObjectProvider. * @param storeMgr Store Manager * @param op ObjectProvider * @param attributeName the attribute name * @return the attribute value */ public static Object getAttributeValue(StoreManager storeMgr, ObjectProvider op, String attributeName) { try { // get field value of the PC AbstractMemberMetaData pcMmd = LDAPUtils.getMemberMetadataForAttributeName(op.getClassMetaData(), attributeName); if (pcMmd == null) { throw new NucleusUserException("Tried to find LDAP attribute " + attributeName + " in class " + op.getClassMetaData().getFullClassName() + " but not found. Metadata wrong?"); } // get LDAP value Attributes pcAttributes = new BasicAttributes(); StoreFieldManager storeFM = new StoreFieldManager(storeMgr, op, pcAttributes, true); op.provideFields(new int[]{pcMmd.getAbsoluteFieldNumber()}, storeFM); Attribute pcAttribute = pcAttributes.get(attributeName); return pcAttribute.get(); } catch (NamingException e) { throw new NucleusDataStoreException(e.getMessage(), e); } }
/** * Utility method to process the passed persistable object. * We know that this object has no ObjectProvider when it comes in here. * @param fieldNumber Absolute field number * @param pc The persistable object */ protected void processPersistable(int fieldNumber, Object pc) { ExecutionContext ec = op.getExecutionContext(); ObjectProvider theSM = null; // No ObjectProvider but object returned to us by NeoDatis so we know it is persistent // Connect a ObjectProvider in P_CLEAN state with all fields loaded AbstractClassMetaData acmd = ec.getMetaDataManager().getMetaDataForClass(pc.getClass(), ec.getClassLoaderResolver()); Object id = NeoDatisUtils.getIdentityForObject(pc, acmd, ec, odb); theSM = ec.getNucleusContext().getObjectProviderFactory().newForPersistentClean(ec, id, pc); // Recurse to all fields of this object since just assigned its ObjectProvider theSM.provideFields(theSM.getClassMetaData().getAllMemberPositions(), new AssignObjectProviderFieldManager(theSM, odb)); }
public void insertObject(ObjectProvider op) { // Check if read-only so update not permitted assertReadOnlyForUpdateOfObject(op); AbstractClassMetaData cmd = op.getClassMetaData(); if (!storeMgr.managesClass(cmd.getFullClassName())) { // Make sure schema exists, using this connection storeMgr.manageClasses(op.getExecutionContext().getClassLoaderResolver(), new String[] {cmd.getFullClassName()}); } Table table = storeMgr.getStoreDataForClass(cmd.getFullClassName()).getTable(); Map<String,String> options = new HashMap<String,String>(); options.put(ConnectionFactoryImpl.STORE_JSON_URL, "/"); ManagedConnection mconn = storeMgr.getConnectionManager().getConnection(op.getExecutionContext(), options); URLConnection conn = (URLConnection) mconn.getConnection(); createBucket(conn, getHeaderForBucket()); options.put(ConnectionFactoryImpl.STORE_JSON_URL, getURLPath(op)); options.put("Content-Type", "application/json"); mconn = storeMgr.getConnectionManager().getConnection(op.getExecutionContext(), options); conn = (URLConnection) mconn.getConnection(); JSONObject jsonobj = new JSONObject(); op.provideFields(op.getClassMetaData().getAllMemberPositions(), new StoreFieldManager(op, jsonobj, true, table)); write("PUT", conn.getURL().getPath(), conn, jsonobj.toString(), getHeaders("PUT",options)); }
/** * Get the value of a managed field/property in the provided object. * @param ec execution context * @param mmd metadata for the field/property * @param object the pc object * @return The field value */ public static Object getValueForMemberOfObject(ExecutionContext ec, AbstractMemberMetaData mmd, Object object) { if (ec == null) { // Transient or detached maybe return ClassUtils.getValueOfFieldByReflection(object, mmd.getName()); // TODO What if this is a property? } ObjectProvider sm = ec.findObjectProvider(object); if (!mmd.isPrimaryKey()) { // Make sure the field is loaded sm.isLoaded(mmd.getAbsoluteFieldNumber()); } FieldManager fm = new SingleValueFieldManager(); sm.provideFields(new int[] {mmd.getAbsoluteFieldNumber()}, fm); return fm.fetchObjectField(mmd.getAbsoluteFieldNumber()); }
sm.provideFields(cmd.getAllMemberPositions(), new AssignObjectProviderFieldManager(sm, odb));
protected String getURLPath(ObjectProvider op) { AbstractClassMetaData cmd = op.getClassMetaData(); Table table = storeMgr.getStoreDataForClass(cmd.getFullClassName()).getTable(); String url = getURLPath(cmd); if (cmd.getIdentityType() == IdentityType.DATASTORE) { url += IdentityUtils.getTargetKeyForDatastoreIdentity(op.getInternalObjectId()); } else if (cmd.getIdentityType() == IdentityType.APPLICATION) { // Create JSON object with PK fields set and get the object JSONObject jsonobj = new JSONObject(); op.provideFields(cmd.getPKMemberPositions(), new StoreFieldManager(op, jsonobj, true, table)); try { // Append the PK to the URL AbstractMemberMetaData mmd = cmd.getMetaDataForManagedMemberAtAbsolutePosition(cmd.getPKMemberPositions()[0]); String name = table.getMemberColumnMappingForMember(mmd).getColumn(0).getName(); url += jsonobj.get(name).toString(); // TODO Cater for multiple PK fields } catch (JSONException e) { throw new NucleusException(e.getMessage(), e); } } return url; }
elementOP.provideFields(elementFieldNumbers, new ParameterSetter(elementOP, ps, mappingDefinition));
elementOP.provideFields(elementFieldNumbers, new ParameterSetter(elementOP, ps, mappingDefinition));