Ejemplo n.º 1
0
 private void importScript(NamedReader namedReader, List<Exporter> exporters) throws Exception {
   BufferedReader reader = new BufferedReader(namedReader.getReader());
   String[] statements = importSqlCommandExtractor.extractCommands(reader);
   if (statements != null) {
     for (String statement : statements) {
       if (statement != null) {
         String trimmedSql = statement.trim();
         if (trimmedSql.endsWith(";")) {
           trimmedSql = trimmedSql.substring(0, statement.length() - 1);
         }
         if (!StringHelper.isEmpty(trimmedSql)) {
           try {
             for (Exporter exporter : exporters) {
               if (exporter.acceptsImportScripts()) {
                 exporter.export(trimmedSql);
               }
             }
           } catch (Exception e) {
             throw new ImportScriptException(
                 "Error during statement execution (file: '"
                     + namedReader.getName()
                     + "'): "
                     + trimmedSql,
                 e);
           }
         }
       }
     }
   }
 }
Ejemplo n.º 2
0
  public void execute(Target output, Type type) {
    if ((outputFile == null && output == Target.NONE) || type == SchemaExport.Type.NONE) {
      return;
    }
    exceptions.clear();

    LOG.runningHbm2ddlSchemaExport();

    final List<NamedReader> importFileReaders = new ArrayList<NamedReader>();
    for (String currentFile : importFiles.split(",")) {
      try {
        final String resourceName = currentFile.trim();
        InputStream stream = ConfigHelper.getResourceAsStream(resourceName);
        importFileReaders.add(new NamedReader(resourceName, stream));
      } catch (HibernateException e) {
        LOG.debugf("Import file not found: %s", currentFile);
      }
    }

    final List<Exporter> exporters = new ArrayList<Exporter>();
    try {
      // prepare exporters
      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      if (output.doScript()) {
        exporters.add(new ScriptExporter());
      }
      if (outputFile != null) {
        exporters.add(new FileExporter(outputFile));
      }
      if (output.doExport()) {
        exporters.add(new DatabaseExporter(connectionHelper, sqlExceptionHelper));
      }

      // perform exporters
      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      if (type.doDrop()) {
        perform(dropSQL, exporters);
      }
      if (type.doCreate()) {
        perform(createSQL, exporters);
        if (!importFileReaders.isEmpty()) {
          for (NamedReader namedReader : importFileReaders) {
            importScript(namedReader, exporters);
          }
        }
      }
    } catch (Exception e) {
      exceptions.add(e);
      LOG.schemaExportUnsuccessful(e);
    } finally {
      // release exporters
      // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      for (Exporter exporter : exporters) {
        try {
          exporter.release();
        } catch (Exception ignore) {
        }
      }

      // release the named readers from import scripts
      for (NamedReader namedReader : importFileReaders) {
        try {
          namedReader.getReader().close();
        } catch (Exception ignore) {
        }
      }
      LOG.schemaExportComplete();
    }
  }