package net.sf.minuteProject.configuration.bean; import java.util.ArrayList; import java.util.List; import net.sf.minuteProject.utils.io.FileUtils; public class TemplateTarget extends AbstractConfiguration{ public static final String MP_GENERATION_OUTPUT = "MP-GENERATION-OUTPUT"; private String rootdir, absoluteRootDir, canonicalDir; private String templatedir; private List<String> templatedirRefs; private String dir; private String outputdir, outputdirRoot; private String tool; private String libdir; private Target target; private List <Template> templates; protected String packageRoot; private boolean belongToPackage; private Boolean isGenerable; // public String getPropertyValue(String name) { // String s = super.getPropertyValue(name); // if (s!=null) return s; // if (target!=null) return target.getPropertyValue(name); // return null; // } public String getTemplateTargetPropertyValue(String name) { String s = getPropertyValue(name); if (s!=null) return s; if (target!=null) return target.getTargetPropertyValue(name); return null; } public String getPackageRoot() { if (packageRoot==null && getTarget()!=null){ Configuration configuration = (Configuration) getTarget().getAbstractConfigurationRoot(); setPackageRoot(configuration.getModel().getPackageRoot()); } return packageRoot; } public void setPackageRoot(String packageRoot) { this.packageRoot = packageRoot; } public void addTemplate (Template template) { if (templates==null) templates=new ArrayList<Template>(); template.setTemplateTarget(this); template.setOutputdir(getOutputdir()); if (template!=null && template.getPackageRoot()==null) template.setPackageRoot(getPackageRoot()); templates.add(template); } public List<Template> getTemplates() { if (templates==null) templates = new ArrayList<Template>(); return templates; } public void setTemplates(List<Template> templates) { this.templates = templates; } public String getDir() { if (getRootdir()==null && getTemplatedir()==null) return dir; return getRootdir(); } public void setDir(String dir) { this.dir = dir; } public void setOutputdirRoot(String outputdirRoot) { this.outputdirRoot = outputdirRoot; } public String getOutputdir() { String outputdirRoot = getOutputdirRoot(); if (outputdir==null && outputdirRoot==null) { String name; if (getTarget()!=null && getTarget().getAbstractConfigurationRoot()!=null && getTarget().getAbstractConfigurationRoot().getName()!=null) name = getTarget().getAbstractConfigurationRoot().getName(); else name = "project"; outputdir = getDir()+"/"+MP_GENERATION_OUTPUT+"/"+name; } return (outputdirRoot!=null)?outputdirRoot+"/"+outputdir:outputdir; } private String getOutputdirRoot() { if (outputdirRoot!=null) return outputdirRoot; if (getTarget()!=null) return getTarget().getOutputdirRoot(); return null; } public void setOutputdir(String outputdir) { this.outputdir = outputdir; } public String getLibdir() { return libdir; } public void setLibdir(String libdir) { this.libdir = libdir; } public String getTool() { return tool; } public void setTool(String tool) { this.tool = tool; } public Template getTemplate(String name) { List list = getTemplates(); if (list!=null) for (int i = 0; i<list.size();i++) { Template template = (Template)list.get(i); if (template.getName().equals(name)) return template; } return null; } public Target getTarget() { return target; } public void setTarget(Target target) { this.target = target; } public boolean isBelongToPackage() { return belongToPackage; } public void setBelongToPackage(boolean belongToPackage) { this.belongToPackage = belongToPackage; } public String getRootdir() { if (rootdir == null) rootdir = getTarget().getTemplatedirRoot(); return rootdir; } public String getAbsoluteRootDir() { if (absoluteRootDir==null) absoluteRootDir = getAbsoluteRootDir(getRootdir()); return absoluteRootDir; } private String getAbsoluteRootDir(String rootDir) { return FileUtils.getAbsoluteDir(rootDir, getRootdir(), target.getDir()); // if (rootDir==null) // rootDir = getRootdir(); // String targetDir = target.getDir(); // absoluteRootDir = FileUtils.getAbsolutePathFromPath(rootDir, targetDir); // return absoluteRootDir; } public void setRootdir(String rootdir) { this.rootdir = rootdir; } public String getTemplateFullDir() { if (templatedir!=null) return getRootdir()+"/"+templatedir; return getRootdir(); } public void setTemplatedir(String templatedir) { this.templatedir = templatedir; } public String getTemplatedir() { return templatedir; } public List<String> getTemplatedirRefs() { if (templatedirRefs==null) templatedirRefs = new ArrayList<String>(); return templatedirRefs; } public void addTemplatedirRef(String templatedirRef) { if (templatedirRef!=null) getTemplatedirRefs().add(templatedirRef); } public String getCanonicalDir() { return canonicalDir; } public void setCanonicalDir(String canonicalDir) { this.canonicalDir = canonicalDir; } public boolean isGenerable() { if (isGenerable==null) isGenerable = true; return isGenerable; } public void setIsGenerable(Boolean isGenerable) { this.isGenerable = isGenerable; } }