KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > memoire > vainstall > builder > util > JavaProductPersister


1 /*
2  * $RCSfile: JavaProductPersister.java,v $
3  * @modification $Date: 2001/09/28 19:41:42 $
4  * @version $Id: JavaProductPersister.java,v 1.1 2001/09/28 19:41:42 hfalk Exp $
5  *
6  */

7
8 package com.memoire.vainstall.builder.util;
9
10 import com.memoire.vainstall.VAGlobals;
11 import com.memoire.vainstall.builder.*;
12
13 import java.io.File JavaDoc;
14 import java.util.*;
15
16 import javax.xml.parsers.*;
17 import org.xml.sax.*;
18 import org.xml.sax.helpers.*;
19 import org.w3c.dom.*;
20
21 import javax.xml.transform.*;
22 import javax.xml.transform.dom.*;
23 import javax.xml.transform.stream.*;
24
25 /**
26  * This is
27  *
28  * @see
29  *
30  * @author Henrik Falk
31  * @version $Id: JavaProductPersister.java,v 1.1 2001/09/28 19:41:42 hfalk Exp $
32  */

33 public class JavaProductPersister implements ProductPersisterInterface {
34
35     VAIProductModel model = null;
36
37     public JavaProductPersister() {
38         super();
39     }
40
41     public void initialize(VAIProductModel model) {
42         this.model = model;
43     }
44
45     public void load() throws VAIBuilderException {
46
47         // check if we are initialized
48
if (model == null) {
49             throw new VAIBuilderException(VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_Load"),
50                 VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_NotInit"),
51                 VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_ProgramError")
52                 + VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_PleaseReport"));
53         }
54
55         // Check if vaibuilder.xml exists
56
String JavaDoc project_file = model.getProductDirectory() + File.separator
57                              +"vainstall.xml";
58         if (new File JavaDoc(project_file).exists() == false) {
59             throw new VAIBuilderException(VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_Load"),
60                 VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_NotFound"),
61                 VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_MaybeError")
62                 + VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_PleaseReport"));
63         }
64
65         Document doc = null;
66         try {
67             doc = XmlUtil.parse(project_file,null);
68         } catch (XmlParseException exc) {
69             throw new VAIBuilderException(VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_Load"),
70                 VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_NotParse"),
71                 VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_MaybeError")
72                 + VAGlobals.getResource("com.memoire.vainstall.builder.Language","JavaProductPersister_PleaseReport"));
73         }
74
75         importData(doc);
76     }
77
78     public void save() throws VAIBuilderException {
79
80         // check if we are initialized
81
if (model == null) {
82             return;
83         }
84
85         Document doc = null;
86         try {
87             DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
88             doc = builder.newDocument();
89
90         } catch(ParserConfigurationException exc) {
91             return;
92         }
93
94         exportData(doc);
95
96         Transformer transformer = null;
97         try {
98             transformer = TransformerFactory.newInstance().newTransformer();
99             transformer.setOutputProperty("indent","yes");
100         } catch(TransformerConfigurationException exc) {
101             exc.printStackTrace();
102             return;
103         }
104
105         String JavaDoc project_file = model.getProductDirectory() + File.separator
106                              +"vainstall.xml";
107         try {
108             transformer.transform(new DOMSource(doc),new StreamResult(new File JavaDoc(project_file)));
109         } catch (TransformerException exc) {
110             exc.printStackTrace();
111         }
112     }
113
114     private void importData(Document doc) throws VAIBuilderException {
115
116         NodeList nodelist;
117
118         Element rootElement = doc.getDocumentElement();
119
120         // get properties
121
nodelist = rootElement.getElementsByTagName("property");
122         for(int i = 0 ; i < nodelist.getLength() ; i++) {
123             Node propertyNode = (Node)nodelist.item(i);
124
125             NamedNodeMap map = propertyNode.getAttributes();
126
127             String JavaDoc name = XmlUtil.getAttribute(map,"name");
128
129             if (name.equals("vainstall.product.name") == true) {
130                 model.setProductName(XmlUtil.getAttribute(map,"value"));
131             }
132
133             if (name.equals("vainstall.product.version") == true) {
134                 model.setProductVersion(XmlUtil.getAttribute(map,"value"));
135             }
136
137             if (name.equals("vainstall.product.type") == true) {
138                 model.setProductType(XmlUtil.getAttribute(map,"value"));
139             }
140
141             if (name.equals("vainstall.archiver.package.name") == true) {
142                 model.setPackageName(XmlUtil.getAttribute(map,"value"));
143             }
144
145             if (name.equals("vainstall.archiver.license.name") == true) {
146                 model.setLicenseName(XmlUtil.getAttribute(map,"value"));
147             }
148
149             if (name.equals("vainstall.archiver.license.encoding") == true) {
150                 model.setLicenseEncoding(XmlUtil.getAttribute(map,"value"));
151             }
152
153             if (name.equals("vainstall.archiver.readme.name") == true) {
154                 model.setReadmeName(XmlUtil.getAttribute(map,"value"));
155             }
156
157             if (name.equals("vainstall.archiver.readme.encoding") == true) {
158                 model.setReadmeEncoding(XmlUtil.getAttribute(map,"value"));
159             }
160
161             if (name.equals("vainstall.installer.ui.bluescreen") == true) {
162                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
163             }
164
165             if (name.equals("vainstall.installer.ui.bluescreen.colour") == true) {
166                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
167             }
168
169             if (name.equals("vainstall.installer.ui.mode") == true) {
170                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
171             }
172
173             if (name.equals("vainstall.installer.ui.banner") == true) {
174                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
175             }
176
177             if (name.equals("vainstall.user.dir") == true) {
178                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
179             }
180
181             if (name.equals("vainstall.installer.link.section.name") == true) {
182                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
183             }
184
185             if (name.equals("vainstall.installer.link.section.icon") == true) {
186                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
187             }
188
189             if (name.equals("vainstall.installer.link.entry.name") == true) {
190                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
191             }
192
193             if (name.equals("vainstall.installer.link.entry.icon") == true) {
194                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
195             }
196
197             if (name.equals("vainstall.installer.default.directory") == true) {
198                 model.putProperty(name,XmlUtil.getAttribute(map,"value"));
199             }
200
201         }
202
203         // get steps
204
nodelist = rootElement.getElementsByTagName("steps");
205         for(int i = 0 ; i < nodelist.getLength() ; i++) {
206             Node stepsNode = (Node)nodelist.item(i);
207
208             NamedNodeMap map = stepsNode.getAttributes();
209
210             String JavaDoc type = XmlUtil.getAttribute(map,"type");
211
212             if (type.equals("uninstall") == false) {
213                 // get steps
214
NodeList steplist = ((Element)stepsNode).getElementsByTagName("step");
215                 for(int j = 0 ; j < steplist.getLength() ; j++) {
216                     Node stepNode = (Node)steplist.item(j);
217
218                     NamedNodeMap stepMap = stepNode.getAttributes();
219
220                     String JavaDoc stepType = XmlUtil.getAttribute(stepMap,"type");
221                     model.getStepsList().add(stepType);
222
223                     // evaluate if required steps are added
224
// in a stupid right now :-)
225
if (stepType.equals("license") == true) {
226                         model.removeRequirement("Required Steps");
227                     }
228                 }
229             } else {
230                 // uninstall steps hardcoded right now
231
}
232         }
233
234         // get targets
235
nodelist = rootElement.getElementsByTagName("targets");
236         for(int i = 0 ; i < nodelist.getLength() ; i++) {
237             Node targetsNode = (Node)nodelist.item(i);
238
239             NodeList targetlist = rootElement.getElementsByTagName("target");
240             for(int j = 0 ; i < targetlist.getLength() ; i++) {
241                 Node targetNode = (Node)targetlist.item(i);
242
243                 NamedNodeMap targetMap = targetNode.getAttributes();
244                 String JavaDoc targetType = XmlUtil.getAttribute(targetMap,"type");
245                 if (targetType.equals("jar") == true) {
246                     String JavaDoc signerAliasType = XmlUtil.getAttribute(targetMap,"signeralias");
247                     if(signerAliasType != null) {
248                         model.getPropertyList().put("vainstall.archiver.target.jar.signer.alias",signerAliasType);
249                     }
250                     String JavaDoc signerPassphraseType = XmlUtil.getAttribute(targetMap,"signerpassphrase");
251                     if(signerPassphraseType != null) {
252                         model.getPropertyList().put("vainstall.archiver.target.jar.signer.passphrase",signerPassphraseType);
253                     }
254                 }
255                 if (targetType.equals("jnlp") == true) {
256                     String JavaDoc codebaseType = XmlUtil.getAttribute(targetMap,"codebase");
257                     if(codebaseType != null) {
258                         model.getPropertyList().put("vainstall.archiver.target.jnlp.codebase",codebaseType);
259                     }
260                     String JavaDoc homepageType = XmlUtil.getAttribute(targetMap,"homepage");
261                     if(homepageType != null) {
262                         model.getPropertyList().put("vainstall.archiver.target.jnlp.homepage",homepageType);
263                     }
264                     String JavaDoc vendorType = XmlUtil.getAttribute(targetMap,"vendor");
265                     if(vendorType != null) {
266                         model.getPropertyList().put("vainstall.archiver.target.jnlp.vendor",vendorType);
267                     }
268                 }
269                 model.addTarget(targetType);
270             }
271         }
272
273         // get languages
274
nodelist = rootElement.getElementsByTagName("language");
275         for(int i = 0 ; i < nodelist.getLength() ; i++) {
276             Node languageNode = (Node)nodelist.item(i);
277
278             if (languageNode.hasChildNodes() == true) {
279                 Node language = languageNode.getFirstChild();
280                 if (language.getNodeType() == Node.TEXT_NODE) {
281                     // should be verified !
282
model.addLanguage(language.getNodeValue());
283                 }
284             }
285         }
286
287     }
288
289     private void exportData(Document doc) throws VAIBuilderException {
290
291         // create root element
292
Element root = doc.createElement("vainstall");
293         root.setAttribute("version","1.0");
294         doc.appendChild(root);
295
296         // create <property> elements
297

298         Element projectNameElement = doc.createElement("property");
299         projectNameElement.setAttribute("name","vainstall.product.name");
300         projectNameElement.setAttribute("value",model.getProductName());
301         root.appendChild(projectNameElement);
302
303         Element projectVersionElement = doc.createElement("property");
304         projectVersionElement.setAttribute("name","vainstall.product.version");
305         projectVersionElement.setAttribute("value",model.getProductVersion());
306         root.appendChild(projectVersionElement);
307
308         if (model.getProductType() != null) {
309             Element projectTypeElement = doc.createElement("property");
310             projectTypeElement.setAttribute("name","vainstall.product.type");
311             projectTypeElement.setAttribute("value",model.getProductType());
312             root.appendChild(projectTypeElement);
313         }
314
315         if (model.getPackageName() != null) {
316             Element packageNameElement = doc.createElement("property");
317             packageNameElement.setAttribute("name","vainstall.archiver.package.name");
318             packageNameElement.setAttribute("value",model.getPackageName());
319             root.appendChild(packageNameElement);
320         }
321
322         if (model.getLicenseName() != null) {
323             Element licenseNameElement = doc.createElement("property");
324             licenseNameElement.setAttribute("name","vainstall.archiver.license.name");
325             licenseNameElement.setAttribute("value",model.getLicenseName());
326             root.appendChild(licenseNameElement);
327         }
328
329         if (model.getLicenseEncoding() != null) {
330             Element licenseEncodingElement = doc.createElement("property");
331             licenseEncodingElement.setAttribute("name","vainstall.archiver.license.encoding");
332             licenseEncodingElement.setAttribute("value",model.getLicenseEncoding());
333             root.appendChild(licenseEncodingElement);
334         }
335
336         if (model.getReadmeName() != null) {
337             Element readmeNameElement = doc.createElement("property");
338             readmeNameElement.setAttribute("name","vainstall.archiver.readme.name");
339             readmeNameElement.setAttribute("value",model.getReadmeName());
340             root.appendChild(readmeNameElement);
341         }
342
343         if (model.getReadmeEncoding() != null) {
344             Element readmeEncodingElement = doc.createElement("property");
345             readmeEncodingElement.setAttribute("name","vainstall.archiver.readme.encoding");
346             readmeEncodingElement.setAttribute("value",model.getReadmeEncoding());
347             root.appendChild(readmeEncodingElement);
348         }
349
350         // create other <property> elements
351
if (model.getProperty("vainstall.installer.ui.bluescreen") != null) {
352             Element blueScreenElement = doc.createElement("property");
353             blueScreenElement.setAttribute("name","vainstall.installer.ui.bluescreen");
354             blueScreenElement.setAttribute("value",model.getProperty("vainstall.installer.ui.bluescreen"));
355             root.appendChild(blueScreenElement);
356         }
357
358         if (model.getProperty("vainstall.installer.ui.bluescreen.colour") != null) {
359             Element blueScreenColorElement = doc.createElement("property");
360             blueScreenColorElement.setAttribute("name","vainstall.installer.ui.bluescreen.colour");
361             blueScreenColorElement.setAttribute("value",model.getProperty("vainstall.installer.ui.bluescreen.colour"));
362             root.appendChild(blueScreenColorElement);
363         }
364
365         if (model.getProperty("vainstall.installer.ui.mode") != null) {
366             Element uiModeElement = doc.createElement("property");
367             uiModeElement.setAttribute("name","vainstall.installer.ui.mode");
368             uiModeElement.setAttribute("value",model.getProperty("vainstall.installer.ui.mode"));
369             root.appendChild(uiModeElement);
370         }
371
372         if (model.getProperty("vainstall.installer.ui.banner") != null) {
373             Element uiBannerElement = doc.createElement("property");
374             uiBannerElement.setAttribute("name","vainstall.installer.ui.banner");
375             uiBannerElement.setAttribute("value",model.getProperty("vainstall.installer.ui.banner"));
376             root.appendChild(uiBannerElement);
377         }
378
379         if (model.getProperty("vainstall.installer.link.section.name") != null) {
380             Element sectionNameElement = doc.createElement("property");
381             sectionNameElement.setAttribute("name","vainstall.installer.link.section.name");
382             sectionNameElement.setAttribute("value",model.getProperty("vainstall.installer.link.section.name"));
383             root.appendChild(sectionNameElement);
384         }
385
386         if (model.getProperty("vainstall.installer.link.section.icon") != null) {
387             Element sectionIconElement = doc.createElement("property");
388             sectionIconElement.setAttribute("name","vainstall.installer.link.section.icon");
389             sectionIconElement.setAttribute("value",model.getProperty("vainstall.installer.link.section.icon"));
390             root.appendChild(sectionIconElement);
391         }
392
393         if (model.getProperty("vainstall.installer.link.entry.name") != null) {
394             Element entryNameElement = doc.createElement("property");
395             entryNameElement.setAttribute("name","vainstall.installer.link.entry.name");
396             entryNameElement.setAttribute("value",model.getProperty("vainstall.installer.link.entry.name"));
397             root.appendChild(entryNameElement);
398         }
399
400         if (model.getProperty("vainstall.installer.link.entry.icon") != null) {
401             Element entryIconElement = doc.createElement("property");
402             entryIconElement.setAttribute("name","vainstall.installer.link.entry.icon");
403             entryIconElement.setAttribute("value",model.getProperty("vainstall.installer.link.entry.icon"));
404             root.appendChild(entryIconElement);
405         }
406
407         if (model.getProperty("vainstall.installer.default.directory") != null) {
408             Element defaultDirectoryElement = doc.createElement("property");
409             defaultDirectoryElement.setAttribute("name","vainstall.installer.default.directory");
410             defaultDirectoryElement.setAttribute("value",model.getProperty("vainstall.installer.default.directory"));
411             root.appendChild(defaultDirectoryElement);
412         }
413
414
415         // create special <property> elements
416
if (model.getProperty("vainstall.user.dir") != null) {
417             Element uiBannerElement = doc.createElement("property");
418             uiBannerElement.setAttribute("name","vainstall.user.dir");
419             uiBannerElement.setAttribute("value",model.getProperty("vainstall.user.dir"));
420             root.appendChild(uiBannerElement);
421         }
422
423         // create steps block
424
if (model.getProductType() != null) {
425             Element stepsElement = doc.createElement("steps");
426             stepsElement.setAttribute("type",model.getProductType());
427             root.appendChild(stepsElement);
428
429             // create <step> elements
430
ListIterator iterator = model.getStepsList().listIterator();
431             while (iterator.hasNext() == true) {
432                 String JavaDoc type = (String JavaDoc)iterator.next();
433             
434                 Element stepElement = doc.createElement("step");
435                 stepElement.setAttribute("type",type);
436                 stepsElement.appendChild(stepElement);
437             }
438         }
439
440         // create <targets> elements
441
Element targetsElement = doc.createElement("targets");
442         root.appendChild(targetsElement);
443
444         // create <target> elements
445
ListIterator targetIterator = model.getTargetList().listIterator();
446         while (targetIterator.hasNext() == true) {
447             String JavaDoc type = (String JavaDoc)targetIterator.next();
448             
449             Element targetElement = doc.createElement("target");
450             targetElement.setAttribute("type",type);
451             if (type.equals("jar") == true) {
452                 if (model.getPropertyList().get("vainstall.archiver.target.jar.signer.alias") != null &&
453                     model.getPropertyList().get("vainstall.archiver.target.jar.signer.passphrase") != null) {
454                     targetElement.setAttribute("signeralias",(String JavaDoc)model.getProperty("vainstall.archiver.target.jar.signer.alias"));
455                     targetElement.setAttribute("signerpassphrase",(String JavaDoc)model.getProperty("vainstall.archiver.target.jar.signer.passphrase"));
456                 }
457             }
458             if (type.equals("jnlp") == true) {
459                 if (model.getPropertyList().get("vainstall.archiver.target.jnlp.codebase") != null &&
460                     model.getPropertyList().get("vainstall.archiver.target.jnlp.homepage") != null &&
461                     model.getPropertyList().get("vainstall.archiver.target.jnlp.vendor") != null) {
462                     targetElement.setAttribute("codebase",(String JavaDoc)model.getProperty("vainstall.archiver.target.jnlp.codebase"));
463                     targetElement.setAttribute("homepage",(String JavaDoc)model.getProperty("vainstall.archiver.target.jnlp.homepage"));
464                     targetElement.setAttribute("vendor",(String JavaDoc)model.getProperty("vainstall.archiver.target.jnlp.vendor"));
465                 }
466             }
467             targetsElement.appendChild(targetElement);
468         }
469
470         // create <language> elements
471
ListIterator iterator = model.getLanguageList().listIterator();
472         while (iterator.hasNext() == true) {
473             String JavaDoc language = (String JavaDoc)iterator.next();
474
475             Element languageElement = doc.createElement("language");
476             Node languageNode = doc.createTextNode(language);
477             languageElement.appendChild(languageNode);
478             root.appendChild(languageElement);
479         }
480
481     }
482
483 }
484
Popular Tags