@Override
  public String doConvert() {
    final InfoLines msgs = new InfoLines();

    try {
      final Processor proc = getProc();

      proc.parse();

      if (getGenerate()) {
        proc.generateZoneinfoFiles(
            Util.buildPath(true, getRootdir(), "/", "zoneinfo"), true); // doLinks
      }

      if (getCompare()) {
        proc.compare(msgs);
      }

      for (final String msg : msgs) {
        System.out.print(msg);
      }
    } catch (final Throwable t) {
      t.printStackTrace();
      msgs.exceptionMsg(t);
    }

    return msgs.toString();
  }
  @Override
  public synchronized List<String> schemaStatus() {
    if (buildSchema == null) {
      final InfoLines infoLines = new InfoLines();

      infoLines.addLn("Schema build has not been started");

      return infoLines;
    }

    return buildSchema.infoLines;
  }
    @Override
    public void run() {
      try {
        infoLines.addLn("Started export of schema");

        final long startTime = System.currentTimeMillis();

        final SchemaExport se = new SchemaExport(getHibConfiguration());

        se.setFormat(true); // getFormat());
        se.setHaltOnError(false); // getHaltOnError());
        se.setOutputFile(getSchemaOutFile());
        /* There appears to be a bug in the hibernate code. Everybody initialises
        this to /import.sql. Set to null causes an NPE
        Make sure it refers to a non-existant file */
        // se.setImportFile("not-a-file.sql");

        setStatus(statusRunning);
        se.execute(
            false, // script - causes write to System.out if true
            getExport(),
            false, // drop
            true); //   getCreate());

        final long millis = System.currentTimeMillis() - startTime;
        final long seconds = millis / 1000;
        final long minutes = seconds / 60;

        infoLines.addLn("Elapsed time: " + minutes + ":" + twoDigits(seconds - (minutes * 60)));
        setStatus(statusDone);
      } catch (final Throwable t) {
        error(t);
        infoLines.exceptionMsg(t);
        setStatus(statusFailed);
      } finally {
        infoLines.addLn("Schema build completed");
        export = false;
      }
    }