1 7 8 package com.memoire.vainstall.builder.util; 9 10 import com.memoire.vainstall.builder.*; 11 12 import java.awt.Rectangle ; 13 import java.io.File ; 14 import java.io.IOException ; 15 import java.util.*; 16 17 import javax.xml.parsers.*; 18 import org.xml.sax.*; 19 import org.xml.sax.helpers.*; 20 import org.w3c.dom.*; 21 22 import javax.xml.transform.*; 23 import javax.xml.transform.dom.*; 24 import javax.xml.transform.stream.*; 25 26 35 public class JavaBuilderPersister implements BuilderPersisterInterface { 36 37 40 VAIBuilderModel model = null; 41 42 48 String vai_home = XmlUtil.findVAISharedDir().getAbsolutePath(); 49 50 53 public JavaBuilderPersister() { 54 super(); 55 } 56 57 62 public void initialize(VAIBuilderModel model) { 63 this.model = model; 64 } 65 66 69 public void load() { 70 71 if (model == null) { 73 return; 74 } 75 76 String vaibuilder = vai_home + java.io.File.separator + "vaibuilder.xml"; 78 if (new File (vaibuilder).exists() == false) { 79 return; 81 } 82 83 Document doc = null; 85 try { 86 doc = XmlUtil.parse(vaibuilder,null); 87 } catch (XmlParseException exc) { 88 return; 90 } 91 92 importData(doc); 94 } 95 96 99 public void save() { 100 101 if (model == null) { 103 return; 104 } 105 106 Document doc = null; 108 try { 109 DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 110 doc = builder.newDocument(); 111 112 } catch(ParserConfigurationException exc) { 113 return; 114 } 115 116 exportData(doc); 118 119 Transformer transformer = null; 121 try { 122 transformer = TransformerFactory.newInstance().newTransformer(); 123 transformer.setOutputProperty("indent","yes"); 124 } catch(TransformerConfigurationException exc) { 125 exc.printStackTrace(); 126 return; 127 } 128 129 String vaibuilder = vai_home + java.io.File.separator + "vaibuilder.xml"; 131 try { 132 transformer.transform(new DOMSource(doc),new StreamResult(new File (vaibuilder))); 133 } catch (TransformerException exc) { 134 exc.printStackTrace(); 135 } 136 137 } 138 139 143 private void importData(Document doc) { 144 145 NodeList nodelist; 146 147 Element rootElement = doc.getDocumentElement(); 148 149 nodelist = rootElement.getElementsByTagName("window"); 151 for(int i = 0 ; i < nodelist.getLength() ; i++) { 152 Node window = (Node)nodelist.item(i); 153 154 NamedNodeMap map = window.getAttributes(); 155 156 Rectangle rect = new Rectangle (XmlUtil.getAttributeAsInt(map,"x"), 157 XmlUtil.getAttributeAsInt(map,"y"), 158 XmlUtil.getAttributeAsInt(map,"width"), 159 XmlUtil.getAttributeAsInt(map,"height")); 160 model.getWindowList().put(XmlUtil.getAttribute(map,"name"),rect); 161 } 162 163 nodelist = rootElement.getElementsByTagName("lastfile"); 165 166 LinkedList tmpList = new LinkedList(); 167 for(int i = 0 ; i < nodelist.getLength() ; i++) { 168 tmpList.add(""); 169 } 170 for(int i = 0 ; i < nodelist.getLength() ; i++) { 171 int number = new Integer (XmlUtil.getAttribute(nodelist.item(i),"number")).intValue(); 172 String lastproject = XmlUtil.getAttribute(nodelist.item(i),"file"); 173 tmpList.set(number,lastproject); 174 } 175 176 for(int i = tmpList.size()-1 ; i >= 0 ; i--) { 177 model.addLastOpenedProject((String )tmpList.get(i)); 178 } 179 180 nodelist = rootElement.getElementsByTagName("property"); 182 183 for(int i = 0 ; i < nodelist.getLength() ; i++) { 184 String name = XmlUtil.getAttribute(nodelist.item(i),"name"); 185 String value = XmlUtil.getAttribute(nodelist.item(i),"value"); 186 model.getPropertyList().put(name,value); 187 } 188 } 189 190 194 private void exportData(Document doc) { 195 196 Element root = doc.createElement("vaibuilder"); 198 doc.appendChild(root); 199 200 Hashtable windowList = model.getWindowList(); 202 203 Enumeration keys = windowList.keys(); 204 while (keys.hasMoreElements() == true) { 205 String key = (String )keys.nextElement(); 206 Rectangle rect = (Rectangle )windowList.get(key); 207 208 Element element = doc.createElement("window"); 209 element.setAttribute("name",key); 210 element.setAttribute("x",String.valueOf(rect.x)); 211 element.setAttribute("y",String.valueOf(rect.y)); 212 element.setAttribute("width",String.valueOf(rect.width)); 213 element.setAttribute("height",String.valueOf(rect.height)); 214 215 root.appendChild(element); 216 } 217 218 LinkedList lastproject = model.getLastOpenedProjectList(); 220 221 for (int i = 0; i < lastproject.size() ; i++) { 222 223 Element element = doc.createElement("lastfile"); 224 element.setAttribute("number",String.valueOf(i)); 225 element.setAttribute("file",String.valueOf(lastproject.get(i))); 226 227 root.appendChild(element); 228 } 229 230 Hashtable propertyList = model.getPropertyList(); 232 233 Enumeration propertyKeys = propertyList.keys(); 234 while (propertyKeys.hasMoreElements() == true) { 235 String name = (String )propertyKeys.nextElement(); 236 String value = (String )propertyList.get(name); 237 238 Element element = doc.createElement("property"); 239 element.setAttribute("name",name); 240 element.setAttribute("value",value); 241 242 root.appendChild(element); 243 } 244 245 } 246 } 247 | Popular Tags |