package net.sf.minuteProject.application;
import java.util.Date;
import java.util.List;
import net.sf.minuteProject.configuration.bean.GeneratorBean;
import net.sf.minuteProject.configuration.bean.Model;
import net.sf.minuteProject.configuration.bean.Package;
import net.sf.minuteProject.configuration.bean.Template;
import net.sf.minuteProject.configuration.bean.model.data.Component;
import net.sf.minuteProject.configuration.bean.model.data.Function;
import net.sf.minuteProject.configuration.bean.model.data.Table;
import net.sf.minuteProject.configuration.bean.model.data.View;
import net.sf.minuteProject.exception.MinuteProjectException;
import net.sf.minuteProject.integration.bean.BasicIntegrationConfiguration;
import org.apache.log4j.Logger;
import org.apache.velocity.VelocityContext;
/**
* @author Florian Adler
*
*/
public class ModelViewGenerator extends ModelGenerator {
private static Logger logger = Logger.getLogger(ModelGenerator.class);
/**
* Constructs the generator with its configuration
*
* @param configurationFile
*/
public ModelViewGenerator(String configurationFile) {
super(configurationFile);
}
public ModelViewGenerator(BasicIntegrationConfiguration bic) {
super(bic);
}
public static void main(String args[]) {
String config;
if (args.length < 1) {
System.exit(1);
}
config = args[0];
Date startDate = new Date();
logger.info("start time = " + new Date());
ModelViewGenerator generator = new ModelViewGenerator(config);
try {
generator.generate();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Date endDate = new Date();
logger.info("time taken : " + (endDate.getTime() - startDate.getTime())
/ 1000 + "s.");
}
protected void loadModel(Model model) {
super.loadModel(model);
model.getBusinessModel().complementDataModelWithViews();
model.getBusinessModel().complementService();
}
public Model getModel() {
return super.getModel();
}
public void setModel(Model model) {
super.setModel(model);
}
protected void generateArtifactsByEntity(Template template) throws MinuteProjectException {
super.generateArtifactsByEntity(template);
for (View view : getModel().getBusinessModel().getBusinessPackage().getViews()) {
generateArtifactsByEntity (view, template);
}
}
protected void generateArtifactsByField(Template template) throws MinuteProjectException {
super.generateArtifactsByField(template);
for (View view : getModel().getBusinessModel().getBusinessPackage().getViews()) {
generateArtifactsByField(template, view);
}
}
protected void generateArtifactsByPackage(Template template) throws MinuteProjectException {
super.generateArtifactsByPackage(template);
List<Package> packages = getModel().getBusinessModel().getBusinessPackage().getPackageViews();
for (Package pack : packages) {
writeTemplateResult(pack, template);
}
}
protected void putCommonContextObject(VelocityContext context, Template template) {
putStandardContextObject(context);
putPluginContextObject(context, template);
context.put("model", getModel());
}
}