1 23 24 package org.infoglue.cmsinstaller; 25 26 import java.io.*; 27 import java.util.*; 28 29 public class Uninstaller 30 { 31 34 35 public static void main(String [] args) 36 { 37 Logger.logInfo("******************************************"); 38 Logger.logInfo("* Welcome to the uninstaller of infoglue *"); 39 Logger.logInfo("******************************************"); 40 41 Uninstaller uninstaller = new Uninstaller(); 42 uninstaller.uninstall(); 43 } 44 45 46 49 50 public Uninstaller() 51 { 52 } 53 54 55 60 61 public void createStartMenuItems(List removableDirectories, String dbUrl, String databaseServer, String driverName, String tomcatHomePath, String dbName, String hostName) throws Exception 62 { 63 String operativeSystemName = System.getProperty("os.name"); 64 Logger.logInfo("operativeSystemName:" + operativeSystemName); 65 66 if(operativeSystemName.toLowerCase().indexOf("windows") > -1) 67 { 68 String userHomePath = System.getProperty("user.home"); 69 Logger.logInfo("userHomePath:" + userHomePath); 70 71 String startMenuFolderPath = userHomePath + File.separator + "Start Menu" + File.separator + "Programs" + File.separator + "InfoGlue"; 72 File startMenuFolder = new File(startMenuFolderPath); 73 startMenuFolder.mkdirs(); 74 75 System.err.println("Copying file: " + "org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "Uninstaller.class"); 76 File classFile = new File(startMenuFolder + File.separator + "org" + File.separator + "infoglue" + File.separator + "cmsinstaller"); 77 classFile.mkdirs(); 78 copyInputStream(new FileInputStream("org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "Uninstaller.class"), new BufferedOutputStream(new FileOutputStream(classFile.getPath() + File.separator + "Uninstaller.class"))); 79 80 System.err.println("Copying file: " + "org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "MySQLDatabaseCommander.class"); 81 copyInputStream(new FileInputStream("org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "MySQLDatabaseCommander.class"), new BufferedOutputStream(new FileOutputStream(classFile.getPath() + File.separator + "MySQLDatabaseCommander.class"))); 82 83 System.err.println("Copying file: " + "org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "SQLServerDatabaseCommander.class"); 84 copyInputStream(new FileInputStream("org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "SQLServerDatabaseCommander.class"), new BufferedOutputStream(new FileOutputStream(classFile.getPath() + File.separator + "SQLServerDatabaseCommander.class"))); 85 86 System.err.println("Copying file: " + "org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "DatabaseCommander.class"); 87 copyInputStream(new FileInputStream("org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "DatabaseCommander.class"), new BufferedOutputStream(new FileOutputStream(classFile.getPath() + File.separator + "DatabaseCommander.class"))); 88 89 System.err.println("Copying file: " + "org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "Logger.class"); 90 copyInputStream(new FileInputStream("org" + File.separator + "infoglue" + File.separator + "cmsinstaller" + File.separator + "Logger.class"), new BufferedOutputStream(new FileOutputStream(classFile.getPath() + File.separator + "Logger.class"))); 91 92 System.err.println("Copying file: " + "configTemplates" + File.separator + "Uninstall.bat"); 93 copyInputStream(new FileInputStream("configTemplates" + File.separator + "Uninstall.bat"), new BufferedOutputStream(new FileOutputStream(startMenuFolder + File.separator + "Uninstall.bat"))); 94 System.err.println("Copying file: " + "lib" + File.separator + "mysql-connector-java-3.0.6-stable-bin.jar"); 98 copyInputStream(new FileInputStream("lib" + File.separator + "mysql-connector-java-3.0.6-stable-bin.jar"), new BufferedOutputStream(new FileOutputStream(startMenuFolder + File.separator + "mysql-connector-java-3.0.6-stable-bin.jar"))); 99 100 101 copyInputStream(new FileInputStream("lib" + File.separator + "jtds-0.7.jar"), new BufferedOutputStream(new FileOutputStream(startMenuFolder + File.separator + "jtds-0.7.jar"))); 102 107 113 114 int i = 0; 115 Properties p = new Properties(); 116 Iterator iterator = removableDirectories.iterator(); 117 while(iterator.hasNext()) 118 { 119 String dir = (String )iterator.next(); 120 p.setProperty(i + ".removableDirectory", dir); 121 i++; 122 } 123 124 p.setProperty("dbUrl", dbUrl); 125 p.setProperty("databaseServer", databaseServer); 126 p.setProperty("driverName", driverName); 127 p.setProperty("tomcatHomePath", tomcatHomePath); 128 p.setProperty("dbName", dbName); 129 p.setProperty("hostName", hostName); 130 131 p.store(new FileOutputStream(startMenuFolder + File.separator + "uninstall.properties"), "Uninstall information"); 132 } 133 } 134 135 136 137 140 public void updateTomcatConfiguration(String path) throws Exception 141 { 142 new File(path + File.separator + ".." + File.separator + "webapps" + File.separator + "infoglueCMS.xml").delete(); 143 } 144 145 146 public void createShortcutFile(String programHome) throws Exception 147 { 148 FileInputStream fis = new FileInputStream("configTemplates/Uninstall.lnk"); 149 String result = ""; 150 StringBuffer sb = new StringBuffer (); 151 152 int c; 153 while((c = fis.read()) != -1) 154 { 155 sb.append((char)c); 156 } 157 result = sb.toString(); 158 Logger.logInfo("result" + result); 159 160 result = result.replaceAll("\\{path\\}", programHome); 161 162 PrintWriter pw = new PrintWriter(new FileOutputStream("configTemplates/Uninstall.lnk")); 163 pw.println(result); 164 pw.close(); 165 } 166 167 168 171 172 public void uninstall() 173 { 174 Logger.logInfo("Starting uninstall..."); 175 176 try 177 { 178 Logger.logInfo("Reading uninstall.properties..."); 179 Properties cmsProperties = new Properties(); 180 cmsProperties.load(new FileInputStream("uninstall.properties")); 181 182 int i = 0; 183 String removableDirectory = cmsProperties.getProperty(i + ".removableDirectory"); 184 while(removableDirectory != null) 185 { 186 File currentRemovableDirectory = new File(removableDirectory); 187 Logger.logInfo("Removing directory " + currentRemovableDirectory.getName()); 188 currentRemovableDirectory.delete(); 189 i++; 190 removableDirectory = cmsProperties.getProperty(i + ".removableDirectory"); 191 } 192 193 String url = cmsProperties.getProperty("dbUrl"); 194 String databaseServer = cmsProperties.getProperty("databaseServer"); 195 String databasePort = cmsProperties.getProperty("databasePort"); 196 String databaseInstance = cmsProperties.getProperty("databaseInstance"); 197 String driverName = cmsProperties.getProperty("driverName"); 198 String dbName = cmsProperties.getProperty("dbName"); 199 String dbSuffix = cmsProperties.getProperty("dbSuffix"); 200 String hostName = cmsProperties.getProperty("hostName"); 201 202 System.out.print("Do you want to delete the database and all associated data as well (This action will be irreversible). [Yes]:"); 203 if(getInputWithDefault("Yes").toLowerCase().indexOf("yes") > -1) 204 { 205 System.out.print("Please state the database administrator username:"); 206 String userName = getInputWithDefault(""); 207 System.out.print("Please state the database administrator password:"); 208 String password = getInputWithDefault(""); 209 210 MySQLDatabaseCommander commander = new MySQLDatabaseCommander(driverName, databaseServer, databasePort, databaseInstance, url, userName, password, "", "", dbName, dbSuffix, hostName, false, false, false, false, false); 211 commander.deleteDatabase(); 212 } 213 214 updateTomcatConfiguration(cmsProperties.getProperty("tomcatHomePath")); 215 216 String currentDir = System.getProperty("user.dir"); 217 new File(currentDir).deleteOnExit(); 218 219 System.exit(0); 220 } 221 catch(Exception e) 222 { 223 Logger.logInfo("Error:" + e.getMessage()); 224 } 225 } 226 227 228 231 232 private void copyInputStream(InputStream in, OutputStream out) throws IOException 233 { 234 byte[] buffer = new byte[1024]; 235 int len; 236 237 while((len = in.read(buffer)) >= 0) 238 out.write(buffer, 0, len); 239 240 in.close(); 241 out.close(); 242 } 243 244 245 public String getInputWithDefault(String defaultValue) throws Exception 246 { 247 String value = ""; 248 249 while (true) 251 { 252 char c = (char)System.in.read(); 253 if (c == '\r') 254 { 255 c = (char)System.in.read(); 256 if (c == '\n') 257 { 258 break; 259 } 260 else 261 { 262 continue; 263 } 264 } 265 else if (c == '\n') 266 { 267 break; 268 } 269 else 270 { 271 value += c; 272 } 273 } 274 275 if(value.equals("")) 276 value = defaultValue; 277 278 return value; 279 } 280 } | Popular Tags |