Package org.apache.ojb.broker.metadata

Examples of org.apache.ojb.broker.metadata.FieldDescriptor


     * @param referencedObject The referenced object or <i>null</i>
     */
    private void setFKField(Object targetObject, ClassDescriptor cld, ObjectReferenceDescriptor rds, Object referencedObject)
    {
        ValueContainer[] refPkValues;
        FieldDescriptor fld;
        FieldDescriptor[] objFkFields = rds.getForeignKeyFieldDescriptors(cld);
        if (objFkFields == null)
        {
            throw new PersistenceBrokerException("No foreign key fields defined for class '"+cld.getClassNameOfObject()+"'");
        }
        if(referencedObject == null)
        {
            refPkValues = null;
        }
        else
        {
            Class refClass = ProxyHelper.getRealClass(referencedObject);
            ClassDescriptor refCld = getClassDescriptor(refClass);
            refPkValues = brokerHelper.getKeyValues(refCld, referencedObject, false);
        }
        for (int i = 0; i < objFkFields.length; i++)
        {
            fld = objFkFields[i];
            /*
            arminw:
            we set the FK value when the extracted PK fields from the referenced object are not null at all
            or if null, the FK field was not a PK field of target object too.
            Should be ok, because the values of the extracted PK field values should never be null and never
            change, so it doesn't matter if the target field is a PK too.
            */
            if(refPkValues != null || !fld.isPrimaryKey())
            {
                fld.getPersistentField().set(targetObject, refPkValues != null ? refPkValues[i].getValue(): null);
            }
        }
    }
View Full Code Here


        // read in fresh copy from the db
        Object freshInstance = getDBObject(oid);

        // update all primitive typed attributes
        FieldDescriptor[] fields = cld.getFieldDescriptions();
        FieldDescriptor fmd;
        PersistentField fld;
        for (int i = 0; i < fields.length; i++)
        {
            fmd = fields[i];
            fld = fmd.getPersistentField();
            fld.set(cachedInstance, fld.get(freshInstance));
        }
    }
View Full Code Here

                    ClassDescriptor tempCld = repository.getDescriptorFor(baseClass);
                    FieldDescriptor[] fields = tempCld.getFieldDescriptions();
                    Vector pkFields = getPkFieldNames(tempCld);
                    for (int i = fields.length - 1; i >= 0; i--)
                    {
                        FieldDescriptor f = fields[i];
                        if (!(f instanceof AnonymousFieldDescriptor))
                        {
                            PersistentField pf = f.getPersistentField();
                            if (!pkFields.contains(pf.getName()))
                            {
                                v.add(f.getPersistentField());
                            }
                        }
                    }
                    Vector ords = tempCld.getObjectReferenceDescriptors();
                    for (int i = ords.size() - 1; i >= 0; i--)
View Full Code Here

         * 1. register all fields of object that aren't collections or references
         */
        FieldDescriptor[] fieldDescs = mif.getFieldDescriptions();
        for(int i = 0; i < fieldDescs.length; i++)
        {
            FieldDescriptor fd = fieldDescs[i];
            PersistentField f = fd.getPersistentField();
            fieldValues.put(fd.getColumnName(), f.get(myObj));
        }
        /**
         * MBAIRD
         * 2. register all 1:1 references
         * field changes to 1:1 mapped objects should also be registered in the map,
View Full Code Here

    {
        boolean result = false;
        FieldDescriptor[] fkFields = rds.getForeignKeyFieldDescriptors(cld);
        for(int i = 0; i < fkFields.length; i++)
        {
            FieldDescriptor fkField = fkFields[i];
            if(AnonymousPersistentField.class.isAssignableFrom(fkField.getPersistentField().getClass()))
            {
                result = true;
                break;
            }
        }
View Full Code Here

        FieldDescriptor[] fields = cod.getForeignKeyFieldDescriptors(refCld);
        Criteria criteria = new Criteria();

        for (int i = 0; i < fields.length; i++)
        {
            FieldDescriptor fld = fields[i];
            criteria.addEqualTo(fld.getAttributeName(), container[i].getValue());
        }

        return QueryFactory.newQuery(refCld.getClassOfObject(), criteria);
    }
View Full Code Here

        FieldDescriptor[] fields = cld.getPkFields();
        Criteria criteria = new Criteria();

        for (int i = 0; i < fields.length; i++)
        {
            FieldDescriptor fld = fields[i];
            criteria.addEqualTo(fld.getAttributeName(), values[i]);
        }
        return QueryFactory.newQuery(cld.getClassOfObject(), criteria);
    }
View Full Code Here

        ClassDescriptor mif = pb.getClassDescriptor(newObj.getClass());
        FieldDescriptor[] fieldDescs = mif.getFieldDescriptions();

        for (int i = 0; i < fieldDescs.length; i++)
        {
            FieldDescriptor fd = fieldDescs[i];
            PersistentField f = fd.getPersistentField();
            f.set(oldObj, f.get(newObj));
        }

        // N:1 relations
        Iterator iter = mif.getObjectReferenceDescriptors().iterator();
View Full Code Here

    {
        PBCapsule capsule = new PBCapsule(null, TxManagerFactory.instance().getTransaction());
        try
        {
          ClassDescriptor cld = capsule.getBroker().getClassDescriptor(this.getClass());
          FieldDescriptor fld = cld.getFieldDescriptorByName("id");

            Integer val = (Integer) capsule.getBroker().serviceSequenceManager().getUniqueValue(fld);

            int result = val.intValue();
View Full Code Here

                ValueContainer[] pkValues = broker.serviceBrokerHelper().getKeyValues(cld, obj);

                Criteria criteria = new Criteria();
                for (int j = 0; j < pkFields.length; j++)
                {
                    FieldDescriptor fld = pkFields[j];
                    criteria.addEqualTo(fld.getPersistentField().getName(), pkValues[j].getValue());
                }

                if (crit == null)
                    crit = criteria;
                else
View Full Code Here

TOP

Related Classes of org.apache.ojb.broker.metadata.FieldDescriptor

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.