package org.quickbundle.mda.gp; import java.net.MalformedURLException; import java.util.HashSet; import java.util.List; import java.util.Set; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.quickbundle.tools.helper.io.RmFileHelper; import org.quickbundle.tools.helper.xml.RmXmlHelper; public class GenerateProjectRule { //定义source在插件下的的绝对路径 private String templatePath = null; private Document mainRule = null; private Document projectRule = null; private Set<String> sNeedMkdirsFolder = new HashSet<String>(); private String projectPathValue = null; public GenerateProjectRule() { init(); } @SuppressWarnings("unchecked") private void init() { try { //Plugin的静态变量必须由Wizard产生 templatePath = RmXmlHelper.formatToUrl(QbGenerateProjectPlugin.getInstallLocation().toOSString()) + "t"; mainRule = RmXmlHelper.parse(templatePath + "/generateProject.xml"); List<Element> lFolder = mainRule.selectNodes("/rules/modules/module[@isBuild='true']/folder"); for(Element folder : lFolder) { sNeedMkdirsFolder.add(folder.getText()); } } catch (Exception e) { QbGenerateProjectPlugin.log(e.toString()); e.printStackTrace(); } } public void loadProjectRule() throws MalformedURLException, DocumentException { projectRule = null; String currentSource = templatePath + "/" + mainRule.valueOf("//archetype[@selected='true']/config"); projectRule = RmXmlHelper.parse(currentSource); } public String getProjectTemplatePath() { String currentSource = mainRule.valueOf("//archetype[@selected='true']/source"); if(currentSource.indexOf("{templatePath}") > -1) { currentSource = currentSource.replaceFirst("\\{templatePath\\}", templatePath); } return RmFileHelper.formatToFile(currentSource); } public Document getMainRule() { return mainRule; } public Document getProjectRule() { return projectRule; } public void setProjectRule(Document projectRule) { this.projectRule = projectRule; } public Set<String> getSNeedMkdirsFolder() { return sNeedMkdirsFolder; } public String getProjectPathValue() { return projectPathValue; } public void setProjectPathValue(String projectPathValue) { this.projectPathValue = projectPathValue; } }