package hudson.drools; import hudson.Extension; import hudson.XmlFile; import hudson.model.Hudson; import hudson.model.ManagementLink; import hudson.model.Descriptor.FormException; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.servlet.ServletException; import net.sf.json.JSONObject; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; @Extension public class DroolsManagement extends ManagementLink { private List<Script> scripts = new ArrayList<Script>(); public DroolsManagement() { try { if (getConfigFile().exists()) new XmlFile(getConfigFile()).unmarshal(this); } catch (IOException e) { e.printStackTrace(); } } @Override public String getIconFileName() { return "/plugin/drools/icons/drools.gif"; } @Override public String getUrlName() { return "drools"; } public String getDisplayName() { return "Drools Configuration"; } public static DroolsManagement getInstance() { return ManagementLink.all().get(DroolsManagement.class); } public void doSubmit(StaplerRequest req, StaplerResponse rsp) throws ServletException, IOException, FormException { Hudson.getInstance().checkPermission(Hudson.ADMINISTER); JSONObject form = req.getSubmittedForm(); setScripts(req.bindJSONToList(Script.class, form.get("scripts"))); save(); rsp.forwardToPreviousPage(req); } public List<Script> getScripts() { return scripts; } public void setScripts(List<Script> scripts) { this.scripts = new ArrayList<Script>(scripts); } public void setScripts(Script... scripts) { this.scripts = new ArrayList<Script>(Arrays.asList(scripts)); } private File getConfigFile() { return new File(Hudson.getInstance().getRootDir(), "drools.xml"); } public void save() throws IOException { new XmlFile(getConfigFile()).write(this); } public Script getScript(String id) { for (Script script : scripts) { if (id.equals(script.getId())) { return script; } } return null; } }