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.mapping.Mapping; import net.sf.minuteProject.loader.mapping.MappingHolder; import net.sf.minuteProject.loader.mapping.node.Bean; import net.sf.minuteProject.loader.mapping.node.BeanMapping; import net.sf.minuteProject.loader.mapping.node.BeanMappings; import net.sf.minuteProject.loader.mapping.node.Beans; import net.sf.minuteProject.loader.mapping.node.Flow; import net.sf.minuteProject.loader.mapping.node.Flows; import net.sf.minuteProject.loader.mapping.node.Service; import net.sf.minuteProject.loader.mapping.node.Services; import net.sf.minuteProject.loader.mapping.node.Validation; import net.sf.minuteProject.loader.mapping.node.Validations; import net.sf.minuteProject.loader.presentation.Presentation; import net.sf.minuteProject.loader.presentation.PresentationHolder; 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 MappingGenerator extends AbstractGenerator { private static Logger logger = Logger.getLogger(MappingGenerator.class); private MappingHolder mappingHolder; private InitHolder initholder; private Targetlocation targetlocation; private Target target; public MappingGenerator(String configurationFile) { super(configurationFile); } public static void main(String args[]) throws Exception { if (args.length < 1) { System.exit(1); } MappingGenerator mappingGenerator = new MappingGenerator(args[0]); mappingGenerator.init(args); } private void init(String args[]) throws Exception{ Date startDate = new Date(); logger.info("start time = "+new Date()); loadInit(args[0]); loadDefinition(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) { loadTarget (target); } } } private void loadDefinition(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 { Mapping loader = new Mapping(dir, filename); mappingHolder = 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("mapBean")) generateMapBeanSpecific(template); if (template.getScopeSpecificValue().equals("bean")) generateBeanSpecific(template); if (template.getScopeSpecificValue().equals("validation")) generateValidationSpecific(template); if (template.getScopeSpecificValue().equals("flow")) generateFlowSpecific(template); if (template.getScopeSpecificValue().equals("service")) generateServiceSpecific(template); } private void generateFlowSpecific (Template template) throws MinuteProjectException { Flows flows = mappingHolder.getBeanMap().getFlows(); if (flows != null) { for (Flow flow : flows.getFlows()) { writeTemplateResult(flow, template); } } } private void generateValidationSpecific (Template template) throws MinuteProjectException { Validations validations = mappingHolder.getBeanMap().getValidations(); if (validations != null) { for (Validation validation : validations.getValidations()) { boolean isToGenerate = true; if (template.getCheckTemplateToGenerate()!=null && template.getCheckTemplateToGenerate().equals("true")) { if (!template.isToGenerate(validation)) { isToGenerate =false; } } if (isToGenerate) // writeTemplateResult(bean, template); writeTemplateResult(validation, template); } } } private void generateMapBeanSpecific(Template template) throws MinuteProjectException { BeanMappings beanMappings = mappingHolder.getBeanMap().getMappings(); if (beanMappings != null) { for (BeanMapping mapping : beanMappings.getMappings()) { writeTemplateResult(mapping, template); } } } private void generateBeanSpecific(Template template) throws MinuteProjectException { Beans beans = mappingHolder.getBeanMap().getBeans(); if (beans!=null) { for (Bean bean : beans.getBeans()) { boolean isToGenerate = true; if (template.getCheckTemplateToGenerate()!=null && template.getCheckTemplateToGenerate().equals("true")) { if (!template.isToGenerate(bean)) { isToGenerate =false; } } if (isToGenerate) writeTemplateResult(bean, template); } } } private void generateServiceSpecific(Template template) throws MinuteProjectException { Services services = mappingHolder.getBeanMap().getServices(); if (services!=null) { for (Service service : services.getServices()) { boolean isToGenerate = true; if (template.getCheckTemplateToGenerate()!=null && template.getCheckTemplateToGenerate().equals("true")) { if (!template.isToGenerate(service)) { isToGenerate =false; } } if (isToGenerate) writeTemplateResult(service, template); } } } // // private void generateBlockSpecific(Template template) throws Exception { // List<Block> blocks = presentationholder.getDictionary().getBlocks(); // for (Block block : blocks) { // if (template.isToGenerate(block)) { // writeTemplateResult(block, template); // } // } // } // // private void generateWindowSpecific(Template template) throws Exception { // 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()); } }