本文整理汇总了Java中org.apache.ojb.broker.metadata.ClassDescriptor.getExtentClasses方法的典型用法代码示例。如果您正苦于以下问题:Java ClassDescriptor.getExtentClasses方法的具体用法?Java ClassDescriptor.getExtentClasses怎么用?Java ClassDescriptor.getExtentClasses使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.ojb.broker.metadata.ClassDescriptor
的用法示例。
在下文中一共展示了ClassDescriptor.getExtentClasses方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: setCascadingDelete
import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
* Allows to change the <em>cascading delete</em> behavior of all references of the
* specified class while this transaction is in use - if the specified class is an
* interface, abstract class or class with "extent" classes the cascading flag will
* be propagated.
*
* @param target The class to change cascading delete behavior of all references.
* @param doCascade If <em>true</em> cascading delete is enabled, <em>false</em> disabled.
*/
public void setCascadingDelete(Class target, boolean doCascade)
{
ClassDescriptor cld = getBroker().getClassDescriptor(target);
List extents = cld.getExtentClasses();
Boolean result = doCascade ? Boolean.TRUE : Boolean.FALSE;
setCascadingDelete(cld, result);
if(extents != null && extents.size() > 0)
{
for(int i = 0; i < extents.size(); i++)
{
Class extent = (Class) extents.get(i);
ClassDescriptor tmp = getBroker().getClassDescriptor(extent);
setCascadingDelete(tmp, result);
}
}
}
示例2: firstFoundTableName
import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
* try to find the first none null table name for the given class-descriptor.
* If cld has extent classes, all of these cld's searched for the first none null
* table name.
*/
private static String firstFoundTableName(PersistenceBroker brokerForClass, ClassDescriptor cld)
{
String name = null;
if (!cld.isInterface() && cld.getFullTableName() != null)
{
return cld.getFullTableName();
}
if (cld.isExtent())
{
Collection extentClasses = cld.getExtentClasses();
for (Iterator iterator = extentClasses.iterator(); iterator.hasNext();)
{
name = firstFoundTableName(brokerForClass, brokerForClass.getClassDescriptor((Class) iterator.next()));
// System.out.println("## " + cld.getClassNameOfObject()+" - name: "+name);
if (name != null) break;
}
}
return name;
}
示例3: getFullTableNames
import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
private HashSet getFullTableNames(ClassDescriptor desc, DescriptorRepository repos)
{
String tableName;
HashSet tableNamesSet = new HashSet();
Collection extents = desc.getExtentClasses();
tableName = desc.getFullTableName();
if (tableName != null)
{
tableNamesSet.add(tableName);
}
for (Iterator it = extents.iterator(); it.hasNext();)
{
Class extClass = (Class) it.next();
ClassDescriptor extDesc = repos.getDescriptorFor(extClass);
tableName = extDesc.getFullTableName();
if (tableName != null)
{
tableNamesSet.add(tableName);
}
}
return tableNamesSet;
}
示例4: getExtentClasses
import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
* Searches the class descriptor for the ojbConcrete class attribute
* if it finds the concrete class attribute, append a where clause which
* specifies we can load all classes that are this type or extents of this type.
* @param cld
* @return the extent classes
*/
private static Collection getExtentClasses(ClassDescriptor cld)
{
/**
* 1. check if this class has a ojbConcreteClass attribute
*/
FieldDescriptor fd = cld.getFieldDescriptorByName(ClassDescriptor.OJB_CONCRETE_CLASS);
Collection classes = new HashSet(); // use same class only once
if (fd != null)
{
classes.add(cld.getClassOfObject().getName());
}
/**
* 2. if this class has extents/is an extent search for all extents
*/
if (cld.isExtent())
{
Vector extentClasses = cld.getExtentClasses();
/**
* 3. get all extents for this class
*/
for (int i = 0; i < extentClasses.size(); i++)
{
Class ec = (Class) extentClasses.get(i);
ClassDescriptor extCld = cld.getRepository().getDescriptorFor(ec);
classes.addAll(getExtentClasses(extCld));
}
}
return classes;
}
示例5: getMaxId
import org.apache.ojb.broker.metadata.ClassDescriptor; //导入方法依赖的package包/类
/**
* Search down all extent classes and return max of all found
* PK values.
*/
public static long getMaxId(PersistenceBroker brokerForClass, Class topLevel, FieldDescriptor original) throws PersistenceBrokerException
{
long max = 0;
long tmp;
ClassDescriptor cld = brokerForClass.getClassDescriptor(topLevel);
// if class is not an interface / not abstract we have to search its directly mapped table
if (!cld.isInterface() && !cld.isAbstract())
{
tmp = getMaxIdForClass(brokerForClass, cld, original);
if (tmp > max)
{
max = tmp;
}
}
// if class is an extent we have to search through its subclasses
if (cld.isExtent())
{
Vector extentClasses = cld.getExtentClasses();
for (int i = 0; i < extentClasses.size(); i++)
{
Class extentClass = (Class) extentClasses.get(i);
if (cld.getClassOfObject().equals(extentClass))
{
throw new PersistenceBrokerException("Circular extent in " + extentClass +
", please check the repository");
}
else
{
// fix by Mark Rowell
// Call recursive
tmp = getMaxId(brokerForClass, extentClass, original);
}
if (tmp > max)
{
max = tmp;
}
}
}
return max;
}