1 7 package org.ejtools.jndi.browser.state; 8 9 import java.beans.beancontext.BeanContext ; 10 import java.io.File ; 11 import java.net.URL ; 12 13 import javax.xml.parsers.DocumentBuilder ; 14 import javax.xml.parsers.DocumentBuilderFactory ; 15 import javax.xml.parsers.SAXParser ; 16 import javax.xml.parsers.SAXParserFactory ; 17 import javax.xml.transform.Result ; 18 import javax.xml.transform.Source ; 19 import javax.xml.transform.Transformer ; 20 import javax.xml.transform.TransformerFactory ; 21 import javax.xml.transform.dom.DOMSource ; 22 import javax.xml.transform.stream.StreamResult ; 23 24 import org.ejtools.jndi.browser.Browser; 25 import org.ejtools.jndi.browser.frame.ServerInternalFrame; 26 import org.ejtools.jndi.browser.model.Server; 27 import org.ejtools.jndi.browser.state.rules.ServerInternalFrameRule; 28 import org.ejtools.jndi.browser.state.rules.ServerRule; 29 import org.ejtools.util.service.ProfileRule; 30 import org.ejtools.util.state.LoadHandler; 31 import org.ejtools.util.state.StoreVisitor; 32 import org.w3c.dom.Document ; 33 34 35 40 public class WorkbenchState 41 { 42 43 private BeanContext context; 44 45 private Document document; 46 47 private URL workbenchURL; 48 49 50 55 public WorkbenchState(BeanContext context) 56 { 57 this.context = context; 58 } 59 60 61 66 public URL getWorkbenchURL() 67 { 68 return this.workbenchURL; 69 } 70 71 72 73 public void load() 74 { 75 if ((this.workbenchURL == null) && (!this.workbenchURL.getProtocol().equals("file"))) 77 { 78 return; 79 } 80 81 try 82 { 83 LoadHandler handler = new LoadHandler(); 84 handler.getContext().put("CONTAINER", this.context); 85 86 handler.addRule("/workbench/jndi-frame", new ServerInternalFrameRule()); 87 handler.addRule("/workbench/jndi-frame/profile", new ProfileRule()); 88 handler.addRule("/workbench/jndi-frame/profile/property", new ProfileRule.ProfilePropertyRule()); 89 handler.addRule("/workbench/jndi-frame/jmx-server", new ServerRule()); 90 91 SAXParserFactory factory = SAXParserFactory.newInstance(); 92 SAXParser parser = factory.newSAXParser(); 93 File file = new File (this.workbenchURL.getFile()); 94 parser.parse(file, handler); 95 } 96 catch (Exception e) 97 { 98 e.printStackTrace(); 99 } 100 } 101 102 103 108 public void setWorkbenchURL(URL workbenchURL) 109 { 110 this.workbenchURL = workbenchURL; 111 } 112 113 114 115 public void store() 116 { 117 if ((this.workbenchURL == null) && (!this.workbenchURL.getProtocol().equals("file"))) 119 { 120 return; 121 } 122 123 try 124 { 125 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 126 DocumentBuilder builder = dbFactory.newDocumentBuilder(); 127 this.document = builder.newDocument(); 128 129 StoreVisitor visitor = new WorkbenchStoreVisitor(this.document); 130 visitor.registerForPersistence(Browser.class); 131 visitor.registerForPersistence(ServerInternalFrame.class); 132 visitor.registerForPersistence(Server.class); 133 visitor.persist(this.context); 134 135 TransformerFactory tFactory = TransformerFactory.newInstance(); 136 Transformer transformer = tFactory.newTransformer(); 137 transformer.setOutputProperty("indent", "true"); 138 139 Source source = new DOMSource (this.document); 140 File file = new File (this.workbenchURL.getFile()); 141 Result result = new StreamResult (file); 142 transformer.transform(source, result); 143 } 144 catch (Exception e) 145 { 146 e.printStackTrace(); 147 } 148 } 149 } 150 | Popular Tags |