KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > applications > packaging > packagehandlers > ConfigBasicPackage


1 /*
2  * This software is OSI Certified Open Source Software.
3  * OSI Certified is a certification mark of the Open Source Initiative.
4  * The license (Mozilla version 1.0) can be read at the MMBase site.
5  * See http://www.MMBase.org/license
6  */

7 package org.mmbase.applications.packaging.packagehandlers;
8
9 import java.io.BufferedOutputStream JavaDoc;
10 import java.io.File JavaDoc;
11 import java.io.FileOutputStream JavaDoc;
12 import java.io.IOException JavaDoc;
13 import java.io.InputStream JavaDoc;
14 import java.util.Enumeration JavaDoc;
15 import java.util.jar.JarFile JavaDoc;
16 import java.util.zip.ZipEntry JavaDoc;
17
18 import org.mmbase.applications.packaging.PackageManager;
19 import org.mmbase.applications.packaging.installhandlers.installStep;
20 import org.mmbase.util.logging.Logger;
21 import org.mmbase.util.logging.Logging;
22
23 /**
24  * ConfigBasicPackage, Handler for configuration files
25  *
26  * @author Daniel Ockeloen (MMBased)
27  */

28 public class ConfigBasicPackage extends BasicPackage implements PackageInterface {
29
30     private static Logger log = Logging.getLoggerInstance(ConfigBasicPackage.class);
31
32
33     /**
34      *Constructor for the ConfigBasicPackage object
35      */

36     public ConfigBasicPackage() { }
37
38
39     /**
40      * Description of the Method
41      *
42      * @return Description of the Return Value
43      */

44     public boolean install() {
45         boolean result = true;
46         // needs to be set to false on a error
47
try {
48
49             // step1
50
installStep step = getNextInstallStep();
51             step.setUserFeedBack("config file installer started");
52
53             // step 2
54
step = getNextInstallStep();
55             step.setUserFeedBack("receiving package ..");
56             JarFile JavaDoc jf = getJarFile();
57             if (jf != null) {
58                 step.setUserFeedBack("receiving package ... done (" + jf + ")");
59
60                 // step 3
61
step = getNextInstallStep();
62                 step.setUserFeedBack("checking dependencies ..");
63                 if (dependsInstalled(jf, step)) {
64
65                     step.setUserFeedBack("checking dependencies ... done");
66
67                     // step 4
68
step = getNextInstallStep();
69                     step.setUserFeedBack("installing config files ..");
70                     installConfigFiles(jf, step);
71                     step.setUserFeedBack("installing config files ... done");
72
73                     // step 5
74
step = getNextInstallStep();
75                     step.setUserFeedBack("updating mmbase registry ..");
76                     updateRegistryInstalled();
77                     step.setUserFeedBack("updating mmbase registry ... done");
78                 } else {
79                     step.setUserFeedBack("checking dependencies ... failed");
80                     setState("failed");
81                     result = false;
82                 }
83             } else {
84                 step.setUserFeedBack("getting the mmp package...failed (server down or removed disk ? )");
85                 step.setType(installStep.TYPE_ERROR);
86                 try {
87                     Thread.sleep(2000);
88                 } catch(Exception JavaDoc ee) {}
89             }
90
91             // step 6
92
step = getNextInstallStep();
93             step.setUserFeedBack("config files installer ended");
94
95         } catch (Exception JavaDoc e) {
96             log.error("install crash on : " + this);
97             result = false;
98         }
99         return result;
100     }
101
102
103     /**
104      * Description of the Method
105      *
106      * @return Description of the Return Value
107      */

108     public boolean uninstall() {
109         try {
110
111             // step1
112
installStep step = getNextInstallStep();
113             step.setUserFeedBack("config files uninstaller started");
114
115             // step 3
116
step = getNextInstallStep();
117             step.setUserFeedBack("updating mmbase registry ..");
118             updateRegistryUninstalled();
119             step.setUserFeedBack("updating mmbase registry ... done");
120
121             // step 4
122
step = getNextInstallStep();
123             step.setUserFeedBack("config files installer ended");
124
125         } catch (Exception JavaDoc e) {
126             log.error("install crash on : " + this);
127         }
128         return true;
129     }
130
131
132     /**
133      * Description of the Method
134      *
135      * @param jf Description of the Parameter
136      * @param step Description of the Parameter
137      * @return Description of the Return Value
138      */

139     private boolean installConfigFiles(JarFile JavaDoc jf, installStep step) {
140         Enumeration JavaDoc e = jf.entries();
141         while (e.hasMoreElements()) {
142             ZipEntry JavaDoc zippy = (ZipEntry JavaDoc) e.nextElement();
143
144             // this is just a demo version, the config package people should figure
145
// out the real format.
146
String JavaDoc name = zippy.getName();
147             String JavaDoc configdir = PackageManager.getConfigPath() + File.separator;
148
149             // only unpack all thats in the config dir
150
if (name.indexOf("config/") == 0) {
151                 installStep substep = step.getNextInstallStep();
152                 // remove the "config/" to get the real install base
153
name = name.substring(7);
154
155                 // check if its a dir or a file
156
if (zippy.isDirectory()) {
157                     File JavaDoc d = new File JavaDoc(configdir + name);
158                     if (!d.exists()) {
159                         substep.setUserFeedBack("creating dir : " + configdir + name + ".. ");
160                         d.mkdir();
161                         substep.setUserFeedBack("creating dir : " + configdir + name + ".. done");
162                     }
163                 } else {
164                     substep.setUserFeedBack("creating file : " + configdir + name + ".. ");
165                     try {
166                         InputStream JavaDoc in = jf.getInputStream(zippy);
167                         BufferedOutputStream JavaDoc out = new BufferedOutputStream JavaDoc(new FileOutputStream JavaDoc(configdir + name));
168                         int val;
169                         while ((val = in.read()) != -1) {
170                             out.write(val);
171                         }
172                         out.close();
173                         substep.setUserFeedBack("creating file : " + configdir + name + ".. done");
174                     } catch (IOException JavaDoc f) {
175                         substep.setUserFeedBack("creating file : " + configdir + name + ".. failed");
176                         f.printStackTrace();
177                     }
178                 }
179             }
180         }
181         return true;
182     }
183
184 }
185
186
Popular Tags