List of usage examples for org.hibernate.tool.hbm2ddl SchemaExport setDelimiter
public SchemaExport setDelimiter(String delimiter)
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 w ww. j a v a 2 s. c o m*/ * * @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.jpdigital.maven.plugins.hibernate5ddl.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 ww w. j a v a 2 s.c om * * @throws MojoFailureException if something goes wrong. */ private void generateDdl(final Dialect dialect, final Set<Class<?>> entityClasses) throws MojoFailureException { final StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder(); processPersistenceXml(registryBuilder); if (createDropStatements) { registryBuilder.applySetting("hibernate.hbm2ddl.auto", "create-drop"); } else { registryBuilder.applySetting("hibernate.hbm2ddl.auto", "create"); } registryBuilder.applySetting("hibernate.dialect", dialect.getDialectClass()); final StandardServiceRegistry standardRegistry = registryBuilder.build(); final MetadataSources metadataSources = new MetadataSources(standardRegistry); for (final Class<?> entityClass : entityClasses) { metadataSources.addAnnotatedClass(entityClass); } final SchemaExport export = new SchemaExport(); // final SchemaExport export = new SchemaExport( // (MetadataImplementor) metadata, true); export.setDelimiter(";"); final Path tmpDir; try { tmpDir = Files.createTempDirectory("maven-hibernate5-ddl-plugin"); } catch (IOException ex) { throw new MojoFailureException("Failed to create work dir.", ex); } final Metadata metadata = metadataSources.buildMetadata(); export.setOutputFile( String.format("%s/%s.sql", tmpDir.toString(), dialect.name().toLowerCase(Locale.ENGLISH))); export.setFormat(true); if (createDropStatements) { export.execute(EnumSet.of(TargetType.SCRIPT), SchemaExport.Action.BOTH, metadata); } else { export.execute(EnumSet.of(TargetType.SCRIPT), SchemaExport.Action.CREATE, metadata); } 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 w w w. j av a2 s . com*/ 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.//from w ww . j a v a 2 s . 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:fr.mycellar.tools.DdlExport.java
License:Open Source License
public static void main(String... args) { org.hibernate.cfg.Configuration cfg = new org.hibernate.cfg.Configuration(); cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect"); cfg.addAnnotatedClass(Image.class); cfg.addAnnotatedClass(Address.class); cfg.addAnnotatedClass(Map.class); cfg.addAnnotatedClass(Position.class); cfg.addAnnotatedClass(IdentifiedEntity.class); cfg.addAnnotatedClass(NamedEntity.class); cfg.addAnnotatedClass(Bottle.class); cfg.addAnnotatedClass(Cellar.class); cfg.addAnnotatedClass(Input.class); cfg.addAnnotatedClass(Output.class); cfg.addAnnotatedClass(Stock.class); cfg.addAnnotatedClass(User.class); cfg.addAnnotatedClass(Appellation.class); cfg.addAnnotatedClass(Country.class); cfg.addAnnotatedClass(Format.class); cfg.addAnnotatedClass(Producer.class); cfg.addAnnotatedClass(Region.class); cfg.addAnnotatedClass(Varietal.class); cfg.addAnnotatedClass(Wine.class); cfg.addAnnotatedClass(Stack.class); cfg.addAnnotatedClass(CellarShare.class); cfg.addAnnotatedClass(Booking.class); cfg.addAnnotatedClass(BookingEvent.class); cfg.addAnnotatedClass(BookingBottle.class); cfg.addAnnotatedClass(Contact.class); cfg.addAnnotatedClass(Configuration.class); SchemaExport schemaExport = new SchemaExport(cfg); schemaExport.setDelimiter(";"); schemaExport.execute(true, false, false, true); }
From source file:io.milton.cloud.server.db.utils.SchemaExporter.java
License:Open Source License
/** * Method that actually creates the file. * * @param dbDialect to use//from w w w . j a v a2 s.c om */ public void generate() throws Exception { if (!outputDir.exists()) { outputDir.mkdirs(); } AnnotationConfiguration cfg; cfg = new AnnotationConfiguration(); cfg.setProperty("hibernate.hbm2ddl.auto", "create"); cfg.setNamingStrategy(new org.hibernate.cfg.ImprovedNamingStrategy()); for (String packageName : packageNames) { for (Class<Object> clazz : getClasses(packageName)) { cfg.addAnnotatedClass(clazz); } } List<File> outFiles = new ArrayList<>(); for (Dialect d : Dialect.values()) { cfg.setProperty("hibernate.dialect", d.getDialectClass()); SchemaExport export = new SchemaExport(cfg); export.setDelimiter(";"); File fOut = new File(outputDir, d.name().toLowerCase() + ".sql"); export.setOutputFile(fOut.getAbsolutePath()); export.execute(true, false, false, false); outFiles.add(fOut); } System.out.println("**********************************"); for (File f : outFiles) { System.out.println(" exported: " + f.getAbsolutePath()); } System.out.println("**********************************"); }
From source file:net.ggtools.maven.ddlgenerator.DDLGenerator.java
License:Open Source License
public void createSchema() { log.info("Exporting DDL file to " + ddlFile); createDirectoriesIfNeeded();/*from w ww .j a v a 2 s . c o m*/ puManager.preparePersistenceUnitInfos(); final PersistenceUnitInfo puInfo = puManager.obtainPersistenceUnitInfo(persistenceUnitName); final Ejb3Configuration ejb3Config = new Ejb3Configuration(); ejb3Config.configure(puInfo, configProperties); final Field field = ReflectionUtils.findField(Ejb3Configuration.class, "cfg"); ReflectionUtils.makeAccessible(field); final ServiceRegistry registry = new ServiceRegistryBuilder().applySettings(configProperties) .buildServiceRegistry(); final Configuration configuration = (Configuration) ReflectionUtils.getField(field, ejb3Config); final SchemaExport export = new SchemaExport(registry, configuration); export.setDelimiter(";"); // TODO introduce parameter export.setOutputFile(ddlFile.getAbsolutePath()); export.execute(true, false, false, true); }
From source file:net.leadware.hibernate4.maven.plugin.ShemaExportMojo.java
License:Apache License
public void execute() throws MojoExecutionException, MojoFailureException { // Un log/*from w w w .j a v a2 s .co m*/ getLog().info("Exportation de l'Unite de persistence: " + unitName + "."); // Initialisation du repertoire de sortie initOutputDirectory(); // Fichier de drop File dropFile = new File(dropOutputFile.trim()); // Fichier de drop File createFile = new File(createOutputFile.trim()); // Fichier de drop File updateFile = null; // Obtention du Thread courant final Thread currentThread = Thread.currentThread(); // Obtention du stream de sortie final PrintStream oldOut = System.out; // Obtention du classloader du thread en cours final ClassLoader oldClassLoader = currentThread.getContextClassLoader(); try { // Positionnement de la sortie par defaut System.setOut(new PrintStream(new ByteArrayOutputStream())); // Positionnement du classloader avec ajout des chemins de classe du projet maven sous-jacent currentThread.setContextClassLoader(buildClassLoader(oldClassLoader)); // Configuration EJB3 Ejb3Configuration jpaConfiguration = null; // Si le fichier de persistence est renseigne if (persistenceFile != null && !persistenceFile.trim().isEmpty()) { // On positionne le fichier de persistence jpaConfiguration = new Ejb3Configuration().addFile(persistenceFile).configure(unitName, null); } else { // Configuration EJB3 jpaConfiguration = new Ejb3Configuration().configure(unitName, null); } // Configuration Hibernate Configuration configuration = jpaConfiguration.getHibernateConfiguration(); // Si le dialect a ete precise dans la configuration du plugin if (dialect != null && !dialect.trim().isEmpty()) configuration.setProperty("hibernate.dialect", dialect.trim()); // Exporteur de schema SchemaExport exporter = new SchemaExport(configuration); // Positionnement du delimiteur exporter.setDelimiter(delimiter); // Positionnement du fichier de sortie en drop exporter.setOutputFile(dropFile.getAbsolutePath()); // Exportation des scripts drop exporter.execute(true, false, true, false); // Positionnement du fichier de sortie en create exporter.setOutputFile(createFile.getAbsolutePath()); // Exportation des scripts drop exporter.execute(true, false, false, true); // Si le chemin des scripts de mise a jour est positionne if (updateOutputFile != null && !updateOutputFile.trim().isEmpty()) { // Modificateur de schema SchemaUpdate updater = new SchemaUpdate(configuration); // Fichier de drop updateFile = new File(updateOutputFile.trim()); // Positionnement du fichier de sortie en create updater.setOutputFile(updateFile.getAbsolutePath()); // Exportation des scripts drop updater.execute(true, true); } // Si il ya des cripts additionnels if (extendedScripts != null) { // Parcours de la liste des scripts de creation for (String script : extendedScripts.getCreateScripts()) { // Tentative de construction d'un File sur le la chaine script File scriptFile = new File(script); // Si l'objet existe et est un fichier if (scriptFile.exists() && scriptFile.isFile()) { // Ajout de son contenu dans le fichier de script en cours FileUtils.fileAppend(createFile.getAbsolutePath(), "\n\n" + FileUtils.fileRead(scriptFile)); } else { // Ajout du script dans le fichier FileUtils.fileAppend(createFile.getAbsolutePath(), "\n\t" + script); } } // Parcours de la liste des scripts de suppression for (String script : extendedScripts.getDropScripts()) { // Tentative de construction d'un File sur le la chaine script File scriptFile = new File(script); // Si l'objet existe et est un fichier if (scriptFile.exists() && scriptFile.isFile()) { // Ajout de son contenu dans le fichier de script en cours FileUtils.fileAppend(dropFile.getAbsolutePath(), "\n\n" + FileUtils.fileRead(scriptFile)); } else { // Ajout du script dans le fichier FileUtils.fileAppend(dropFile.getAbsolutePath(), "\n\t" + script); } } // Si le chemin des scripts de mise a jour est positionne if (updateOutputFile != null && !updateOutputFile.trim().isEmpty()) { // Parcours de la liste des scripts de mise a jour for (String script : extendedScripts.getUpdateScripts()) { // Tentative de construction d'un File sur le la chaine script File scriptFile = new File(script); // Si l'objet existe et est un fichier if (scriptFile.exists() && scriptFile.isFile()) { // Ajout de son contenu dans le fichier de script en cours FileUtils.fileAppend(updateFile.getAbsolutePath(), "\n\n" + FileUtils.fileRead(scriptFile)); } else { // Ajout du script dans le fichier FileUtils.fileAppend(updateFile.getAbsolutePath(), "\n\t" + script); } } } } } catch (Exception e) { // On relance throw new MojoExecutionException(e.getMessage(), e); } finally { // On repositionne la sortie standard System.setOut(oldOut); // On repositionne le classloader currentThread.setContextClassLoader(oldClassLoader); } }
From source file:nl.strohalm.cyclos.setup.ExportScript.java
License:Open Source License
/** * Export the script for creating the database *///from w ww .j ava 2 s . c o m public void run() { if (!exportTo.isAbsolute()) { exportTo = new File(SystemUtils.getUserDir(), exportTo.getPath()); } // Resolve the file name if (exportTo.isDirectory()) { exportTo = new File(exportTo, "cyclos.ddl"); } // Create the directory if needed final File dir = exportTo.getParentFile(); if (!dir.exists()) { if (!dir.mkdirs()) { throw new IllegalStateException("Could not create directory: " + dir); } } final String fileName = exportTo.getAbsolutePath(); Setup.out.println(bundle.getString("export-script.start")); final SchemaExport schemaExport = new SchemaExport(configuration); schemaExport.setDelimiter(";"); schemaExport.setOutputFile(fileName); schemaExport.create(true, false); Setup.out.println(bundle.getString("export-script.end") + " " + fileName); }
From source file:org.ambraproject.hibernate.SchemaGenerator.java
License:Apache License
/** * Generate the sql for creating the schema * * @param dialect - Database dialect to use *//*from w w w. ja v a 2 s .c o m*/ public void generateSQL(Dialect dialect) { configuration.setProperty("hibernate.dialect", dialect.getDialectClass()); SchemaExport export = new SchemaExport(configuration); export.setDelimiter(";"); String outputFile = this.outputDir + File.separator + "ddl_" + dialect.name().toLowerCase() + ".sql"; export.setOutputFile(outputFile); export.execute(false, false, false, !updateSchema); }