Example usage for org.hibernate.mapping Subclass getClassName

List of usage examples for org.hibernate.mapping Subclass getClassName

Introduction

In this page you can find the example usage for org.hibernate.mapping Subclass getClassName.

Prototype

public String getClassName() 

Source Link

Usage

From source file:edu.wustl.common.util.dbManager.HibernateMetaData.java

License:BSD License

/**
 * This method returns the list of subclasses of the className
 * @author aarti_sharma/*from ww w  .  j a va  2s.com*/
 * @param className
 * @return
 * @throws ClassNotFoundException
 */
public static List getSubClassList(String className) throws ClassNotFoundException {
    List list = new ArrayList();
    //System.out.println("className :::"+ className);
    Class classObj = Class.forName(className);
    //System.out.println("classObj :::"+ classObj);
    PersistentClass classobj1 = cfg.getClassMapping(classObj.getName());
    Iterator it = classobj1.getDirectSubclasses();
    //Iterator it = cfg.getClassMapping(classObj).getDirectSubclasses();
    while (it.hasNext()) {
        Subclass subClass = (Subclass) it.next();

        System.out.println(subClass.getClass().getName());
        //System.out.println("Name "+subClass.getName());
        list.add(subClass.getClassName());
    }
    return list;
}

From source file:gov.nih.nci.system.util.ClassCache.java

License:BSD License

/**
 * initialize with a list of the classes obtained from each DAO class within
 * the System//from ww w.ja v a  2  s.  c  om
 */
private void initialize() throws DAOException {

    String unqualifiedClassName = null;
    Class klass = null;

    HashSet<String> tmpPackageNames = new HashSet<String>();

    List<String> allClassNames;
    Set<String> implicitClassNames = new HashSet<String>();

    for (DAO dao : daoList) {

        allClassNames = dao.getAllClassNames();

        // Implicit superclasses have no hibernate mapping and so are not
        // part of the dao class names
        String implicitSuperclass = null;
        for (String klassName : allClassNames) {
            implicitSuperclass = klassName;
            do {
                try {
                    implicitSuperclass = Class.forName(implicitSuperclass).getSuperclass().getName();
                    log.debug("Checking if class " + implicitSuperclass + " is implicit");

                    if (!(implicitSuperclass.equalsIgnoreCase("java.lang.Object"))
                            && !(allClassNames.contains(implicitSuperclass))) {
                        log.debug("Adding " + implicitSuperclass + " as an implicit superclass");
                        implicitClassNames.add(implicitSuperclass);
                    }
                } catch (ClassNotFoundException e) {
                    log.error("Error:  Class not found: " + implicitSuperclass);
                    implicitSuperclass = null;
                }
            } while ((!implicitSuperclass.equalsIgnoreCase("java.lang.Object"))
                    && !(implicitSuperclass == null));
        }

        log.debug("Number of implicit superclasses found: " + implicitClassNames.size());
        allClassNames.addAll(implicitClassNames);

        // Certain metadata needs to be generated prior to caching the rest
        // of the info
        for (String klassName : allClassNames) {

            try {
                klass = Class.forName(klassName);
            } catch (ClassNotFoundException e) {
                log.error("ClassNotFoundException caught: ", e);
            }
            String packageName = klass.getPackage().getName();
            unqualifiedClassName = klassName.substring(klassName.lastIndexOf(".") + 1);
            log.debug("Unqualified class name: " + unqualifiedClassName);

            if ((pkgNameForClassCache.get(klassName.toLowerCase()) != null)
                    || (pkgNameForClassCache.get(unqualifiedClassName) != null)) {
                throw new DAOException(
                        "Duplicate Class name found while initializing ClassCache: " + klassName);
            }
            // Cache the package name for each klass
            pkgNameForClassCache.put(klassName.toLowerCase(), packageName);
            pkgNameForClassCache.put(unqualifiedClassName.toLowerCase(), packageName);
            nonPrimitiveFieldsCache.put(klassName, cacheNonPrimitiveFieldNames(klass));

            allFieldsCache.put(klassName, cacheAllFieldNames(klass));

            log.debug("Adding class " + klass.getName() + " to Class Cache.");
            classCache.put(klassName, klass);
            classCache.put(klassName.toLowerCase(), klass);
            classCache.put(unqualifiedClassName, klass);
            classCache.put(unqualifiedClassName.toLowerCase(), klass);

            log.debug("Adding class " + klass.getName() + " to DAO Cache for DAO: " + dao.getClass().getName());
            daoCache.put(klassName, dao);
            daoCache.put(klassName.toLowerCase(), dao);
            daoCache.put(unqualifiedClassName, dao);
            daoCache.put(unqualifiedClassName.toLowerCase(), dao);

            // Cache the identifier (id key) for each class
            if (dao instanceof ORMDAOImpl)
                classIdCache.put(klassName, ((ORMDAOImpl) dao).getClassIdentiferName(klassName));
        }

        // Certain metadata needs to be cached prior to caching the rest,
        // so here we loop through the second time now that we have the data
        // we need
        for (String klassName : allClassNames) {
            log.debug("Adding class " + klassName + " to allClassNames List");

            allQualClassNames.add(klassName);
            unqualifiedClassName = klassName.substring(klassName.lastIndexOf(".") + 1);
            log.debug("Unqualified class name: " + unqualifiedClassName);
            allUnqualClassNames.add(unqualifiedClassName);

            List<String> pkgClassNames = new ArrayList<String>();
            try {
                klass = Class.forName(klassName);

                String packageName = klass.getPackage().getName();

                // Cache all package names
                tmpPackageNames.add(packageName);

                // Cache associations for klass
                classAssociationsCache.put(klassName, cacheAssociations(klassName));

                // Collect all class names within a package
                if (!pkgClassNamesCache.containsKey(packageName)) {
                    pkgClassNames.add(klassName);
                    pkgClassNamesCache.put(packageName, pkgClassNames);
                } else {
                    List<String> existingCollection = pkgClassNamesCache.get(packageName);
                    existingCollection.add(klassName);
                }

            } catch (ClassNotFoundException cnfe) {
                log.error("Exception caught while initializing ClassCache for class: " + klassName, cnfe);
            }
        }

        for (String klassName : allClassNames) {
            log.debug("Adding class " + klassName + " to subClassCache List");
            try {
                klass = Class.forName(klassName);

                String currentKlassName = klassName;
                Class superKlass = klass.getSuperclass();
                String superKlassName = superKlass.getName();
                while (!"java.lang.Object".equals(superKlass.getName())) {
                    List<String> subKlassNames = subClassCache.get(superKlassName);
                    if (subKlassNames == null) {
                        subKlassNames = new ArrayList<String>();
                        subClassCache.put(superKlassName, subKlassNames);
                    }
                    if (!subKlassNames.contains(currentKlassName))
                        subKlassNames.add(currentKlassName);
                    currentKlassName = superKlass.getName();
                    superKlass = superKlass.getSuperclass();
                    superKlassName = superKlass.getName();
                }
            } catch (ClassNotFoundException e) {
                log.error("Exception caught while initializing ClassCache for class: " + klassName, e);
            }
        }

        if (dao instanceof ORMDAOImpl) {
            Configuration cfg = ((ORMDAOImpl) dao).getConfig();

            Iterator iter = cfg.getClassMappings();
            while (iter.hasNext()) {
                PersistentClass pklass = (PersistentClass) iter.next();
                Object identifier = null;
                log.debug("Getting discriminator details for : " + pklass.getClassName() + ":");
                if (pklass instanceof Subclass) {
                    Subclass subklass = (Subclass) pklass;
                    if (subklass.isJoinedSubclass())
                        identifier = subklass.getSubclassId();
                    else
                        identifier = getShortClassName(subklass.getClassName());
                } else if (pklass instanceof RootClass) {

                    RootClass rootklass = (RootClass) pklass;
                    if (rootklass.getDiscriminator() == null)
                        identifier = rootklass.getSubclassId();
                    else
                        identifier = getShortClassName(rootklass.getClassName());
                }
                log.debug(identifier);
                discriminatorMap.put(pklass.getClassName(), identifier);
            }
        }
        if (dao instanceof ORMDAOImpl) {
            Configuration cfg = ((ORMDAOImpl) dao).getConfig();
            for (String className : allClassNames) {
                Map<String, Map<String, List<Object>>> tempSearchFieldForObject = getMapOfSearchFields(cfg,
                        className);
                if (tempSearchFieldForObject != null)
                    searchableFieldsMap.putAll(tempSearchFieldForObject);
            }
        }
    }

    allPackageNamesCache = new ArrayList<String>(tmpPackageNames);

    Collections.sort(allPackageNamesCache);
    Collections.sort(allQualClassNames);
    Collections.sort(allUnqualClassNames);
}