Beispiel #1
0
  @Override
  public void generate(Model model, MolgenisOptions options) throws Exception {
    Template template = createTemplate("/" + this.getClass().getSimpleName() + ".java.ftl");
    Map<String, Object> templateArgs = createTemplateArguments(options);

    List<Entity> entityList = model.getEntities();
    entityList = MolgenisModel.sortEntitiesByDependency(entityList, model); // side
    // effect?

    File target = new File(this.getSourcePath(options) + "/test/TestDataSet.java");
    boolean created = target.getParentFile().mkdirs();
    if (!created && !target.getParentFile().exists()) {
      throw new IOException("could not create " + target.getParentFile());
    }

    String packageName = "test";

    templateArgs.put(
        "databaseImp",
        options.mapper_implementation.equals(MolgenisOptions.MapperImplementation.JPA)
            ? "jpa"
            : "jdbc");
    templateArgs.put("model", model);
    templateArgs.put("entities", entityList);
    templateArgs.put("package", packageName);

    OutputStream targetOut = new FileOutputStream(target);
    template.process(templateArgs, new OutputStreamWriter(targetOut, Charset.forName("UTF-8")));
    targetOut.close();

    logger.info("generated " + target);
  }
  @Override
  public void generate(Model model, MolgenisOptions options) throws Exception {
    Template template = createTemplate("/" + getClass().getSimpleName() + ".java.ftl");
    Map<String, Object> templateArgs = createTemplateArguments(options);

    File target = new File(this.getDocumentationPath(options) + "/entitymodel.html");
    target.getParentFile().mkdirs();

    List<Entity> entityList = model.getEntities();
    List<Module> moduleList = model.getModules();
    entityList = MolgenisModel.sortEntitiesByDependency(entityList, model); // side effect?

    templateArgs.put("model", model);
    templateArgs.put("entities", entityList);
    templateArgs.put("modules", moduleList);
    OutputStream targetOut = new FileOutputStream(target);
    template.process(templateArgs, new OutputStreamWriter(targetOut));
    targetOut.close();

    logger.info("generated " + target);
  }
  @Override
  public void generate(Model model, MolgenisOptions options) throws Exception {
    Template template = createTemplate("/" + this.getClass().getSimpleName() + ".java.ftl");
    Map<String, Object> templateArgs = createTemplateArguments(options);

    List<Entity> entityList = model.getEntities();
    entityList = MolgenisModel.sortEntitiesByDependency(entityList, model); // side effect?
    // String packageName =
    // this.getClass().getPackage().toString().substring(Generator.class.getPackage().toString().length());

    File target = new File(this.getSourcePath(options) + APP_DIR + "/ExcelImport.java");
    target.getParentFile().mkdirs();

    templateArgs.put("model", model);
    templateArgs.put("entities", entityList);
    templateArgs.put("package", APP_DIR);
    OutputStream targetOut = new FileOutputStream(target);
    template.process(templateArgs, new OutputStreamWriter(targetOut));
    targetOut.close();

    logger.info("generated " + target);
  }
  @Override
  public void generate(Model model, MolgenisOptions options) throws Exception {
    Template template = createTemplate("/" + this.getClass().getSimpleName() + ".java.ftl");
    Map<String, Object> templateArgs = createTemplateArguments(options);

    List<Entity> entityList = model.getEntities();
    entityList = MolgenisModel.sortEntitiesByDependency(entityList, model); // side
    // effect?
    File target = new File(this.getSourcePath(options) + APP_DIR + "/CsvEntityExporter.java");
    boolean created = target.getParentFile().mkdirs();
    if (!created && !target.getParentFile().exists()) {
      throw new IOException("could not create " + target.getParentFile());
    }

    templateArgs.put("model", model);
    templateArgs.put("entities", entityList);
    templateArgs.put("package", APP_DIR);
    OutputStream targetOut = new FileOutputStream(target);
    template.process(templateArgs, new OutputStreamWriter(targetOut, Charset.forName("UTF-8")));
    targetOut.close();

    logger.info("generated " + target);
  }
  /**
   * Construct a MOLGENIS generator
   *
   * @param options with generator settings
   * @param generatorsToUse optional list of generator classes to include
   * @throws Exception
   */
  public <E extends Generator> Molgenis(
      MolgenisOptions options, String outputPath, Class<? extends Generator>... generatorsToUse)
      throws Exception {
    BasicConfigurator.configure();

    this.loadFieldTypes();

    this.options = options;

    Logger.getLogger("freemarker.cache").setLevel(Level.INFO);
    logger.info("\nMOLGENIS version " + org.molgenis.Version.convertToString());
    logger.info("working dir: " + System.getProperty("user.dir"));

    // clean options
    if (outputPath != null) {
      // workaround for java string escaping bug in freemarker (see
      // UsedMolgenisOptionsGen.ftl)
      outputPath = outputPath.replace('\\', '/');
      if (!outputPath.endsWith("/")) outputPath = outputPath + "/";
    }

    options.output_src = outputPath != null ? outputPath + options.output_src : options.output_src;
    if (!options.output_src.endsWith("/"))
      options.output_src = options.output_src.endsWith("/") + "/";
    options.output_hand =
        outputPath != null ? outputPath + options.output_hand : options.output_hand;
    if (!options.output_hand.endsWith("/")) options.output_hand = options.output_hand + "/";
    options.output_web = outputPath != null ? outputPath + options.output_web : options.output_web;
    if (!options.output_web.endsWith("/")) options.output_web = options.output_web + "/";
    options.output_doc = outputPath != null ? outputPath + options.output_doc : options.output_doc;
    if (!options.output_doc.endsWith("/")) options.output_doc = options.output_doc + "/";

    // DOCUMENTATION
    if (options.generate_doc) {
      generators.add(new FileFormatDocGen());
      // check if dot is available to prevent error lists in the build logs
      try {
        Runtime.getRuntime().exec("dot -?");
        generators.add(new DotDocGen());
        generators.add(new DotDocMinimalGen());
      } catch (Exception e) {
        // dot not available
      }
      generators.add(new ObjectModelDocGen());
      generators.add(new DotDocModuleDependencyGen());
    } else {
      logger.info("Skipping documentation ....");
    }

    if (options.generate_jpa) {
      if (options.generate_db) {
        generators.add(new DatabaseConfigGen());
      }

      generators.add(new DataTypeGen());
      generators.add(new EntityMetaDataGen());
      generators.add(new JpaRepositoryGen());
      generators.add(new JDBCMetaDatabaseGen());

      if (options.generate_persistence) {
        generators.add(new PersistenceGen());
      }

      if (options.generate_jpa_repository_source) {
        generators.add(new JpaRepositorySourceGen());
      }
    } else {
      logger.info("SEVERE: Skipping ALL SQL ....");
    }

    if (options.generate_entityio) {
      generators.add(new EntitiesImporterGen());
      generators.add(new EntitiesValidatorGen());
    }

    // clean out generators
    List<Generator> use = new ArrayList<Generator>();
    if (!ArrayUtils.isEmpty(generatorsToUse)) {
      for (Class<? extends Generator> c : generatorsToUse) {
        use.add(c.newInstance());
      }
      generators = use;
    }

    logger.debug("\nUsing generators:\n" + toString());

    // parsing model
    model = MolgenisModel.parse(options);
  }