Package org.apache.ojb.broker.metadata

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


        pb.getInternalCache().enableMaterializationCache();
        try
        {
            while (i.hasNext())
            {
                ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
                retrieveReference(newObj, cld, rds, forced);
            }

            pb.getInternalCache().disableMaterializationCache();
        }
View Full Code Here


        pb.getInternalCache().enableMaterializationCache();
        try
        {
            while (i.hasNext())
            {
                ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
                retrieveProxyReference(newObj, cld, rds, forced);
            }

            pb.getInternalCache().disableMaterializationCache();
        }
View Full Code Here


    private void buildOneToOneConstraints(ClassDescriptor classDescriptor) {
        Vector referenceDescriptors = classDescriptor.getObjectReferenceDescriptors();
        for (int i = 0; i < referenceDescriptors.size(); i++) {
            ObjectReferenceDescriptor ord = (ObjectReferenceDescriptor) referenceDescriptors.get(i);

            Vector foreignKeyIndices = ord.getForeignKeyFields();
            ClassDescriptor foreignClassDescriptor = this.repository.getDescriptorFor(ord.getItemClass());
            buildForeignKey(foreignClassDescriptor, foreignKeyIndices, classDescriptor);
        }
    }
View Full Code Here

        // never returns null, thus we can direct call iterator
        Iterator descriptors = null;
        if(cld.getObjectReferenceDescriptors().size() > 0)
        {
            descriptors = cld.getObjectReferenceDescriptors().iterator();
            ObjectReferenceDescriptor ord;
            while(descriptors.hasNext())
            {
                ord = (ObjectReferenceDescriptor) descriptors.next();
                if(doLink)
                {
                    m_broker.linkOneToOne(obj, cld, ord, insert);
                }
                else
                {
                    m_broker.unlinkFK(obj, cld, ord);
                    // in 1:1 relation we have to set relation to null
                    ord.getPersistentField().set(obj, null);
                }
            }
        }
        if(cld.getCollectionDescriptors().size() > 0)
        {
View Full Code Here

    private boolean linkOrUnlink(boolean doLink, Object obj, String attributeName, boolean insert)
    {
        boolean match = false;
        ClassDescriptor cld = m_broker.getDescriptorRepository().getDescriptorFor(ProxyHelper.getRealClass(obj));
        ObjectReferenceDescriptor ord = cld.getObjectReferenceDescriptorByName(attributeName);
        if(ord != null)
        {
            if(doLink)
            {
                m_broker.linkOneToOne(obj, cld, ord, insert);
            }
            else
            {
                m_broker.unlinkFK(obj, cld, ord);
                // in 1:1 relation we have to set relation to null
                ord.getPersistentField().set(obj, null);
            }
            match = true;
        }
        else
        {
View Full Code Here

        throws IllegalAccessException
    {
        Iterator i = cld.getObjectReferenceDescriptors().iterator();
        while (i.hasNext())
        {
            ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
            Object refObj = rds.getPersistentField().get(objectToReorder.getObject());
            if (refObj != null)
            {
                Identity id = new Identity(refObj, transaction.getBroker());
                ObjectEnvelope oe = (ObjectEnvelope) mhtObjectEnvelopes.get(id);
                if (oe != null)
View Full Code Here

        if (aTableAlias != null)
        {
            fld = aTableAlias.cld.getFieldDescriptorByName(colName);
            if (fld == null)
            {
                ObjectReferenceDescriptor ord = aTableAlias.cld.getObjectReferenceDescriptorByName(colName);
                if (ord != null)
                {
                    fld = getFldFromReference(aTableAlias, ord);
                }
                else
View Full Code Here

   */
  private TableAlias getTableAlias(String aPath, boolean useOuterJoins, UserAlias aUserAlias, String[] fieldRef, Map pathClasses)
  {
    TableAlias curr, prev, indirect;
    String attr, attrPath = null;
    ObjectReferenceDescriptor ord;
    CollectionDescriptor cod;
    ClassDescriptor cld = null;
    Object[] prevKeys = null;
    Object[] keys = null;
    ArrayList descriptors;
    boolean outer = useOuterJoins;
    int pathLength;

    String pathAlias = aUserAlias == null ? null : aUserAlias.getAlias(aPath);
    curr = getTableAliasForPath(aPath, pathAlias);

    if (curr != null)
    {
      return curr;
    }

    descriptors = getRoot().cld.getAttributeDescriptorsForPath(aPath, pathClasses);
    prev = getRoot();

    if (descriptors == null || descriptors.size() == 0)
    {
      if (prev.hasJoins())
      {
        for (Iterator itr = prev.iterateJoins(); itr.hasNext();)
        {
          prev = ((Join) itr.next()).left;
          descriptors = prev.cld.getAttributeDescriptorsForPath(aPath, pathClasses);
          if (descriptors.size() > 0)
          {
            break;
          }
        }
      }
    }

    pathLength = descriptors.size();
    for (int i = 0; i < pathLength; i++)
    {
      if (!(descriptors.get(i) instanceof ObjectReferenceDescriptor))
      {
        // only use Collection- and ObjectReferenceDescriptor
        continue;
      }

      ord = (ObjectReferenceDescriptor) descriptors.get(i);
      attr = ord.getAttributeName();
      if (attrPath == null)
      {
        attrPath = attr;
      }
      else
      {
        attrPath = attrPath + "." + attr;
      }

      // look for outer join hint
      outer = outer || getQuery().isPathOuterJoin(attr);

      // look for 1:n or m:n
      if (ord instanceof CollectionDescriptor)
      {
        cod = (CollectionDescriptor) ord;
        cld = getItemClassDescriptor(cod, attrPath, pathClasses);

        if (!cod.isMtoNRelation())
        {
          prevKeys = prev.cld.getPkFields();
          keys = cod.getForeignKeyFieldDescriptors(cld);
        }
        else
        {
          String mnAttrPath = attrPath + "*";
          String mnUserAlias = (aUserAlias == null ? null : aUserAlias + "*");
          indirect = getTableAliasForPath(mnAttrPath, mnUserAlias);
          if (indirect == null)
          {
            indirect = createTableAlias(cod.getIndirectionTable(), mnAttrPath, mnUserAlias);

            // we need two Joins for m:n
            // 1.) prev class to indirectionTable
            prevKeys = prev.cld.getPkFields();
            keys = cod.getFksToThisClass();
            addJoin(prev, prevKeys, indirect, keys, outer, attr + "*");
          }
          // 2.) indirectionTable to the current Class
          prev = indirect;
          prevKeys = cod.getFksToItemClass();
          keys = cld.getPkFields();
        }
      }
      else
      {
        // must be n:1 or 1:1
        cld = getItemClassDescriptor(ord, attrPath, pathClasses);

          // BRJ : if ord is taken from 'super' we have to change prev accordingly
        if (!prev.cld.equals(ord.getClassDescriptor()))
        {
            prev = getTableAliasForClassDescriptor(ord.getClassDescriptor());
       

        prevKeys = ord.getForeignKeyFieldDescriptors(prev.cld);
        keys = cld.getPkFields();

        // [olegnitz]
        // a special case: the last element of the path is
        // reference and the field is one of PK fields =>
View Full Code Here

        {
            // get all members of obj that are references and assign FKs
            Iterator i = vecRds.iterator();
            while (i.hasNext())
            {
                ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
                Object ref = rds.getPersistentField().get(obj);
                assertFkAssignment(obj, ref, rds);
            }
        }
        catch (Throwable t)
        {
View Full Code Here

    protected void buildSuperJoinTree(TableAlias left, ClassDescriptor cld, String name)
    {
        Iterator objRefs = cld.getObjectReferenceDescriptors().iterator();
        while (objRefs.hasNext())
        {
            ObjectReferenceDescriptor objRef = (ObjectReferenceDescriptor) objRefs.next();
            FieldDescriptor[] leftFields = objRef.getForeignKeyFieldDescriptors(cld);

            ClassDescriptor refCld = cld.getRepository().getDescriptorFor(objRef.getItemClassName());
            if (objRef.getPersistentField() instanceof AnonymousPersistentFieldForInheritance)
            {
                TableAlias base_alias = getTableAliasForPath(name, null);

                String aliasName = String.valueOf(getAliasChar()) + m_aliasCount++;
                TableAlias right = new TableAlias(refCld, aliasName, false, null);
View Full Code Here

TOP

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

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.