package net.sf.minuteProject.application; import java.util.Date; import java.util.Iterator; import java.util.List; import net.sf.minuteProject.configuration.bean.AbstractConfiguration; import net.sf.minuteProject.configuration.bean.AbstractConfigurationRoot; import net.sf.minuteProject.configuration.bean.GeneratorBean; import net.sf.minuteProject.configuration.bean.Target; import net.sf.minuteProject.configuration.bean.Template; import net.sf.minuteProject.exception.MinuteProjectException; import net.sf.minuteProject.loader.init.Init; import net.sf.minuteProject.loader.init.InitHolder; import net.sf.minuteProject.loader.init.node.Configuration; import net.sf.minuteProject.loader.init.node.Definition; import net.sf.minuteProject.loader.init.node.Targetlocation; import net.sf.minuteProject.loader.presentation.Presentation; import net.sf.minuteProject.loader.presentation.PresentationHolder; import net.sf.minuteProject.loader.presentation.node.Block; import net.sf.minuteProject.loader.presentation.node.Flow; import net.sf.minuteProject.loader.presentation.node.Page; import net.sf.minuteProject.loader.presentation.node.Window; import net.sf.minuteProject.plugin.xml.schema.XmlSchemaUtils; import net.sf.minuteProject.utils.BslaLibraryUtils; import net.sf.minuteProject.utils.CommonUtils; import net.sf.minuteProject.utils.ConvertUtils; import net.sf.minuteProject.utils.DatabaseUtils; import net.sf.minuteProject.utils.FormatUtils; import net.sf.minuteProject.utils.ModelUtils; import net.sf.minuteProject.utils.ViewUtils; import org.apache.log4j.Logger; import org.apache.velocity.VelocityContext; public class PresentationFlowGenerator extends AbstractGenerator { private static Logger logger = Logger.getLogger(ModelGenerator.class); private PresentationHolder presentationholder; private InitHolder initholder; private Targetlocation targetlocation; private Target target; public PresentationFlowGenerator(String configurationFile) { super(configurationFile); } public static void main(String args[]) throws Exception { if (args.length < 1) { System.exit(1); } PresentationFlowGenerator presentationFlowGenerator = new PresentationFlowGenerator(args[0]); presentationFlowGenerator.init(args); } private void init(String args[]) throws Exception{ Date startDate = new Date(); logger.info("start time = "+new Date()); loadInit(args[0]); loadPresentationDefinition(initholder); loadTarget(initholder); generate(initholder.getConfiguration().getTarget()); Date endDate = new Date(); logger.info("time taken : "+(endDate.getTime()-startDate.getTime())+ "ms."); } private void loadInit(String filename) throws Exception { Init loader = new Init(filename); initholder = loader.load(); } private void loadTarget(InitHolder initholder) throws Exception { Configuration configuration = initholder.getConfiguration(); if (configuration!=null) { Targetlocation target = configuration.getTargetlocation(); if (target!=null) { // String filename = target.getFilename(); // String dir = target.getDir(); loadTarget (target); } } } private void loadPresentationDefinition(InitHolder initholder) throws Exception { Configuration configuration = initholder.getConfiguration(); if (configuration!=null) { Definition definition = configuration.getDefinition(); if (definition!=null) { String filename = definition.getFilename(); String dir = definition.getDir(); loadPresentationDefinition (dir, filename); } } } private void loadTarget(Targetlocation initTarget) throws Exception { target = populateTarget(initTarget); loadTarget(initholder.getConfiguration(), target); } private void loadPresentationDefinition(String dir, String filename) throws Exception { Presentation loader = new Presentation(dir, filename); presentationholder = loader.load(); } private Target populateTarget (Targetlocation initTarget) { Target target = new Target(); target.setDir(initTarget.getDir()); target.setFileName(initTarget.getFilename()); return target; } // public void loadTarget (AbstractConfigurationRoot abstractConfigurationRoot, Target target) throws Exception { // loadConfiguration(abstractConfigurationRoot, getTargetConfigurationInputStream(abstractConfigurationRoot, target), GENERATOR_TARGET_RULES); // complementWithTargetInfo(abstractConfigurationRoot, target); // } @Override public AbstractConfiguration getConfigurationRoot() { // TODO Auto-generated method stub return null; } @Override public String getConfigurationRulesFile() { // TODO Auto-generated method stub return null; } public String getPropertyConfigurationRulesFile() { return null; } public void generate(Template template) throws MinuteProjectException { if (template.getScopeSpecificValue().equals("page")) generatePageSpecific(template); if (template.getScopeSpecificValue().equals("flow")) generateFlowSpecific(template); if (template.getScopeSpecificValue().equals("block")) generateBlockSpecific(template); if (template.getScopeSpecificValue().equals("window")) generateWindowSpecific(template); } private void generatePageSpecific(Template template) throws MinuteProjectException { List<Page> pages = presentationholder.getDictionary().getPages(); for (Page page : pages) { writeTemplateResult(page, template); } } private void generateFlowSpecific(Template template) throws MinuteProjectException { List<Flow> flows = presentationholder.getDictionary().getFlows(); for (Flow flow : flows) { writeTemplateResult(flow, template); } } private void generateBlockSpecific(Template template) throws MinuteProjectException { List<Block> blocks = presentationholder.getDictionary().getBlocks(); for (Block block : blocks) { if (template.isToGenerate(block)) { writeTemplateResult(block, template); } } } private void generateWindowSpecific(Template template) throws MinuteProjectException { List<Window> windows = presentationholder.getDictionary().getWindows(); for (Window window : windows) { if (template.isToGenerate(window)) { writeTemplateResult(window, template); } } } // protected void writeTemplateResult(GeneratorBean bean, Template template) throws MinuteProjectException { // String outputFilename = template.getGeneratorOutputFileNameForConfigurationBean(bean, template); // VelocityContext context = getVelocityContext(template); // String beanName = getAbstractBeanName(bean); // context.put(beanName, bean); // context.put("template", template); // putCommonContextObject(context, template); // produce(context, template, outputFilename); // } protected void putCommonContextObject(VelocityContext context, Template template) { putStandardContextObject(context); putPluginContextObject(context, template); } protected void putStandardContextObject(VelocityContext context) { context.put("convertUtils", new ConvertUtils()); context.put("commonUtils", new CommonUtils()); context.put("viewUtils", new ViewUtils()); context.put("formatUtils", new FormatUtils()); context.put("bslaLibraryUtils", new BslaLibraryUtils()); context.put("databaseUtils", new DatabaseUtils()); context.put("modelUtils", new ModelUtils()); } }