KickJava   Java API By Example, From Geeks To Geeks.

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


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.BufferedInputStream JavaDoc;
10 import java.io.BufferedOutputStream JavaDoc;
11 import java.io.File JavaDoc;
12 import java.io.FileOutputStream JavaDoc;
13 import java.io.IOException 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.installhandlers.installStep;
19 import org.mmbase.module.core.MMBaseContext;
20 import org.mmbase.util.logging.Logger;
21 import org.mmbase.util.logging.Logging;
22
23 /**
24  * DisplayHtmlPackage, Handler for html packages
25  *
26  * @author Daniel Ockeloen (MMBased)
27  */

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

36     public DisplayHtmlPackage() { }
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("display/html installer started");
52             setProgressBar(1000);
53             // lets have 100 steps;
54

55             // step 2
56
step = getNextInstallStep();
57             step.setUserFeedBack("receiving package ..");
58         if (getBundleStep()!=null) getBundleStep().setUserFeedBack("calling package installer "+getName()+"..receiving package");
59             JarFile JavaDoc jf = getJarFile();
60             if (jf != null) {
61                 step.setUserFeedBack("receiving package ... done (" + jf + ")");
62
63                 increaseProgressBar(100);
64                 // downloading is 10%
65

66                 // step 3
67
step = getNextInstallStep();
68                 step.setUserFeedBack("checking dependencies ..");
69                 if (dependsInstalled(jf, step)) {
70
71                     increaseProgressBar(100);
72                     // downloading is 20%
73

74                     step.setUserFeedBack("checking dependencies ... done");
75
76                     // step 4
77
step = getNextInstallStep();
78                     step.setUserFeedBack("installing html pages ..");
79                     installPages(jf, step);
80                     step.setUserFeedBack("installing html pages ... done");
81
82                     increaseProgressBar(100);
83                     // downloading is 80%
84

85                     // step 5
86
step = getNextInstallStep();
87                     step.setUserFeedBack("updating mmbase registry ..");
88                     updateRegistryInstalled();
89                     increaseProgressBar(100);
90                     // downloading is 90%
91
step.setUserFeedBack("updating mmbase registry ... done");
92                 } else {
93                     step.setUserFeedBack("checking dependencies ... failed");
94                     setState("failed");
95                     result = false;
96                 }
97             } else {
98                 step.setUserFeedBack("getting the mmp package...failed (server down or removed disk ? )");
99                 step.setType(installStep.TYPE_ERROR);
100                 try {
101                     Thread.sleep(2000);
102                 } catch(Exception JavaDoc ee) {}
103             }
104
105
106             // step 6
107
step = getNextInstallStep();
108             step.setUserFeedBack("display/html installer ended");
109             increaseProgressBar(100);
110             // downloading is 100%
111

112         } catch (Exception JavaDoc e) {
113             log.error("install crash on : " + this);
114             result = false;
115         }
116         return result;
117     }
118
119
120     /**
121      * Description of the Method
122      *
123      * @return Description of the Return Value
124      */

125     public boolean uninstall() {
126         try {
127
128             // step1
129
installStep step = getNextInstallStep();
130             step.setUserFeedBack("display/html uninstaller started");
131
132             // step 3
133
step = getNextInstallStep();
134             step.setUserFeedBack("updating mmbase registry ..");
135             updateRegistryUninstalled();
136             step.setUserFeedBack("updating mmbase registry ... done");
137
138             // step 4
139
step = getNextInstallStep();
140             step.setUserFeedBack("display/html installer ended");
141
142         } catch (Exception JavaDoc e) {
143             log.error("install crash on : " + this);
144         }
145         return true;
146     }
147
148
149     /**
150      * Description of the Method
151      *
152      * @param jf Description of the Parameter
153      * @param step Description of the Parameter
154      * @return Description of the Return Value
155      */

156     private boolean installPages(JarFile JavaDoc jf, installStep step) {
157         Enumeration JavaDoc e = jf.entries();
158         increaseProgressBar(100);
159         // downloading is 30%
160
while (e.hasMoreElements()) {
161             increaseProgressBar(1);
162             // downloading is 1%
163
ZipEntry JavaDoc zippy = (ZipEntry JavaDoc) e.nextElement();
164
165             // this is just a demo version, the html package people should figure
166
// out the real format.
167
String JavaDoc name = zippy.getName();
168             String JavaDoc htmldir = MMBaseContext.getHtmlRoot() + File.separator;
169
170
171             // only unpack all thats in the html dir
172
name = name.replace('/',File.separatorChar);
173             name = name.replace('\\',File.separatorChar);
174             if (name.indexOf("html"+File.separator) == 0) {
175                 installStep substep = step.getNextInstallStep();
176                 // remove the "html/" to get the real install base
177
name = name.substring(5);
178
179                 // check if its a dir or a file
180
if (zippy.isDirectory()) {
181                     File JavaDoc d = new File JavaDoc(htmldir + name);
182                     if (!d.exists()) {
183                         substep.setUserFeedBack("creating dir : " + htmldir + name + ".. ");
184                         d.mkdir();
185                         substep.setUserFeedBack("creating dir : " + htmldir + name + ".. done");
186                     }
187                 } else {
188                 step.setUserFeedBack("installing html pages .. "+name);
189             if (getBundleStep()!=null) getBundleStep().setUserFeedBack("calling package installer "+getName()+".. "+name);
190                     substep.setUserFeedBack("creating file : " + htmldir + name + ".. ");
191                     try {
192                         BufferedInputStream JavaDoc in = new BufferedInputStream JavaDoc(jf.getInputStream(zippy));
193                         BufferedOutputStream JavaDoc out = new BufferedOutputStream JavaDoc(new FileOutputStream JavaDoc(htmldir + name));
194                         int val;
195                         while ((val = in.read()) != -1) {
196                             out.write(val);
197                         }
198                         out.close();
199                         substep.setUserFeedBack("creating file : " + htmldir + name + ".. done");
200                     } catch (IOException JavaDoc f) {
201                         substep.setUserFeedBack("creating file : " + htmldir + name + ".. failed");
202                         f.printStackTrace();
203                     }
204                 }
205             }
206         }
207         increaseProgressBar(100);
208         // downloading is 70%
209
return true;
210     }
211
212 }
213
214
Popular Tags