Example usage for org.hibernate.cfg Configuration addAnnotatedClass

List of usage examples for org.hibernate.cfg Configuration addAnnotatedClass

Introduction

In this page you can find the example usage for org.hibernate.cfg Configuration addAnnotatedClass.

Prototype

@SuppressWarnings({ "unchecked" })
public Configuration addAnnotatedClass(Class annotatedClass) 

Source Link

Document

Read metadata from the annotations associated with this class.

Usage

From source file:de.fau.osr.core.db.HibernateUtil.java

License:Open Source License

/**
 * generates configuration from hibernate.cfg.xml and adds all persistent classes to it
 * @return generated configuration/*from ww w . j  a va  2  s.  c  o m*/
 */
public static Configuration getConfiguration() {
    Configuration configuration = new Configuration().configure();
    //add persistent classes
    for (Class<?> clazz : getPersistentClasses()) {
        configuration.addAnnotatedClass(clazz);
    }
    return configuration;
}

From source file:de.fhg.fokus.odp.rssservlet.utils.HibernateConfig.java

License:Open Source License

/**
 * Gets the connection./*from  www.  j  a v a  2  s  .  co  m*/
 * 
 * @param contextPath
 *            the context path
 * @return the connection
 */
public Configuration getConnection(ServletContext context) {

    Properties props = new Properties();
    props.setProperty("hibernate.connection.driver_class",
            LiferayPropsUtil.getValueFromKey("jdbc.default.driverClassName", context));
    props.setProperty("hibernate.connection.url",
            LiferayPropsUtil.getValueFromKey("jdbc.default.url", context));
    props.setProperty("hibernate.connection.username",
            LiferayPropsUtil.getValueFromKey("jdbc.default.username", context));
    props.setProperty("hibernate.connection.password",
            LiferayPropsUtil.getValueFromKey("jdbc.default.password", context));
    props.setProperty("hibernate.connection.pool_size", "20");

    props.setProperty("hibernate.c3p0.min_size", "5");
    props.setProperty("hibernate.c3p0.max_size", "20");
    props.setProperty("hibernate.c3p0.timeout", "300");
    props.setProperty("hibernate.c3p0.max_statements", "50");

    LOG.debug("Using the following props for hibernate: {}", props);

    Configuration conf = new Configuration();
    conf.setProperties(props);
    conf.addAnnotatedClass(CommentaryEntity.class);
    return conf;
}

From source file:de.huberlin.hiwaydb.useDB.HiwayDB.java

License:Apache License

private SessionFactory getSQLSession() {
    try {//from  w w  w  .j av  a  2 s  . com

        if (dbURL != null && username != null) {

            Configuration configuration = new Configuration();

            configuration.setProperty("hibernate.connection.url", dbURL);
            configuration.setProperty("hibernate.connection.username", username);
            if (this.password != null) {
                configuration.setProperty("hibernate.connection.password", this.password);
            } else {
                configuration.setProperty("hibernate.connection.password", "");
            }

            configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
            configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");

            configuration.setProperty("connection.provider_class",
                    "org.hibernate.connection.C3P0ConnectionProvider");

            configuration.setProperty("hibernate.transaction.factory_class",
                    "org.hibernate.transaction.JDBCTransactionFactory");

            configuration.setProperty("hibernate.current_session_context_class", "thread");

            configuration.setProperty("hibernate.initialPoolSize", "20");
            configuration.setProperty("hibernate.c3p0.min_size", "5");
            configuration.setProperty("hibernate.c3p0.max_size", "1000");

            configuration.setProperty("hibernate.maxIdleTime", "3600");
            configuration.setProperty("hibernate.c3p0.maxIdleTimeExcessConnections", "300");

            configuration.setProperty("hibernate.c3p0.timeout", "330");
            configuration.setProperty("hibernate.c3p0.idle_test_period", "300");

            configuration.setProperty("hibernate.c3p0.max_statements", "13000");
            configuration.setProperty("hibernate.c3p0.maxStatementsPerConnection", "30");

            configuration.setProperty("hibernate.c3p0.acquire_increment", "10");

            configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Hiwayevent.class);
            configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.File.class);
            configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Inoutput.class);
            configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Invocation.class);
            configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Task.class);
            configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Userevent.class);
            configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Workflowrun.class);
            configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Accesstime.class);

            StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
                    .applySettings(configuration.getProperties());
            SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());
            System.out.println(
                    "Session Factory Starten!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! NEUE Tocks gesetzt");
            return sessionFactory;

        }

        java.io.File f = new java.io.File(configFile);

        Configuration configuration = new Configuration().configure(f);
        StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
                .applySettings(configuration.getProperties());
        SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());
        return sessionFactory;

    } catch (Throwable ex) {
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex);
    }

}

From source file:de.huberlin.hiwaydb.useDB.HiwayDB.java

License:Apache License

private SessionFactory getSQLSessionMessung() {
    try {/*from   ww  w .j  av a  2s. co  m*/

        String url = dbURL.substring(0, dbURL.lastIndexOf("/")) + "/messungen";

        Configuration configuration = new Configuration();

        configuration.setProperty("hibernate.connection.url", url);
        configuration.setProperty("hibernate.connection.username", username);
        if (this.password != null) {
            configuration.setProperty("hibernate.connection.password", this.password);
        } else {
            configuration.setProperty("hibernate.connection.password", "");
        }

        configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
        configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");

        configuration.setProperty("connection.provider_class",
                "org.hibernate.connection.C3P0ConnectionProvider");

        configuration.setProperty("hibernate.transaction.factory_class",
                "org.hibernate.transaction.JDBCTransactionFactory");

        configuration.setProperty("hibernate.current_session_context_class", "thread");

        configuration.setProperty("hibernate.initialPoolSize", "20");
        configuration.setProperty("hibernate.c3p0.min_size", "5");
        configuration.setProperty("hibernate.c3p0.max_size", "1000");

        configuration.setProperty("hibernate.maxIdleTime", "3600");
        configuration.setProperty("hibernate.c3p0.maxIdleTimeExcessConnections", "300");

        configuration.setProperty("hibernate.c3p0.timeout", "330");
        configuration.setProperty("hibernate.c3p0.idle_test_period", "300");

        configuration.setProperty("hibernate.c3p0.max_statements", "13000");
        configuration.setProperty("hibernate.c3p0.maxStatementsPerConnection", "30");

        configuration.setProperty("hibernate.c3p0.acquire_increment", "10");

        configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Accesstime.class);

        StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
                .applySettings(configuration.getProperties());
        SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());

        return sessionFactory;

    } catch (Throwable ex) {
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex);
    }

}

From source file:de.huberlin.hiwaydb.useDB.HiwayDBNoSQL.java

License:Apache License

private SessionFactory getSQLSession() {
    try {/*from  w w w .ja v  a 2s  .  c o  m*/
        Configuration configuration = new Configuration();
        String url = this.dbURLSQL.substring(0, this.dbURLSQL.lastIndexOf("/")) + "/messungen";
        System.out.println(url);

        configuration.setProperty("hibernate.connection.url", url);
        configuration.setProperty("hibernate.connection.username", this.usernameSQL);
        configuration.setProperty("hibernate.connection.password", this.passwordSQL);
        configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
        configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
        configuration.setProperty("connection.provider_class",
                "org.hibernate.connection.C3P0ConnectionProvider");
        configuration.setProperty("hibernate.transaction.factory_class",
                "org.hibernate.transaction.JDBCTransactionFactory");
        configuration.setProperty("hibernate.current_session_context_class", "thread");
        configuration.setProperty("hibernate.initialPoolSize", "10");
        configuration.setProperty("hibernate.c3p0.min_size", "5");
        configuration.setProperty("hibernate.c3p0.max_size", "300");
        configuration.setProperty("hibernate.maxIdleTime", "3600");
        configuration.setProperty("hibernate.c3p0.maxIdleTimeExcessConnections", "300");
        configuration.setProperty("hibernate.c3p0.timeout", "330");
        configuration.setProperty("hibernate.c3p0.idle_test_period", "300");
        configuration.setProperty("hibernate.c3p0.max_statements", "3000");
        configuration.setProperty("hibernate.c3p0.maxStatementsPerConnection", "20");
        configuration.setProperty("hibernate.c3p0.acquire_increment", "1");
        configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Accesstime.class);

        StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
                .applySettings(configuration.getProperties());
        SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());
        return sessionFactory;
    } catch (Throwable ex) {
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex);
    }

}

From source file:de.huberlin.hiwaydb.useDB.Reader.java

License:Apache License

private static SessionFactory getSQLSession(String db) {
    try {/*from w w  w.  j a v a  2 s.c o  m*/
        Configuration configuration = new Configuration();
        System.out.println("connect to: " + db);

        configuration.setProperty("hibernate.connection.url", "jdbc:mysql://127.0.0.1/" + db);
        configuration.setProperty("hibernate.connection.username", "root");
        configuration.setProperty("hibernate.connection.password", "reverse");
        configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");
        configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
        configuration.setProperty("connection.provider_class",
                "org.hibernate.connection.C3P0ConnectionProvider");
        configuration.setProperty("hibernate.transaction.factory_class",
                "org.hibernate.transaction.JDBCTransactionFactory");
        configuration.setProperty("hibernate.current_session_context_class", "thread");
        configuration.setProperty("hibernate.initialPoolSize", "20");
        configuration.setProperty("hibernate.c3p0.min_size", "5");
        configuration.setProperty("hibernate.c3p0.max_size", "1000");
        configuration.setProperty("hibernate.maxIdleTime", "3600");
        configuration.setProperty("hibernate.c3p0.maxIdleTimeExcessConnections", "300");
        configuration.setProperty("hibernate.c3p0.timeout", "330");
        configuration.setProperty("hibernate.c3p0.idle_test_period", "300");
        configuration.setProperty("hibernate.c3p0.max_statements", "13000");
        configuration.setProperty("hibernate.c3p0.maxStatementsPerConnection", "30");
        configuration.setProperty("hibernate.c3p0.acquire_increment", "10");
        configuration.addAnnotatedClass(de.huberlin.hiwaydb.dal.Accesstime.class);

        StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
                .applySettings(configuration.getProperties());
        SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());
        return sessionFactory;
    } catch (Throwable ex) {
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

From source file:de.jpdigital.maven.plugins.hibernate4ddl.GenerateDdlMojo.java

License:Open Source License

/**
 * Helper method for generating the DDL classes for a specific dialect. This
 * is place for the real work is done. The method first creates an instance
 * of the {@link Configuration} class from Hibernate an puts the appropriate
 * values into it. It then creates an instance of the {@link SchemaExport}
 * class from the Hibernate API, configured this class, for example by
 * setting {@code format} to {@code true} so that the generated SQL files
 * are formatted nicely. After that it calls the
 * {@link SchemaExport#execute(boolean, boolean, boolean, boolean)} method
 * which will create the SQL script file. The method is called in a way
 * which requires <em>no</em> database connection.
 *
 *
 * @param dialect       The dialect for which the DDL files is generated.
 * @param entityClasses The entity classes for which the DDL file is
 *                      generated./*from   www  .  ja  va 2 s  . c om*/
 *
 * @throws MojoFailureException if something goes wrong.
 */
private void generateDdl(final Dialect dialect, final Set<Class<?>> entityClasses) throws MojoFailureException {
    final Configuration configuration = new Configuration();

    processPersistenceXml(configuration);

    configuration.setProperty("hibernate.hbm2ddl.auto", "create");

    for (final Class<?> entityClass : entityClasses) {
        configuration.addAnnotatedClass(entityClass);
    }

    configuration.setProperty("hibernate.dialect", dialect.getDialectClass());

    final SchemaExport export;
    if (useEnvers) {
        export = new EnversSchemaGenerator(configuration).export();
    } else {
        export = new SchemaExport(configuration);

    }
    export.setDelimiter(";");

    final Path tmpDir;
    try {
        tmpDir = Files.createTempDirectory("maven-hibernate-ddl-plugin");
    } catch (IOException ex) {
        throw new MojoFailureException("Failed to create work dir.", ex);
    }
    export.setOutputFile(
            String.format("%s/%s.sql", tmpDir.toString(), dialect.name().toLowerCase(Locale.ENGLISH)));
    export.setFormat(true);
    export.execute(true, false, false, true);

    writeOutputFile(dialect, tmpDir);
}

From source file:de.juplo.plugins.hibernate4.Hbm2DdlMojo.java

License:Apache License

@Override
public void execute() throws MojoFailureException, MojoExecutionException {
    if (skip) {/*from ww w.  ja v a 2  s  .  co  m*/
        getLog().info("Exectuion of hibernate4-maven-plugin:export was skipped!");
        project.getProperties().setProperty(EXPORT_SKIPPED_PROPERTY, "true");
        return;
    }

    File dir = new File(outputDirectory);
    if (!dir.exists())
        throw new MojoExecutionException(
                "Cannot scan for annotated classes in " + outputDirectory + ": directory does not exist!");

    Map<String, String> md5s;
    boolean modified = false;
    File saved = new File(buildDirectory + File.separator + MD5S);

    if (saved.exists()) {
        try {
            FileInputStream fis = new FileInputStream(saved);
            ObjectInputStream ois = new ObjectInputStream(fis);
            md5s = (HashMap<String, String>) ois.readObject();
            ois.close();
        } catch (Exception e) {
            md5s = new HashMap<String, String>();
            getLog().warn("Cannot read timestamps from saved: " + e);
        }
    } else {
        md5s = new HashMap<String, String>();
        try {
            saved.createNewFile();
        } catch (IOException e) {
            getLog().warn("Cannot create saved for timestamps: " + e);
        }
    }

    ClassLoader classLoader = null;
    try {
        getLog().debug("Creating ClassLoader for project-dependencies...");
        List<String> classpathFiles = project.getCompileClasspathElements();
        if (scanTestClasses)
            classpathFiles.addAll(project.getTestClasspathElements());
        URL[] urls = new URL[classpathFiles.size()];
        for (int i = 0; i < classpathFiles.size(); ++i) {
            getLog().debug("Dependency: " + classpathFiles.get(i));
            urls[i] = new File(classpathFiles.get(i)).toURI().toURL();
        }
        classLoader = new URLClassLoader(urls, getClass().getClassLoader());
    } catch (Exception e) {
        getLog().error("Error while creating ClassLoader!", e);
        throw new MojoExecutionException(e.getMessage());
    }

    Set<Class<?>> classes = new TreeSet<Class<?>>(new Comparator<Class<?>>() {
        @Override
        public int compare(Class<?> a, Class<?> b) {
            return a.getName().compareTo(b.getName());
        }
    });

    try {
        AnnotationDB db = new AnnotationDB();
        getLog().info("Scanning directory " + outputDirectory + " for annotated classes...");
        URL dirUrl = dir.toURI().toURL();
        db.scanArchives(dirUrl);
        if (scanTestClasses) {
            dir = new File(testOutputDirectory);
            if (!dir.exists())
                throw new MojoExecutionException("Cannot scan for annotated test-classes in "
                        + testOutputDirectory + ": directory does not exist!");
            getLog().info("Scanning directory " + testOutputDirectory + " for annotated classes...");
            dirUrl = dir.toURI().toURL();
            db.scanArchives(dirUrl);
        }

        Set<String> classNames = new HashSet<String>();
        if (db.getAnnotationIndex().containsKey(Entity.class.getName()))
            classNames.addAll(db.getAnnotationIndex().get(Entity.class.getName()));
        if (db.getAnnotationIndex().containsKey(MappedSuperclass.class.getName()))
            classNames.addAll(db.getAnnotationIndex().get(MappedSuperclass.class.getName()));
        if (db.getAnnotationIndex().containsKey(Embeddable.class.getName()))
            classNames.addAll(db.getAnnotationIndex().get(Embeddable.class.getName()));

        MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
        for (String name : classNames) {
            Class<?> annotatedClass = classLoader.loadClass(name);
            classes.add(annotatedClass);
            InputStream is = annotatedClass.getResourceAsStream(annotatedClass.getSimpleName() + ".class");
            byte[] buffer = new byte[1024 * 4]; // copy data in 4MB-chunks
            int i;
            while ((i = is.read(buffer)) > -1)
                digest.update(buffer, 0, i);
            is.close();
            byte[] bytes = digest.digest();
            BigInteger bi = new BigInteger(1, bytes);
            String newMd5 = String.format("%0" + (bytes.length << 1) + "x", bi);
            String oldMd5 = !md5s.containsKey(name) ? "" : md5s.get(name);
            if (!newMd5.equals(oldMd5)) {
                getLog().debug("Found new or modified annotated class: " + name);
                modified = true;
                md5s.put(name, newMd5);
            } else {
                getLog().debug(oldMd5 + " -> class unchanged: " + name);
            }
        }
    } catch (ClassNotFoundException e) {
        getLog().error("Error while adding annotated classes!", e);
        throw new MojoExecutionException(e.getMessage());
    } catch (Exception e) {
        getLog().error("Error while scanning!", e);
        throw new MojoFailureException(e.getMessage());
    }

    if (classes.isEmpty())
        throw new MojoFailureException("No annotated classes found in directory " + outputDirectory);

    getLog().debug("Detected classes with mapping-annotations:");
    for (Class<?> annotatedClass : classes)
        getLog().debug("  " + annotatedClass.getName());

    Properties properties = new Properties();

    /** Try to read configuration from properties-file */
    try {
        File file = new File(hibernateProperties);
        if (file.exists()) {
            getLog().info("Reading properties from file " + hibernateProperties + "...");
            properties.load(new FileInputStream(file));
        } else
            getLog().info("No hibernate-properties-file found! (Checked path: " + hibernateProperties + ")");
    } catch (IOException e) {
        getLog().error("Error while reading properties!", e);
        throw new MojoExecutionException(e.getMessage());
    }

    /** Overwrite values from propertie-file or set, if given */
    if (driverClassName != null) {
        if (properties.containsKey(DRIVER_CLASS))
            getLog().debug("Overwriting property " + DRIVER_CLASS + "=" + properties.getProperty(DRIVER_CLASS)
                    + " with the value " + driverClassName);
        else
            getLog().debug("Using the value " + driverClassName);
        properties.setProperty(DRIVER_CLASS, driverClassName);
    }
    if (url != null) {
        if (properties.containsKey(URL))
            getLog().debug("Overwriting property " + URL + "=" + properties.getProperty(URL)
                    + " with the value " + url);
        else
            getLog().debug("Using the value " + url);
        properties.setProperty(URL, url);
    }
    if (username != null) {
        if (properties.containsKey(USERNAME))
            getLog().debug("Overwriting property " + USERNAME + "=" + properties.getProperty(USERNAME)
                    + " with the value " + username);
        else
            getLog().debug("Using the value " + username);
        properties.setProperty(USERNAME, username);
    }
    if (password != null) {
        if (properties.containsKey(PASSWORD))
            getLog().debug("Overwriting property " + PASSWORD + "=" + properties.getProperty(PASSWORD)
                    + " with the value " + password);
        else
            getLog().debug("Using the value " + password);
        properties.setProperty(PASSWORD, password);
    }
    if (hibernateDialect != null) {
        if (properties.containsKey(DIALECT))
            getLog().debug("Overwriting property " + DIALECT + "=" + properties.getProperty(DIALECT)
                    + " with the value " + hibernateDialect);
        else
            getLog().debug("Using the value " + hibernateDialect);
        properties.setProperty(DIALECT, hibernateDialect);
    }
    if (hibernateNamingStrategy != null) {
        if (properties.contains(NAMING_STRATEGY))
            getLog().debug("Overwriting property " + NAMING_STRATEGY + "="
                    + properties.getProperty(NAMING_STRATEGY) + " with the value " + hibernateNamingStrategy);
        else
            getLog().debug("Using the value " + hibernateNamingStrategy);
        properties.setProperty(NAMING_STRATEGY, hibernateNamingStrategy);
    }

    /** The generated SQL varies with the dialect! */
    if (md5s.containsKey(DIALECT)) {
        String dialect = properties.getProperty(DIALECT);
        if (md5s.get(DIALECT).equals(dialect))
            getLog().debug("SQL-dialect unchanged.");
        else {
            getLog().debug("SQL-dialect changed: " + dialect);
            modified = true;
            md5s.put(DIALECT, dialect);
        }
    } else {
        modified = true;
        md5s.put(DIALECT, properties.getProperty(DIALECT));
    }

    if (properties.isEmpty()) {
        getLog().error("No properties set!");
        throw new MojoFailureException("Hibernate-Configuration is missing!");
    }

    Configuration config = new Configuration();
    config.setProperties(properties);

    if (properties.containsKey(NAMING_STRATEGY)) {
        String namingStrategy = properties.getProperty(NAMING_STRATEGY);
        getLog().debug("Explicitly set NamingStrategy: " + namingStrategy);
        try {
            @SuppressWarnings("unchecked")
            Class<NamingStrategy> namingStrategyClass = (Class<NamingStrategy>) Class.forName(namingStrategy);
            config.setNamingStrategy(namingStrategyClass.newInstance());
        } catch (Exception e) {
            getLog().error("Error setting NamingStrategy", e);
            throw new MojoExecutionException(e.getMessage());
        }
    }

    getLog().debug("Adding annotated classes to hibernate-mapping-configuration...");
    for (Class<?> annotatedClass : classes) {
        getLog().debug("Class " + annotatedClass);
        config.addAnnotatedClass(annotatedClass);
    }

    Target target = null;
    try {
        target = Target.valueOf(this.target.toUpperCase());
    } catch (IllegalArgumentException e) {
        getLog().error("Invalid value for configuration-option \"target\": " + this.target);
        getLog().error("Valid values are: NONE, SCRIPT, EXPORT, BOTH");
        throw new MojoExecutionException("Invalid value for configuration-option \"target\"");
    }
    Type type = null;
    try {
        type = Type.valueOf(this.type.toUpperCase());
    } catch (IllegalArgumentException e) {
        getLog().error("Invalid value for configuration-option \"type\": " + this.type);
        getLog().error("Valid values are: NONE, CREATE, DROP, BOTH");
        throw new MojoExecutionException("Invalid value for configuration-option \"type\"");
    }

    if (target.equals(Target.SCRIPT) || target.equals(Target.NONE)) {
        project.getProperties().setProperty(EXPORT_SKIPPED_PROPERTY, "true");
    }
    if (!modified && !target.equals(Target.SCRIPT) && !target.equals(Target.NONE) && !force) {
        getLog().info("No modified annotated classes found and dialect unchanged.");
        getLog().info("Skipping schema generation!");
        project.getProperties().setProperty(EXPORT_SKIPPED_PROPERTY, "true");
        return;
    }

    getLog().info("Gathered hibernate-configuration (turn on debugging for details):");
    for (Entry<Object, Object> entry : properties.entrySet())
        getLog().info("  " + entry.getKey() + " = " + entry.getValue());

    Connection connection = null;
    try {
        /**
         * The connection must be established outside of hibernate, because
         * hibernate does not use the context-classloader of the current
         * thread and, hence, would not be able to resolve the driver-class!
         */
        switch (target) {
        case EXPORT:
        case BOTH:
            switch (type) {
            case CREATE:
            case DROP:
            case BOTH:
                Class driverClass = classLoader.loadClass(properties.getProperty(DRIVER_CLASS));
                getLog().debug("Registering JDBC-driver " + driverClass.getName());
                DriverManager.registerDriver(new DriverProxy((Driver) driverClass.newInstance()));
                getLog().debug("Opening JDBC-connection to " + properties.getProperty(URL) + " as "
                        + properties.getProperty(USERNAME) + " with password "
                        + properties.getProperty(PASSWORD));
                connection = DriverManager.getConnection(properties.getProperty(URL),
                        properties.getProperty(USERNAME), properties.getProperty(PASSWORD));
            }
        }
    } catch (ClassNotFoundException e) {
        getLog().error("Dependency for driver-class " + properties.getProperty(DRIVER_CLASS) + " is missing!");
        throw new MojoExecutionException(e.getMessage());
    } catch (Exception e) {
        getLog().error("Cannot establish connection to database!");
        Enumeration<Driver> drivers = DriverManager.getDrivers();
        if (!drivers.hasMoreElements())
            getLog().error("No drivers registered!");
        while (drivers.hasMoreElements())
            getLog().debug("Driver: " + drivers.nextElement());
        throw new MojoExecutionException(e.getMessage());
    }

    ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
    MavenLogAppender.startPluginLog(this);
    try {
        /**
         * Change class-loader of current thread, so that hibernate can
         * see all dependencies!
         */
        Thread.currentThread().setContextClassLoader(classLoader);

        SchemaExport export = new SchemaExport(config, connection);
        export.setOutputFile(outputFile);
        export.setDelimiter(delimiter);
        export.setFormat(format);
        export.execute(target, type);

        for (Object exception : export.getExceptions())
            getLog().debug(exception.toString());
    } finally {
        /** Stop Log-Capturing */
        MavenLogAppender.endPluginLog(this);

        /** Restore the old class-loader (TODO: is this really necessary?) */
        Thread.currentThread().setContextClassLoader(contextClassLoader);

        /** Close the connection */
        try {
            if (connection != null)
                connection.close();
        } catch (SQLException e) {
            getLog().error("Error while closing connection: " + e.getMessage());
        }
    }

    /** Write md5-sums for annotated classes to file */
    try {
        FileOutputStream fos = new FileOutputStream(saved);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(md5s);
        oos.close();
        fos.close();
    } catch (Exception e) {
        getLog().error("Cannot write md5-sums to file: " + e);
    }
}

From source file:de.lemo.dms.connectors.clix2010.ClixHibernateUtil.java

License:Open Source License

private static SessionFactory createSessionFactory(final DBConfigObject dbConfig) {
    final Configuration cfg = new Configuration();

    // add properties from files
    for (final Entry<String, String> entry : dbConfig.getProperties().entrySet()) {
        cfg.setProperty(entry.getKey(), entry.getValue());
    }//from  ww w.java  2 s .co  m

    // add mapping classes
    cfg.addAnnotatedClass(EComponent.class);
    cfg.addAnnotatedClass(LearningLog.class);
    cfg.addAnnotatedClass(ChatProtocol.class);
    cfg.addAnnotatedClass(EComponentType.class);
    cfg.addAnnotatedClass(EComposing.class);
    cfg.addAnnotatedClass(ExercisePersonalised.class);
    cfg.addAnnotatedClass(ForumEntry.class);
    cfg.addAnnotatedClass(ForumEntryState.class);
    cfg.addAnnotatedClass(Person.class);
    cfg.addAnnotatedClass(PlatformGroup.class);
    cfg.addAnnotatedClass(PlatformGroupSpecification.class);
    cfg.addAnnotatedClass(Portfolio.class);
    cfg.addAnnotatedClass(PortfolioLog.class);
    cfg.addAnnotatedClass(TeamExerciseGroup.class);
    cfg.addAnnotatedClass(TGroupFullSpecification.class);
    cfg.addAnnotatedClass(TQtiContent.class);
    cfg.addAnnotatedClass(TQtiTestItemD.class);
    cfg.addAnnotatedClass(TQtiTestPlayerResp.class);
    cfg.addAnnotatedClass(TQtiTestPlayer.class);
    cfg.addAnnotatedClass(TQtiContentStructure.class);
    cfg.addAnnotatedClass(TQtiContentComposing.class);
    cfg.addAnnotatedClass(TQtiEvalAssessment.class);
    cfg.addAnnotatedClass(WikiEntry.class);
    cfg.addAnnotatedClass(ExerciseGroup.class);
    cfg.addAnnotatedClass(PersonComponentAssignment.class);
    cfg.addAnnotatedClass(ScormSessionTimes.class);
    cfg.addAnnotatedClass(BiTrackContentImpressions.class);

    return cfg.buildSessionFactory();
}

From source file:de.lemo.dms.connectors.lemo_0_8.HibernateUtil.java

License:Open Source License

private static SessionFactory createSessionFactory(final DBConfigObject dbconfig) {
    final Configuration cfg = new Configuration();

    // add properties from files
    for (final Entry<String, String> entry : dbconfig.getProperties().entrySet()) {
        cfg.setProperty(entry.getKey(), entry.getValue());
    }/* w  ww .j  av a2  s  .  com*/

    // Meta
    cfg.addAnnotatedClass(ConfigLMS.class);
    cfg.addAnnotatedClass(IDMappingLMS.class);
    cfg.addAnnotatedClass(PlatformLMS.class);

    // Object-classes
    cfg.addAnnotatedClass(AssignmentLMS.class);
    cfg.addAnnotatedClass(ChatLMS.class);
    cfg.addAnnotatedClass(CourseLMS.class);
    cfg.addAnnotatedClass(ForumLMS.class);
    cfg.addAnnotatedClass(GroupLMS.class);
    cfg.addAnnotatedClass(QuestionLMS.class);
    cfg.addAnnotatedClass(QuizLMS.class);
    cfg.addAnnotatedClass(ResourceLMS.class);
    cfg.addAnnotatedClass(RoleLMS.class);
    cfg.addAnnotatedClass(ScormLMS.class);
    cfg.addAnnotatedClass(UserLMS.class);
    cfg.addAnnotatedClass(WikiLMS.class);
    cfg.addAnnotatedClass(LevelLMS.class);

    // Association-classes

    cfg.addAnnotatedClass(CourseAssignmentLMS.class);
    cfg.addAnnotatedClass(CourseChatLMS.class);
    cfg.addAnnotatedClass(CourseForumLMS.class);
    cfg.addAnnotatedClass(CourseGroupLMS.class);
    cfg.addAnnotatedClass(CourseQuizLMS.class);
    cfg.addAnnotatedClass(CourseResourceLMS.class);
    cfg.addAnnotatedClass(CourseScormLMS.class);
    cfg.addAnnotatedClass(CourseUserLMS.class);
    cfg.addAnnotatedClass(CourseWikiLMS.class);
    cfg.addAnnotatedClass(GroupUserLMS.class);
    cfg.addAnnotatedClass(QuizQuestionLMS.class);
    cfg.addAnnotatedClass(QuizUserLMS.class);
    cfg.addAnnotatedClass(LevelCourseLMS.class);
    cfg.addAnnotatedClass(LevelAssociationLMS.class);

    // Log-classes

    cfg.addAnnotatedClass(AssignmentLogLMS.class);
    cfg.addAnnotatedClass(ChatLogLMS.class);
    cfg.addAnnotatedClass(CourseLogLMS.class);
    cfg.addAnnotatedClass(ForumLogLMS.class);
    cfg.addAnnotatedClass(ResourceLogLMS.class);
    cfg.addAnnotatedClass(ScormLogLMS.class);
    cfg.addAnnotatedClass(QuestionLogLMS.class);
    cfg.addAnnotatedClass(QuizLogLMS.class);
    cfg.addAnnotatedClass(WikiLogLMS.class);

    return cfg.buildSessionFactory();
}