1 7 package org.mmbase.applications.packaging.packagehandlers; 8 9 import java.io.BufferedOutputStream ; 10 import java.io.File ; 11 import java.io.FileOutputStream ; 12 import java.io.IOException ; 13 import java.io.InputStream ; 14 import java.util.Enumeration ; 15 import java.util.jar.JarFile ; 16 import java.util.zip.ZipEntry ; 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 28 public class ConfigBasicPackage extends BasicPackage implements PackageInterface { 29 30 private static Logger log = Logging.getLoggerInstance(ConfigBasicPackage.class); 31 32 33 36 public ConfigBasicPackage() { } 37 38 39 44 public boolean install() { 45 boolean result = true; 46 try { 48 49 installStep step = getNextInstallStep(); 51 step.setUserFeedBack("config file installer started"); 52 53 step = getNextInstallStep(); 55 step.setUserFeedBack("receiving package .."); 56 JarFile jf = getJarFile(); 57 if (jf != null) { 58 step.setUserFeedBack("receiving package ... done (" + jf + ")"); 59 60 step = getNextInstallStep(); 62 step.setUserFeedBack("checking dependencies .."); 63 if (dependsInstalled(jf, step)) { 64 65 step.setUserFeedBack("checking dependencies ... done"); 66 67 step = getNextInstallStep(); 69 step.setUserFeedBack("installing config files .."); 70 installConfigFiles(jf, step); 71 step.setUserFeedBack("installing config files ... done"); 72 73 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 ee) {} 89 } 90 91 step = getNextInstallStep(); 93 step.setUserFeedBack("config files installer ended"); 94 95 } catch (Exception e) { 96 log.error("install crash on : " + this); 97 result = false; 98 } 99 return result; 100 } 101 102 103 108 public boolean uninstall() { 109 try { 110 111 installStep step = getNextInstallStep(); 113 step.setUserFeedBack("config files uninstaller started"); 114 115 step = getNextInstallStep(); 117 step.setUserFeedBack("updating mmbase registry .."); 118 updateRegistryUninstalled(); 119 step.setUserFeedBack("updating mmbase registry ... done"); 120 121 step = getNextInstallStep(); 123 step.setUserFeedBack("config files installer ended"); 124 125 } catch (Exception e) { 126 log.error("install crash on : " + this); 127 } 128 return true; 129 } 130 131 132 139 private boolean installConfigFiles(JarFile jf, installStep step) { 140 Enumeration e = jf.entries(); 141 while (e.hasMoreElements()) { 142 ZipEntry zippy = (ZipEntry ) e.nextElement(); 143 144 String name = zippy.getName(); 147 String configdir = PackageManager.getConfigPath() + File.separator; 148 149 if (name.indexOf("config/") == 0) { 151 installStep substep = step.getNextInstallStep(); 152 name = name.substring(7); 154 155 if (zippy.isDirectory()) { 157 File d = new File (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 in = jf.getInputStream(zippy); 167 BufferedOutputStream out = new BufferedOutputStream (new FileOutputStream (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 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 |