1 7 package org.mmbase.applications.packaging.packagehandlers; 8 9 import java.io.BufferedInputStream ; 10 import java.io.BufferedOutputStream ; 11 import java.io.File ; 12 import java.io.FileOutputStream ; 13 import java.io.IOException ; 14 import java.util.Enumeration ; 15 import java.util.jar.JarFile ; 16 import java.util.zip.ZipEntry ; 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 28 public class DisplayHtmlPackage extends BasicPackage implements PackageInterface { 29 30 private static Logger log = Logging.getLoggerInstance(DisplayHtmlPackage.class); 31 32 33 36 public DisplayHtmlPackage() { } 37 38 39 44 public boolean install() { 45 boolean result = true; 46 try { 48 49 installStep step = getNextInstallStep(); 51 step.setUserFeedBack("display/html installer started"); 52 setProgressBar(1000); 53 55 step = getNextInstallStep(); 57 step.setUserFeedBack("receiving package .."); 58 if (getBundleStep()!=null) getBundleStep().setUserFeedBack("calling package installer "+getName()+"..receiving package"); 59 JarFile jf = getJarFile(); 60 if (jf != null) { 61 step.setUserFeedBack("receiving package ... done (" + jf + ")"); 62 63 increaseProgressBar(100); 64 66 step = getNextInstallStep(); 68 step.setUserFeedBack("checking dependencies .."); 69 if (dependsInstalled(jf, step)) { 70 71 increaseProgressBar(100); 72 74 step.setUserFeedBack("checking dependencies ... done"); 75 76 step = getNextInstallStep(); 78 step.setUserFeedBack("installing html pages .."); 79 installPages(jf, step); 80 step.setUserFeedBack("installing html pages ... done"); 81 82 increaseProgressBar(100); 83 85 step = getNextInstallStep(); 87 step.setUserFeedBack("updating mmbase registry .."); 88 updateRegistryInstalled(); 89 increaseProgressBar(100); 90 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 ee) {} 103 } 104 105 106 step = getNextInstallStep(); 108 step.setUserFeedBack("display/html installer ended"); 109 increaseProgressBar(100); 110 112 } catch (Exception e) { 113 log.error("install crash on : " + this); 114 result = false; 115 } 116 return result; 117 } 118 119 120 125 public boolean uninstall() { 126 try { 127 128 installStep step = getNextInstallStep(); 130 step.setUserFeedBack("display/html uninstaller started"); 131 132 step = getNextInstallStep(); 134 step.setUserFeedBack("updating mmbase registry .."); 135 updateRegistryUninstalled(); 136 step.setUserFeedBack("updating mmbase registry ... done"); 137 138 step = getNextInstallStep(); 140 step.setUserFeedBack("display/html installer ended"); 141 142 } catch (Exception e) { 143 log.error("install crash on : " + this); 144 } 145 return true; 146 } 147 148 149 156 private boolean installPages(JarFile jf, installStep step) { 157 Enumeration e = jf.entries(); 158 increaseProgressBar(100); 159 while (e.hasMoreElements()) { 161 increaseProgressBar(1); 162 ZipEntry zippy = (ZipEntry ) e.nextElement(); 164 165 String name = zippy.getName(); 168 String htmldir = MMBaseContext.getHtmlRoot() + File.separator; 169 170 171 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 name = name.substring(5); 178 179 if (zippy.isDirectory()) { 181 File d = new File (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 in = new BufferedInputStream (jf.getInputStream(zippy)); 193 BufferedOutputStream out = new BufferedOutputStream (new FileOutputStream (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 f) { 201 substep.setUserFeedBack("creating file : " + htmldir + name + ".. failed"); 202 f.printStackTrace(); 203 } 204 } 205 } 206 } 207 increaseProgressBar(100); 208 return true; 210 } 211 212 } 213 214 | Popular Tags |