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.InstallManager; 19 import org.mmbase.applications.packaging.PackageManager; 20 import org.mmbase.applications.packaging.installhandlers.installStep; 21 import org.mmbase.util.logging.Logger; 22 import org.mmbase.util.logging.Logging; 23 24 29 public class JavaJarPackage extends BasicPackage implements PackageInterface { 30 31 private static Logger log = Logging.getLoggerInstance(JavaJarPackage.class); 32 33 34 37 public JavaJarPackage() { } 38 39 40 45 public boolean install() { 46 boolean result = true; 47 try { 49 50 installStep step = getNextInstallStep(); 52 step.setUserFeedBack("java/jar installer started"); 53 54 step = getNextInstallStep(); 56 step.setUserFeedBack("receiving package .."); 57 JarFile jf = getJarFile(); 58 if (jf != null) { 59 step.setUserFeedBack("receiving package ... done (" + jf + ")"); 60 61 step = getNextInstallStep(); 63 step.setUserFeedBack("checking dependencies .."); 64 if (dependsInstalled(jf, step)) { 65 66 step.setUserFeedBack("checking dependencies ... done"); 67 68 step = getNextInstallStep(); 70 step.setUserFeedBack("installing jar files .."); 71 installJars(jf, step); 72 step.setUserFeedBack("installing jar files ... done"); 73 74 step = getNextInstallStep(); 76 step.setUserFeedBack("updating mmbase registry .."); 77 updateRegistryInstalled(); 78 step.setUserFeedBack("updating mmbase registry ... done"); 79 } else { 80 step.setUserFeedBack("checking dependencies ... failed"); 81 setState("failed"); 82 result = false; 83 } 84 } else { 85 step.setUserFeedBack("getting the mmp package...failed (server down or removed disk ? )"); 86 step.setType(installStep.TYPE_ERROR); 87 try { 88 Thread.sleep(2000); 89 } catch(Exception ee) {} 90 } 91 92 step = getNextInstallStep(); 94 step.setUserFeedBack("java/jar installer ended"); 95 96 } catch (Exception e) { 97 log.error("install crash on : " + this); 98 result = false; 99 } 100 return result; 101 } 102 103 104 109 public boolean uninstall() { 110 try { 111 112 installStep step = getNextInstallStep(); 114 step.setUserFeedBack("java/jar uninstaller started"); 115 116 step = getNextInstallStep(); 118 step.setUserFeedBack("updating mmbase registry .."); 119 updateRegistryUninstalled(); 120 step.setUserFeedBack("updating mmbase registry ... done"); 121 122 step = getNextInstallStep(); 124 step.setUserFeedBack("java/jar installer ended"); 125 126 } catch (Exception e) { 127 log.error("install crash on : " + this); 128 } 129 return true; 130 } 131 132 133 140 private boolean installJars(JarFile jf, installStep step) { 141 Enumeration e = jf.entries(); 142 while (e.hasMoreElements()) { 143 ZipEntry zippy = (ZipEntry ) e.nextElement(); 144 145 String name = zippy.getName(); 148 String jardir = PackageManager.getConfigPath(); 149 jardir = jardir.substring(0, jardir.length() - 6) + "lib" + File.separator; 150 151 if (name.indexOf("jars/") == 0) { 153 installStep substep = step.getNextInstallStep(); 154 name = name.substring(5); 156 157 if (zippy.isDirectory()) { 159 File d = new File (jardir + name); 160 if (!d.exists()) { 161 substep.setUserFeedBack("creating dir : " + jardir + name + ".. "); 162 d.mkdir(); 163 substep.setUserFeedBack("creating dir : " + jardir + name + ".. done"); 164 } 165 } else { 166 substep.setUserFeedBack("creating file : " + jardir + name + ".. "); 167 try { 168 BufferedInputStream in = new BufferedInputStream (jf.getInputStream(zippy)); 169 BufferedOutputStream out = new BufferedOutputStream (new FileOutputStream (jardir + name + "_tmp")); 170 InstallManager.addAutoResetFile(jardir + name + "_tmp"); 171 int val; 172 while ((val = in.read()) != -1) { 173 out.write(val); 174 } 175 out.close(); 176 substep.setUserFeedBack("creating file : " + jardir + name + ".. done"); 177 } catch (IOException f) { 178 substep.setUserFeedBack("creating file : " + jardir + name + ".. failed"); 179 f.printStackTrace(); 180 } 181 } 182 } 183 } 184 return true; 185 } 186 187 } 188 189 | Popular Tags |