List of usage examples for org.hibernate.tool.hbm2ddl SchemaExport getExceptions
public List getExceptions()
From source file:com.yahoo.elide.datastores.hibernate3.HibernateDataStoreSupplier.java
License:Apache License
@Override public DataStore get() { // Add additional checks to our static check mappings map. // NOTE: This is a bit hacky. We need to do a major overhaul on our test architecture TestCheckMappings.MAPPINGS.put("filterCheck", Filtered.FilterCheck.class); TestCheckMappings.MAPPINGS.put("filterCheck3", Filtered.FilterCheck3.class); // method to force class initialization Configuration configuration = new Configuration(); try {/*ww w . j a v a 2 s .c om*/ ClassScanner.getAnnotatedClasses(Parent.class.getPackage(), Entity.class) .forEach(configuration::addAnnotatedClass); } catch (MappingException e) { throw new RuntimeException(e); } SessionFactory sessionFactory = configuration.configure("hibernate.cfg.xml") .setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread") .setProperty(Environment.URL, "jdbc:mysql://localhost:" + System.getProperty("mysql.port", "3306") + "/root?serverTimezone=UTC") .setProperty(Environment.USER, "root").setProperty(Environment.PASS, "root").buildSessionFactory(); // create example tables from beans SchemaExport schemaExport = new SchemaExport(configuration).setHaltOnError(true); schemaExport.drop(false, true); schemaExport.execute(false, true, false, true); if (!schemaExport.getExceptions().isEmpty()) { throw new RuntimeException(schemaExport.getExceptions().toString()); } return new HibernateStore(sessionFactory, true, ScrollMode.FORWARD_ONLY); }
From source file:com.yahoo.elide.datastores.hibernate5.HibernateDataStoreSupplier.java
License:Apache License
@Override public DataStore get() { // Add additional checks to our static check mappings map. // NOTE: This is a bit hacky. We need to do a major overhaul on our test architecture TestCheckMappings.MAPPINGS.put("filterCheck", Filtered.FilterCheck.class); TestCheckMappings.MAPPINGS.put("filterCheck3", Filtered.FilterCheck3.class); // method to force class initialization MetadataSources metadataSources = new MetadataSources(new StandardServiceRegistryBuilder() .configure("hibernate.cfg.xml").applySetting(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread") .applySetting(Environment.URL, "jdbc:mysql://localhost:" + System.getProperty("mysql.port", "3306") + "/root?serverTimezone=UTC") .applySetting(Environment.USER, "root").applySetting(Environment.PASS, "root").build()); try {/*from w w w .j a v a 2 s. c o m*/ ClassScanner.getAnnotatedClasses(Parent.class.getPackage(), Entity.class) .forEach(metadataSources::addAnnotatedClass); } catch (MappingException e) { throw new RuntimeException(e); } MetadataImplementor metadataImplementor = (MetadataImplementor) metadataSources.buildMetadata(); // create example tables from beans SchemaExport schemaExport = new SchemaExport(metadataImplementor); //.setHaltOnError(true); schemaExport.drop(false, true); schemaExport.execute(false, true, false, true); if (!schemaExport.getExceptions().isEmpty()) { throw new RuntimeException(schemaExport.getExceptions().toString()); } return new HibernateStore(metadataImplementor.buildSessionFactory(), true, ScrollMode.FORWARD_ONLY); }
From source file:com.yahoo.elide.datastores.hibernate5.HibernateEntityManagerDataStoreSupplier.java
License:Apache License
@Override public DataStore get() { // Add additional checks to our static check mappings map. // NOTE: This is a bit hacky. We need to do a major overhaul on our test architecture TestCheckMappings.MAPPINGS.put("filterCheck", Filtered.FilterCheck.class); TestCheckMappings.MAPPINGS.put("filterCheck3", Filtered.FilterCheck3.class); Map<String, Object> options = new HashMap<>(); ArrayList<Class> bindClasses = new ArrayList<>(); try {/*w w w. j a v a 2s .c o m*/ bindClasses.addAll(ClassScanner.getAnnotatedClasses(Parent.class.getPackage(), Entity.class)); } catch (MappingException e) { throw new IllegalStateException(e); } options.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver"); options.put("javax.persistence.jdbc.url", JDBC_PREFIX + System.getProperty(MYSQL_PORT_PROPERTY, MYSQL_PORT) + JDBC_SUFFIX); options.put("javax.persistence.jdbc.user", ROOT); options.put("javax.persistence.jdbc.password", ROOT); options.put(AvailableSettings.LOADED_CLASSES, bindClasses); EntityManagerFactory emf = Persistence.createEntityManagerFactory("elide-tests", options); HibernateEntityManager em = (HibernateEntityManager) emf.createEntityManager(); // method to force class initialization MetadataSources metadataSources = new MetadataSources(new StandardServiceRegistryBuilder() .configure("hibernate.cfg.xml").applySetting(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread") .applySetting(Environment.URL, JDBC_PREFIX + System.getProperty(MYSQL_PORT_PROPERTY, MYSQL_PORT) + JDBC_SUFFIX) .applySetting(Environment.USER, ROOT).applySetting(Environment.PASS, ROOT).build()); try { ClassScanner.getAnnotatedClasses(Parent.class.getPackage(), Entity.class) .forEach(metadataSources::addAnnotatedClass); } catch (MappingException e) { throw new IllegalStateException(e); } MetadataImplementor metadataImplementor = (MetadataImplementor) metadataSources.buildMetadata(); EnumSet<TargetType> type = EnumSet.of(TargetType.DATABASE); // create example tables from beans SchemaExport schemaExport = new SchemaExport(); schemaExport.drop(type, metadataImplementor); schemaExport.execute(type, SchemaExport.Action.CREATE, metadataImplementor); if (!schemaExport.getExceptions().isEmpty()) { throw new IllegalStateException(schemaExport.getExceptions().toString()); } return new AbstractHibernateStore.Builder(em).withScrollEnabled(true) .withScrollMode(ScrollMode.FORWARD_ONLY).build(); }
From source file:com.yahoo.elide.datastores.multiplex.bridgeable.BridgeableStoreSupplier.java
License:Apache License
@Override public DataStore get() { // method to force class initialization MetadataSources metadataSources = new MetadataSources(new StandardServiceRegistryBuilder() .configure("hibernate.cfg.xml").applySetting(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread") .applySetting(Environment.URL, "jdbc:mysql://localhost:" + System.getProperty("mysql.port", "3306") + "/root?serverTimezone=UTC") .applySetting(Environment.USER, "root").applySetting(Environment.PASS, "root").build()); metadataSources.addAnnotatedClass(HibernateUser.class); MetadataImplementor metadataImplementor = (MetadataImplementor) metadataSources.buildMetadata(); // create example tables from beans SchemaExport schemaExport = new SchemaExport(metadataImplementor); //.setHaltOnError(true); schemaExport.drop(false, true);//from w ww. ja v a 2 s . co m schemaExport.execute(false, true, false, true); if (!schemaExport.getExceptions().isEmpty()) { throw new RuntimeException(schemaExport.getExceptions().toString()); } LATEST_HIBERNATE_STORE = new HibernateStore.Builder(metadataImplementor.buildSessionFactory()) .withScrollEnabled(true).withScrollMode(ScrollMode.FORWARD_ONLY).build(); BridgeableRedisStore hbaseStore = new BridgeableRedisStore(); return new MultiplexManager(LATEST_HIBERNATE_STORE, hbaseStore); }
From source file:com.yahoo.elide.hibernate.AHibernateTest.java
License:Apache License
protected static void databaseManagerInit() { // method to force class initialization Configuration c = new Configuration(); try {// ww w .j a va2s . com ClassScanner.getAnnotatedClasses(Parent.class.getPackage(), Entity.class).forEach(c::addAnnotatedClass); } catch (MappingException e) { throw new RuntimeException(e); } sessionFactory = c.configure("hibernate.cfg.xml") .setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread") .setProperty(Environment.URL, "jdbc:mysql://localhost:" + System.getProperty("mysql.port", "3306") + "/root") .setProperty(Environment.USER, "root").setProperty(Environment.PASS, "root").buildSessionFactory(); // create Example tables from beans SchemaExport se = new SchemaExport(c).setHaltOnError(true); se.drop(false, true); se.execute(false, true, false, true); if (se.getExceptions().size() != 0) { throw new RuntimeException("" + se.getExceptions()); } hibernateManager = new HibernateManager(sessionFactory); }
From source file:de.juplo.plugins.hibernate4.Hbm2DdlMojo.java
License:Apache License
@Override public void execute() throws MojoFailureException, MojoExecutionException { if (skip) {// w w w. jav a2s.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:edu.ku.brc.specify.tools.SpecifySchemaGenerator.java
License:Open Source License
/** * Creates the Schema./* w w w. j a va 2s . c om*/ * @param driverInfo the driver info to use * @param connectionStr the connection string for creating or opening a database * @param hostname the hostname (localhost) * @param databaseName the database name * @param user the username * @param passwd the password (clear text) * @param doUpdate tells it to update the schema instead of creating it */ protected static void doGenSchema(final DatabaseDriverInfo driverInfo, final String connectionStr, // might be a create or an open connection string final String user, final String passwd, final boolean doUpdate) { // setup the Hibernate configuration Configuration hibCfg = new AnnotationConfiguration(); hibCfg.setProperties(getHibernateProperties(driverInfo, connectionStr, user, passwd, doUpdate)); hibCfg.configure(); if (doUpdate) { SchemaUpdate schemaUpdater = new SchemaUpdate(hibCfg); log.info("Updating schema"); //System.exit(0); boolean doScript = false; log.info("Updating the DB schema"); schemaUpdater.execute(doScript, true); log.info("DB schema Updating completed"); // log the exceptions that occurred List<?> exceptions = schemaUpdater.getExceptions(); for (Object o : exceptions) { Exception e = (Exception) o; log.error(e.getMessage()); } } else { SchemaExport schemaExporter = new SchemaExport(hibCfg); schemaExporter.setDelimiter(";"); log.info("Generating schema"); //System.exit(0); boolean printToScreen = false; boolean exportToDb = true; boolean justDrop = false; boolean justCreate = true; log.info("Creating the DB schema"); schemaExporter.execute(printToScreen, exportToDb, justDrop, justCreate); log.info("DB schema creation completed"); // log the exceptions that occurred List<?> exceptions = schemaExporter.getExceptions(); for (Object o : exceptions) { Exception e = (Exception) o; log.error(e.getMessage()); } } }
From source file:lucee.runtime.orm.hibernate.HibernateSessionFactory.java
License:Open Source License
private static void schemaExport(Log log, Configuration configuration, DatasourceConnection dc, SessionFactoryData data) throws PageException, SQLException, IOException { ORMConfiguration ormConf = data.getORMConfiguration(); if (ORMConfiguration.DBCREATE_NONE == ormConf.getDbCreate()) { return;/*from w w w .j a v a2 s . com*/ } else if (ORMConfiguration.DBCREATE_DROP_CREATE == ormConf.getDbCreate()) { SchemaExport export = new SchemaExport(configuration); export.setHaltOnError(true); export.execute(false, true, false, false); printError(log, data, export.getExceptions(), false); executeSQLScript(ormConf, dc); } else if (ORMConfiguration.DBCREATE_UPDATE == ormConf.getDbCreate()) { SchemaUpdate update = new SchemaUpdate(configuration); update.setHaltOnError(true); update.execute(false, true); printError(log, data, update.getExceptions(), false); } }
From source file:net.commerce.zocalo.hibernate.HibernateSingletonTest.java
License:Open Source License
public void xtestSchemaUpdate() { Configuration config = new Configuration(); HibernateTestUtil.addClasses(config); SchemaExport export = new SchemaExport(config); export.create(true, false);/* w w w .j a v a 2 s. c o m*/ assertEquals(0, export.getExceptions().size()); }
From source file:org.bonitasoft.engine.business.data.impl.SchemaManager.java
License:Open Source License
@SuppressWarnings("unchecked") public List<Exception> drop(final Set<String> managedClasses) { final SchemaExport export = new SchemaExport(buildConfiguration(managedClasses)); export.drop(Target.EXPORT);//from w w w. jav a 2s .co m return export.getExceptions(); }