Package org.objectstyle.wolips.eomodeler.core.sql

Source Code of org.objectstyle.wolips.eomodeler.core.sql.MigrationGenerator

package org.objectstyle.wolips.eomodeler.core.sql;

import java.util.LinkedList;
import java.util.List;

import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.objectstyle.wolips.eomodeler.core.Activator;
import org.objectstyle.wolips.eomodeler.core.model.EOEntity;
import org.objectstyle.wolips.eomodeler.core.model.EOEntityForest;
import org.objectstyle.wolips.eomodeler.core.model.EOModel;
import org.objectstyle.wolips.thirdparty.velocity.WOLipsVelocityUtils;
import org.objectstyle.wolips.thirdparty.velocity.resourceloader.ResourceLoader;

public class MigrationGenerator {
  public static String generate(EOModel model, List<EOEntity> entities) throws Exception {
    List<EOEntity> generateEntities;
    if (entities == null || entities.isEmpty()) {
      generateEntities = new LinkedList<EOEntity>();
      for (EOEntity entity : model.getEntities()) {
        if (!entity.isPrototype()) {
          generateEntities.add(entity);
        }
      }
    } else {
      generateEntities = entities;
    }
    EOEntityForest entityForest = new EOEntityForest();
    entityForest.add(generateEntities);
    generateEntities = entityForest.breadthFirst();

    VelocityEngine velocityEngine = WOLipsVelocityUtils.createVelocityEngine("EOGenerator", Activator.getDefault().getBundle(), null, null, true, ResourceLoader.class);
    VelocityContext context = new VelocityContext();

    List<String> entityMigrations = new LinkedList<String>();
    for (EOEntity entity : generateEntities) {
      context.put("entity", entity);
      String entityMigration = WOLipsVelocityUtils.writeTemplateToString(velocityEngine, context, "EntityMigration0.java");
      entityMigrations.add(entityMigration);
    }

    List<String> foreignKeyMigrations = new LinkedList<String>();
    for (EOEntity entity : generateEntities) {
      context.put("entity", entity);
      String foreignKeyMigration = WOLipsVelocityUtils.writeTemplateToString(velocityEngine, context, "ForeignKeyMigration0.java");
      foreignKeyMigrations.add(foreignKeyMigration);
    }

    context.remove("entity");
    context.put("model", model);
    context.put("entityMigrations", entityMigrations);
    context.put("foreignKeyMigrations", foreignKeyMigrations);
    String modelMigration = WOLipsVelocityUtils.writeTemplateToString(velocityEngine, context, "Migration0.java");
    return modelMigration;
  }
}
TOP

Related Classes of org.objectstyle.wolips.eomodeler.core.sql.MigrationGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.