1 7 package org.ejtools.management.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.graph.frame.GraphInternalFrame; 25 import org.ejtools.management.browser.Browser; 26 import org.ejtools.management.browser.frame.ServerInternalFrame; 27 import org.ejtools.management.browser.model.ManagedObject; 28 import org.ejtools.management.browser.model.Server; 29 import org.ejtools.management.browser.state.rules.GraphInternalFrameRule; 30 import org.ejtools.management.browser.state.rules.ManagementGraphRule; 31 import org.ejtools.management.browser.state.rules.ManagedObjectRule; 32 import org.ejtools.management.browser.state.rules.ServerInternalFrameRule; 33 import org.ejtools.management.browser.state.rules.ServerRule; 34 import org.ejtools.util.service.ProfileRule; 35 import org.ejtools.util.state.LoadHandler; 36 import org.ejtools.util.state.StoreVisitor; 37 import org.w3c.dom.Document ; 38 39 40 45 public class WorkbenchState 46 { 47 48 private BeanContext context; 49 50 private Document document; 51 52 private URL workbenchURL; 53 54 55 60 public WorkbenchState(BeanContext context) 61 { 62 this.context = context; 63 } 64 65 66 71 public URL getWorkbenchURL() 72 { 73 return this.workbenchURL; 74 } 75 76 77 78 public void load() 79 { 80 if ((this.workbenchURL == null) && (!this.workbenchURL.getProtocol().equals("file"))) 82 { 83 return; 84 } 85 86 try 87 { 88 LoadHandler handler = new LoadHandler(); 89 handler.getContext().put("CONTAINER", this.context); 90 91 handler.addRule("/workbench/graph-frame", new GraphInternalFrameRule()); 92 handler.addRule("/workbench/management-frame", new ServerInternalFrameRule()); 93 handler.addRule("/workbench/management-frame/profile", new ProfileRule()); 94 handler.addRule("/workbench/management-frame/profile/property", new ProfileRule.ProfilePropertyRule()); 95 handler.addRule("/workbench/management-frame/management-server", new ServerRule()); 96 handler.addRule("/workbench/management-frame/management-server/management-object", new ManagedObjectRule()); 97 handler.addRule("/workbench/management-frame/management-server/management-object/management-graph", new ManagementGraphRule()); 98 99 SAXParserFactory factory = SAXParserFactory.newInstance(); 100 SAXParser parser = factory.newSAXParser(); 101 File file = new File (this.workbenchURL.getFile()); 102 parser.parse(file, handler); 103 } 104 catch (Exception e) 105 { 106 e.printStackTrace(); 107 } 108 } 109 110 111 116 public void setWorkbenchURL(URL workbenchURL) 117 { 118 this.workbenchURL = workbenchURL; 119 } 120 121 122 123 public void store() 124 { 125 if ((this.workbenchURL == null) && (!this.workbenchURL.getProtocol().equals("file"))) 127 { 128 return; 129 } 130 131 try 132 { 133 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 134 DocumentBuilder builder = dbFactory.newDocumentBuilder(); 135 this.document = builder.newDocument(); 136 137 StoreVisitor visitor = new WorkbenchStoreVisitor(this.document); 138 visitor.registerForPersistence(Browser.class); 139 visitor.registerForPersistence(ServerInternalFrame.class); 140 visitor.registerForPersistence(GraphInternalFrame.class); 141 visitor.registerForPersistence(Server.class); 142 visitor.registerForPersistence(ManagedObject.class); 143 visitor.persist(this.context); 144 145 TransformerFactory tFactory = TransformerFactory.newInstance(); 146 Transformer transformer = tFactory.newTransformer(); 147 transformer.setOutputProperty("indent", "true"); 148 149 Source source = new DOMSource (this.document); 150 File file = new File (this.workbenchURL.getFile()); 151 Result result = new StreamResult (file); 152 transformer.transform(source, result); 153 } 154 catch (Exception e) 155 { 156 e.printStackTrace(); 157 } 158 } 159 } 160 | Popular Tags |