当前位置: 首页>>代码示例>>Java>>正文


Java ClassDescriptor.getObjectReferenceDescriptors方法代码示例

本文整理汇总了Java中org.apache.ojb.broker.metadata.ClassDescriptor.getObjectReferenceDescriptors方法的典型用法代码示例。如果您正苦于以下问题:Java ClassDescriptor.getObjectReferenceDescriptors方法的具体用法?Java ClassDescriptor.getObjectReferenceDescriptors怎么用?Java ClassDescriptor.getObjectReferenceDescriptors使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.ojb.broker.metadata.ClassDescriptor的用法示例。


在下文中一共展示了ClassDescriptor.getObjectReferenceDescriptors方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: refreshAllNonUpdatingReferences

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
    *
    * @see org.kuali.rice.krad.service.PersistenceService#refreshAllNonUpdatingReferences(org.kuali.rice.krad.bo.BusinessObject)
    */
   @Override
public void refreshAllNonUpdatingReferences(PersistableBusinessObject bo) {

       // get the OJB class-descriptor for the bo class
       ClassDescriptor classDescriptor = getClassDescriptor(bo.getClass());

       // get a list of all reference-descriptors for that class
       Vector references = classDescriptor.getObjectReferenceDescriptors();

       // walk through all of the reference-descriptors
       for (Iterator iter = references.iterator(); iter.hasNext();) {
           ObjectReferenceDescriptor reference = (ObjectReferenceDescriptor) iter.next();

           // if its NOT an updateable reference, then lets refresh it
           if (reference.getCascadingStore() == ObjectReferenceDescriptor.CASCADE_NONE) {
               PersistentField persistentField = reference.getPersistentField();
               String referenceName = persistentField.getName();
               retrieveReferenceObject(bo, referenceName);
           }
       }
   }
 
开发者ID:kuali,项目名称:kc-rice,代码行数:26,代码来源:PersistenceServiceOjbImpl.java

示例2: getReferencesForForeignKey

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * @see org.kuali.rice.krad.service.PersistenceService#getReferencesForForeignKey(java.lang.Class,
 *      java.lang.String)
 */

@Override
public Map getReferencesForForeignKey(Class persistableObjectClass, String attributeName) {
	Map referenceClasses = new HashMap();
	if (PersistableBusinessObject.class.isAssignableFrom(persistableObjectClass)) {
		ClassDescriptor classDescriptor = getClassDescriptor(persistableObjectClass);
		Vector objectReferences = classDescriptor.getObjectReferenceDescriptors();
		for (Iterator iter = objectReferences.iterator(); iter.hasNext();) {
			ObjectReferenceDescriptor referenceDescriptor = (ObjectReferenceDescriptor) iter.next();

			/*
			 * iterate through the fk keys for the reference object and if
			 * matches the attributeName add the class as a reference
			 */
			FieldDescriptor[] refFkNames = referenceDescriptor.getForeignKeyFieldDescriptors(classDescriptor);
			for (int i = 0; i < refFkNames.length; i++) {
				FieldDescriptor fkField = refFkNames[i];
				if (fkField.getAttributeName().equals(attributeName)) {
					referenceClasses.put(referenceDescriptor.getAttributeName(), referenceDescriptor.getItemClass());
				}
			}
		}
	}
	return referenceClasses;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:30,代码来源:PersistenceStructureServiceOjbImpl.java

示例3: getNestedForeignKeyMap

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * @see org.kuali.rice.krad.service.PersistenceService#getNestedForeignKeyMap(java.lang.Class)
 */

@Override
public Map getNestedForeignKeyMap(Class persistableObjectClass) {
	Map fkMap = new HashMap();
	ClassDescriptor classDescriptor = getClassDescriptor(persistableObjectClass);
	Vector objectReferences = classDescriptor.getObjectReferenceDescriptors();
	for (Iterator iter = objectReferences.iterator(); iter.hasNext();) {
		ObjectReferenceDescriptor objectReferenceDescriptor = (ObjectReferenceDescriptor) iter.next();
		ClassDescriptor referenceDescriptor = this.getClassDescriptor(objectReferenceDescriptor.getItemClass());

		FieldDescriptor[] fkFields = objectReferenceDescriptor.getForeignKeyFieldDescriptors(classDescriptor);
		FieldDescriptor[] pkFields = referenceDescriptor.getPkFields();
		for (int i = 0; i < pkFields.length; i++) {
			FieldDescriptor pkField = pkFields[i];
			fkMap.put(objectReferenceDescriptor.getAttributeName() + "." + pkField.getAttributeName(), fkFields[i].getAttributeName());
		}
	}

	return fkMap;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:24,代码来源:PersistenceStructureServiceOjbImpl.java

示例4: listReferenceObjectFields

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * @see org.kuali.rice.krad.service.PersistenceStructureService#listReferenceObjectFieldNames(java.lang.Class)
 */

@Override
public Map<String, Class> listReferenceObjectFields(Class boClass) {
	// validate parameter
	if (boClass == null) {
		throw new IllegalArgumentException("Class specified in the parameter was null.");
	}

	Map<String, Class> references = new HashMap<String, Class>();
	ClassDescriptor classDescriptor = getClassDescriptor(boClass);
	Collection<ObjectReferenceDescriptor> referenceDescriptors = classDescriptor.getObjectReferenceDescriptors(true);

	for (ObjectReferenceDescriptor referenceDescriptor : referenceDescriptors) {
		/*
            * Below check is performed for OJB specific inheritance implementation. For more information see the OJB
            * documentation: http://db.apache.org/ojb/docu/guides/advanced-technique.html#table-per-subclass
            */
           String superReferenceDescriptor = referenceDescriptor.getAttributeName();
           if (!SuperReferenceDescriptor.SUPER_FIELD_INTERNAL_NAME.equals(superReferenceDescriptor)) {
               references.put(superReferenceDescriptor, referenceDescriptor.getItemClass());
           }
	}

	return references;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:29,代码来源:PersistenceStructureServiceOjbImpl.java

示例5: getMappedTree

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private static void getMappedTree(String rootClass, Collection<DescriptorRepository> descriptorRepositories, Set<String> processed) {
    if (processed.contains(rootClass)) {
        return;
    }

    processed.add(rootClass);
    final ClassDescriptor cd = findClassDescriptor(rootClass, descriptorRepositories);
    if (cd != null) {
        final Collection<ObjectReferenceDescriptor> ords = cd.getObjectReferenceDescriptors();
        if (ords != null) {
            for (ObjectReferenceDescriptor ord : ords) {
                getMappedTree(ord.getItemClassName(), descriptorRepositories, processed);
            }
        }

        final Collection<CollectionDescriptor> clds = cd.getCollectionDescriptors();
        if (clds != null) {
            for (ObjectReferenceDescriptor cld : clds) {
                getMappedTree(cld.getItemClassName(), descriptorRepositories, processed);
            }
        }

    } else {
        LOG.warn("ClassDescriptor not found for " + rootClass);
    }
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:27,代码来源:OjbUtil.java

示例6: cascadeDeleteFor

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * Walk through the object graph of the specified delete object. Was used for
 * recursive object graph walk.
 */
private void cascadeDeleteFor(ObjectEnvelope mod, List alreadyPrepared)
{
    // avoid endless recursion
    if(alreadyPrepared.contains(mod.getIdentity())) return;

    alreadyPrepared.add(mod.getIdentity());

    ClassDescriptor cld = getTransaction().getBroker().getClassDescriptor(mod.getObject().getClass());

    List refs = cld.getObjectReferenceDescriptors(true);
    cascadeDeleteSingleReferences(mod, refs, alreadyPrepared);

    List colls = cld.getCollectionDescriptors(true);
    cascadeDeleteCollectionReferences(mod, colls, alreadyPrepared);
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:20,代码来源:ObjectEnvelopeTable.java

示例7: storeReferences

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * Store all object references that <b>obj</b> points to.
 * All objects which we have a FK pointing to (Via ReferenceDescriptors) will be
 * stored if auto-update is true <b>AND</b> the member field containing the object
 * reference is NOT null.
 * With flag <em>ignoreReferences</em> the storing/linking
 * of references can be suppressed (independent of the used auto-update setting),
 * except {@link org.apache.ojb.broker.metadata.SuperReferenceDescriptor}
 * these kind of reference (descriptor) will always be performed.
 *
 * @param obj Object which we will store references for
 */
private void storeReferences(Object obj, ClassDescriptor cld, boolean insert, boolean ignoreReferences)
{
    // get all members of obj that are references and store them
    Collection listRds = cld.getObjectReferenceDescriptors();
    // return if nothing to do
    if(listRds == null || listRds.size() == 0)
    {
        return;
    }
    Iterator i = listRds.iterator();
    while (i.hasNext())
    {
        ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
        /*
        arminw: the super-references (used for table per subclass inheritance) must
        be performed in any case. The "normal" 1:1 references can be ignored when
        flag "ignoreReferences" is set
        */
        if((!ignoreReferences && rds.getCascadingStore() != ObjectReferenceDescriptor.CASCADE_NONE)
                || rds.isSuperReferenceDescriptor())
        {
            storeAndLinkOneToOne(false, obj, cld, rds, insert);
        }
    }
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:38,代码来源:PersistenceBrokerImpl.java

示例8: getRelationshipMetadata

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * @see org.kuali.rice.krad.service.PersistenceService#getRelationshipMetadata(java.lang.Class,
 *      java.lang.String)
 */

@Override
public Map<String, DataObjectRelationship> getRelationshipMetadata(Class persistableClass, String attributeName, String attributePrefix) {
	if (persistableClass == null) {
		throw new IllegalArgumentException("invalid (null) persistableClass");
	}
	if (StringUtils.isBlank(attributeName)) {
		throw new IllegalArgumentException("invalid (blank) attributeName");
	}

	Map<String, DataObjectRelationship> relationships = new HashMap<String, DataObjectRelationship>();
	ClassDescriptor classDescriptor = getClassDescriptor(persistableClass);
	Vector<ObjectReferenceDescriptor> references = classDescriptor.getObjectReferenceDescriptors();
	for (ObjectReferenceDescriptor objRef : references) {
		Vector fks = objRef.getForeignKeyFields();
		if (fks.contains(attributeName) || objRef.getAttributeName().equals(attributeName)) {
			Map<String, String> fkToPkRefs = getForeignKeysForReference(persistableClass, objRef.getAttributeName());
			DataObjectRelationship rel = new DataObjectRelationship(persistableClass, objRef.getAttributeName(), objRef.getItemClass());
			for (Map.Entry<String, String> ref : fkToPkRefs.entrySet()) {
				if (StringUtils.isBlank(attributePrefix)) {
					rel.getParentToChildReferences().put(ref.getKey(), ref.getValue());
				} else {
					rel.getParentToChildReferences().put(attributePrefix + "." + ref.getKey(), ref.getValue());
				}
			}
			relationships.put(objRef.getAttributeName(), rel);
		}
	}
	return relationships;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:35,代码来源:PersistenceStructureServiceOjbImpl.java

示例9: isBidirectional

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private boolean isBidirectional(String thisClass, String itemClass) {
    final ClassDescriptor cd = OjbUtil.findClassDescriptor(itemClass, descriptorRepositories);
    if (cd != null) {
        Collection<ObjectReferenceDescriptor> ords = cd.getObjectReferenceDescriptors();
        if (ords != null) {
            for (ObjectReferenceDescriptor ord : ords) {
                if (ord.getItemClassName().equals(thisClass)) {
                    return true;
                }
            }
        }
    }
    return false;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:15,代码来源:OneToOneResolver.java

示例10: getMappedBy

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private String getMappedBy(String thisClass, String itemClass) {
    final ClassDescriptor cd = OjbUtil.findClassDescriptor(itemClass, descriptorRepositories);
    if (cd != null) {
        Collection<ObjectReferenceDescriptor> ords = cd.getObjectReferenceDescriptors();
        if (ords != null) {
            for (ObjectReferenceDescriptor ord : ords) {
                if (ord.getItemClassName().equals(thisClass)) {
                    return ord.getAttributeName();
                }
            }
        }
    }
    return null;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:15,代码来源:OneToOneResolver.java

示例11: isBidirectional

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private boolean isBidirectional(String thisClass, String itemClass) {
    final ClassDescriptor cd = OjbUtil.findClassDescriptor(itemClass, descriptorRepositories);
    Collection<ObjectReferenceDescriptor> ords = cd.getObjectReferenceDescriptors();
    if (ords != null) {
        for (ObjectReferenceDescriptor ord : ords) {
            if (ord.getItemClassName().equals(thisClass)) {
                return true;
            }
        }
    }
    return false;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:13,代码来源:OneToManyResolver.java

示例12: getMappedBy

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private String getMappedBy(String thisClass, String itemClass) {
    final ClassDescriptor cd = OjbUtil.findClassDescriptor(itemClass, descriptorRepositories);
    Collection<ObjectReferenceDescriptor> ords = cd.getObjectReferenceDescriptors();
    if (ords != null) {
        for (ObjectReferenceDescriptor ord : ords) {
            if (ord.getItemClassName().equals(thisClass)) {
                return ord.getAttributeName();
            }
        }
    }
    return null;
}
 
开发者ID:kuali,项目名称:kc-rice,代码行数:13,代码来源:OneToManyResolver.java

示例13: cascadeInsertFor

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * Walk through the object graph of the specified insert object. Was used for
 * recursive object graph walk.
 */
private void cascadeInsertFor(ObjectEnvelope mod, List alreadyPrepared)
{
    // avoid endless recursion, so use List for registration
    if(alreadyPrepared.contains(mod.getIdentity())) return;
    alreadyPrepared.add(mod.getIdentity());

    ClassDescriptor cld = getTransaction().getBroker().getClassDescriptor(mod.getObject().getClass());

    List refs = cld.getObjectReferenceDescriptors(true);
    cascadeInsertSingleReferences(mod, refs, alreadyPrepared);

    List colls = cld.getCollectionDescriptors(true);
    cascadeInsertCollectionReferences(mod, colls, alreadyPrepared);
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:19,代码来源:ObjectEnvelopeTable.java

示例14: buildOneToOneConstraints

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
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);
    }
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:11,代码来源:TorqueForeignKeyGenerator.java

示例15: deleteReferences

import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
 * Deletes references that <b>obj</b> points to.
 * All objects which we have a FK poiting to (Via ReferenceDescriptors)
 * will be deleted if auto-delete is true <b>AND</b>
 * the member field containing the object reference is NOT null.
 *
 * @param obj Object which we will delete references for
 * @param listRds list of ObjectRederenceDescriptors
 * @param ignoreReferences With this flag the automatic deletion/unlinking
 * of references can be suppressed (independent of the used auto-delete setting in metadata),
 * except {@link org.apache.ojb.broker.metadata.SuperReferenceDescriptor}
 * these kind of reference (descriptor) will always be performed.
 * @throws PersistenceBrokerException if some goes wrong - please see the error message for details
 */
private void deleteReferences(ClassDescriptor cld, Object obj, Identity oid, boolean ignoreReferences) throws PersistenceBrokerException
{
	List listRds = cld.getObjectReferenceDescriptors();
    // get all members of obj that are references and delete them
    Iterator i = listRds.iterator();
    while (i.hasNext())
    {
        ObjectReferenceDescriptor rds = (ObjectReferenceDescriptor) i.next();
        if ((!ignoreReferences && rds.getCascadingDelete() == ObjectReferenceDescriptor.CASCADE_OBJECT)
                || rds.isSuperReferenceDescriptor())
        {
            Object referencedObject = rds.getPersistentField().get(obj);
            if (referencedObject != null)
            {
            	if(rds.isSuperReferenceDescriptor())
            	{
            		ClassDescriptor base = cld.getSuperClassDescriptor();
            		/*
	                 arminw: If "table-per-subclass" inheritance is used we have to
	                 guarantee that all super-class table entries are deleted too.
	                 Thus we have to perform the recursive deletion of all super-class
	                 table entries.
            		 */
            		performDeletion(base, referencedObject, oid, ignoreReferences);
            	}
            	else
            	{
            		doDelete(referencedObject, ignoreReferences);
            	}
            }
        }
    }
}
 
开发者ID:KualiCo,项目名称:ojb,代码行数:48,代码来源:PersistenceBrokerImpl.java


注:本文中的org.apache.ojb.broker.metadata.ClassDescriptor.getObjectReferenceDescriptors方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。