[14982] | 1 | package com.installshield.greenstone3_digital_library_software.event;
|
---|
| 2 |
|
---|
| 3 | import java.io.*;
|
---|
| 4 | import java.net.*;
|
---|
| 5 | import java.util.ArrayList;
|
---|
| 6 | import java.util.StringTokenizer;
|
---|
| 7 | import com.installshield.event.*;
|
---|
| 8 | import com.installshield.event.ui.*;
|
---|
| 9 | import com.installshield.event.wizard.*;
|
---|
| 10 | import com.installshield.event.product.*;
|
---|
| 11 | import com.installshield.wizard.*;
|
---|
| 12 | import com.installshield.wizard.service.*;
|
---|
| 13 | import com.installshield.wizard.service.file.*;
|
---|
| 14 | import com.installshield.wizard.awt.*;
|
---|
| 15 | import com.installshield.wizard.swing.*;
|
---|
| 16 | import com.installshield.wizard.console.*;
|
---|
| 17 | import com.installshield.product.*;
|
---|
| 18 | import com.installshield.util.*;
|
---|
| 19 | import com.installshield.ui.controls.*;
|
---|
| 20 | import com.installshield.database.designtime.*;
|
---|
| 21 | import com.installshield.product.service.product.*;
|
---|
| 22 |
|
---|
| 23 | public class InstallScript
|
---|
| 24 | {
|
---|
| 25 |
|
---|
| 26 | /* DONE
|
---|
| 27 |
|
---|
| 28 | public void onInstalled_AntBuildFiles(ISContext context) {
|
---|
| 29 |
|
---|
| 30 | String productInstallLocation = context.resolveString("$P(absoluteInstallLocation)");
|
---|
| 31 | String configFile = context.resolveString("$PATH(" + productInstallLocation +", build.properties)");
|
---|
| 32 | String tomcatPort = context.resolveString("$V(START_PORT)");
|
---|
| 33 | String tomcatShutdownPort = context.resolveString("$V(SHUTDOWN_PORT)");
|
---|
| 34 |
|
---|
| 35 | System.out.println("tomcatPort: "+tomcatPort);
|
---|
| 36 | System.out.println("java version = "+context.resolveString("$J(java.version)"));
|
---|
| 37 | ArrayList fileLines = readInFile(configFile);
|
---|
| 38 |
|
---|
| 39 | if (fileLines != null) {
|
---|
| 40 | setupReplace(fileLines, "tomcat.port", tomcatPort);
|
---|
| 41 | setupReplace(fileLines, "tomcat.shutdown.port", tomcatShutdownPort);
|
---|
| 42 | writeOutFile(configFile, fileLines);
|
---|
| 43 | }
|
---|
| 44 | }
|
---|
| 45 |
|
---|
| 46 | public void onReplaced_AntBuildFiles(ComponentReplaceContext context) {
|
---|
| 47 | onInstalled_AntBuildFiles(context);
|
---|
| 48 | }
|
---|
| 49 |
|
---|
| 50 | */
|
---|
| 51 |
|
---|
| 52 | public void onInstalled_Tomcat(ISContext context) {
|
---|
| 53 |
|
---|
| 54 | /* DONE
|
---|
| 55 | // modify server.xml
|
---|
| 56 | String installLocation = context.resolveString("$P(absoluteInstallLocation)");
|
---|
| 57 | String templateServerXML = context.resolveString("$PATH(" + installLocation +", resources/tomcat/server.xml)");
|
---|
| 58 | String finalServerXML = context.resolveString("$PATH(" + installLocation +", packages/tomcat/conf/server.xml)");
|
---|
| 59 |
|
---|
| 60 | String tomcatPort = context.resolveString("$V(START_PORT)");
|
---|
| 61 | String tomcatShutdownPort=context.resolveString("$V(SHUTDOWN_PORT)");
|
---|
| 62 |
|
---|
| 63 | ArrayList fileLines = readInFile(templateServerXML);
|
---|
| 64 | if (fileLines != null) {
|
---|
| 65 | queryReplace(fileLines, "@port@", tomcatPort);
|
---|
| 66 | queryReplace(fileLines, "@shutdown-port@", tomcatShutdownPort);
|
---|
| 67 | writeOutFile(finalServerXML, fileLines);
|
---|
| 68 | }
|
---|
| 69 |
|
---|
| 70 |
|
---|
| 71 |
|
---|
| 72 | // copy greenstone3.xml into tomcat directory
|
---|
| 73 | String templateGreenstone3Context = context.resolveString("$PATH(" + installLocation +", resources/tomcat/greenstone3.xml)");
|
---|
| 74 | String finalGreenstone3Context = context.resolveString("$PATH(" + installLocation +", packages/tomcat/conf/Catalina/localhost/greenstone3.xml)");
|
---|
| 75 |
|
---|
| 76 | fileLines = readInFile(templateGreenstone3Context);
|
---|
| 77 | String webDir = context.resolveString("$PATH(" + installLocation +", web)");
|
---|
| 78 | if (context.resolveString("$J(os.name)").startsWith("Windows")) {
|
---|
| 79 | // replace \ with \\ (I think)
|
---|
| 80 | webDir = webDir.replaceAll("\\\\", "\\\\\\\\\\\\\\\\");
|
---|
| 81 | }
|
---|
| 82 |
|
---|
| 83 | if (fileLines != null) {
|
---|
| 84 | queryReplace(fileLines, "@gsdl3webhome@", webDir);
|
---|
| 85 | writeOutFile(finalGreenstone3Context, fileLines);
|
---|
| 86 | }
|
---|
| 87 |
|
---|
| 88 | System.out.println("java version = "+context.resolveString("$J(java.version)"));
|
---|
| 89 |
|
---|
| 90 | }
|
---|
| 91 |
|
---|
| 92 |
|
---|
| 93 | public void onReplaced_Tomcat(ComponentReplaceContext context)
|
---|
| 94 | {
|
---|
| 95 | onInstalled_Tomcat(context);
|
---|
| 96 | }
|
---|
| 97 |
|
---|
| 98 |
|
---|
| 99 | public void onInstalled_GS2BuildSetupBat(ISContext context) {
|
---|
| 100 |
|
---|
| 101 | if (context.resolveString("$J(os.name)").startsWith("Windows")) {
|
---|
| 102 | String installLocation = context.resolveString("$P(absoluteInstallLocation)");
|
---|
| 103 | String setupBatFile = context.resolveString("$PATH("+ installLocation+", gs2build/setup.bat)");
|
---|
| 104 | String gsdlhome = context.resolveString("$PATH("+ installLocation+", gs2build)");
|
---|
| 105 | ArrayList fileLines = readInFile(setupBatFile);
|
---|
| 106 | gsdlhome = gsdlhome.replaceAll("\\\\", "/");
|
---|
| 107 | if (fileLines != null) {
|
---|
| 108 | queryReplace(fileLines, "@gsdlhome@",gsdlhome);
|
---|
| 109 | writeOutFile(setupBatFile, fileLines);
|
---|
| 110 | }
|
---|
| 111 | }
|
---|
| 112 | }
|
---|
| 113 |
|
---|
| 114 |
|
---|
| 115 | public void onReplaced_GS2BuildSetupBat(ComponentReplaceContext context) {
|
---|
| 116 | onInstalled_GS2BuildSetupBat(context);
|
---|
| 117 | }
|
---|
| 118 | */
|
---|
| 119 |
|
---|
| 120 | public void onInstalled_WebDirectory(ISContext context)
|
---|
| 121 | {
|
---|
| 122 | String installLocation = context.resolveString("$P(absoluteInstallLocation)");
|
---|
| 123 | // rename some jar files if Java version is 1.5
|
---|
| 124 | /*String java_ver = context.resolveString("$J(java.version)");
|
---|
| 125 |
|
---|
| 126 | if (java_ver.equals("1.5")) {
|
---|
| 127 |
|
---|
| 128 | String xalanTmpFile = context.resolveString("$PATH(" + installLocation +", web/WEB-INF/lib/xalan.jar.tmp)");
|
---|
| 129 | String xalanJarFile = context.resolveString("$PATH(" + installLocation +", web/WEB-INF/lib/xalan.jar)");
|
---|
| 130 | renameFile(context,xalanTmpFile,xalanJarFile);
|
---|
| 131 |
|
---|
| 132 | String xercesImplTmpFile = context.resolveString("$PATH(" + installLocation +", web/WEB-INF/lib/xercesImpl.jar.tmp)");
|
---|
| 133 | String xercesImplJarFile = context.resolveString("$PATH(" + installLocation +", web/WEB-INF/lib/xercesImpl.jar)");
|
---|
| 134 | renameFile(context,xercesImplTmpFile,xercesImplJarFile);
|
---|
| 135 | }
|
---|
| 136 |
|
---|
| 137 |
|
---|
| 138 | String webDir = context.resolveString("$PATH(" + installLocation +", web)");
|
---|
| 139 | // on windows, turn the path back into linux style
|
---|
| 140 | if (context.resolveString("$J(os.name)").startsWith("Windows")) {
|
---|
| 141 | webDir = webDir.replaceAll("\\\\", "/");
|
---|
| 142 | }
|
---|
| 143 |
|
---|
| 144 | String tomcatPort = context.resolveString("$V(START_PORT)");
|
---|
| 145 |
|
---|
| 146 | // Set up global.properties
|
---|
| 147 | String templateGlobalProperties = context.resolveString("$PATH(" + installLocation +", resources/java/global.properties.in)");
|
---|
| 148 | String finalGlobalProperties = context.resolveString("$PATH(" + installLocation +", web/WEB-INF/classes/global.properties)");
|
---|
| 149 |
|
---|
| 150 |
|
---|
| 151 | ArrayList fileLines = readInFile(templateGlobalProperties);
|
---|
| 152 | if (fileLines != null) {
|
---|
| 153 | queryReplace(fileLines, "@gsdl3home@", webDir);
|
---|
| 154 | queryReplace(fileLines, "@tomcat.server@", "localhost");
|
---|
| 155 | queryReplace(fileLines, "@tomcat.port@", tomcatPort);
|
---|
| 156 | writeOutFile(finalGlobalProperties, fileLines);
|
---|
| 157 | }
|
---|
| 158 |
|
---|
| 159 |
|
---|
| 160 | // Set up log4j.properties
|
---|
| 161 | String templateLog4jProperties = context.resolveString("$PATH(" + installLocation +", resources/java/log4j.properties.in)");
|
---|
| 162 | String finalLog4jProperties = context.resolveString("$PATH(" + installLocation +", web/WEB-INF/classes/log4j.properties)");
|
---|
| 163 |
|
---|
| 164 | fileLines = readInFile(templateLog4jProperties);
|
---|
| 165 | if (fileLines != null) {
|
---|
| 166 | queryReplace(fileLines, "@gsdl3home@", webDir);
|
---|
| 167 | writeOutFile(finalLog4jProperties, fileLines);
|
---|
| 168 | }
|
---|
| 169 | */
|
---|
| 170 |
|
---|
| 171 | }
|
---|
| 172 |
|
---|
| 173 | public void onReplaced_WebDirectory(ComponentReplaceContext context)
|
---|
| 174 | {
|
---|
| 175 | onInstalled_WebDirectory(context);
|
---|
| 176 | }
|
---|
| 177 |
|
---|
| 178 | // --------------------------------------------------
|
---|
| 179 | // General methods
|
---|
| 180 | // --------------------------------------------------
|
---|
| 181 |
|
---|
| 182 | public ArrayList readInFile(String file) {
|
---|
| 183 | try {
|
---|
| 184 | ArrayList fileLines = new ArrayList();
|
---|
| 185 | String line = null;
|
---|
| 186 | BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
|
---|
| 187 | while ((line = bufferedReader.readLine()) != null ) {
|
---|
| 188 | fileLines.add(line);
|
---|
| 189 | }
|
---|
| 190 | bufferedReader.close();
|
---|
| 191 | return fileLines;
|
---|
| 192 | } catch (Exception e) {
|
---|
| 193 | System.err.println("exception: "+e);
|
---|
| 194 | return null;
|
---|
| 195 | }
|
---|
| 196 |
|
---|
| 197 | }
|
---|
| 198 |
|
---|
| 199 |
|
---|
| 200 | public void writeOutFile(String file, ArrayList fileLines) {
|
---|
| 201 | try {
|
---|
| 202 | PrintWriter printWriter = new PrintWriter(new BufferedWriter(new FileWriter(file)));
|
---|
| 203 | for (int i=0; i<fileLines.size(); i++) {
|
---|
| 204 | printWriter.println(fileLines.get(i));
|
---|
| 205 | }
|
---|
| 206 | printWriter.flush();
|
---|
| 207 | printWriter.close();
|
---|
| 208 | } catch (Exception e) {
|
---|
| 209 | System.err.println("exception: "+e);
|
---|
| 210 | return;
|
---|
| 211 | }
|
---|
| 212 | }
|
---|
| 213 |
|
---|
| 214 | public void queryReplace(ArrayList strings, String fromText, String toText) {
|
---|
| 215 | for (int i=0; i<strings.size(); i++) {
|
---|
| 216 | strings.set(i, ((String)strings.get(i)).replaceAll(fromText, toText));
|
---|
| 217 | }
|
---|
| 218 | }
|
---|
| 219 |
|
---|
| 220 | public ArrayList setupReplace (ArrayList fileLines, String param, String newValue){
|
---|
| 221 |
|
---|
| 222 | String oneLine=null;
|
---|
| 223 | String newLine=null;
|
---|
| 224 | String name=null;
|
---|
| 225 | param=param.trim();
|
---|
| 226 |
|
---|
| 227 | for (int i=0;i<fileLines.size();i++) {
|
---|
| 228 | oneLine=((String) fileLines.get(i)).trim();
|
---|
| 229 | StringTokenizer st=new StringTokenizer(oneLine,"=");
|
---|
| 230 |
|
---|
| 231 | if(st.hasMoreTokens()){
|
---|
| 232 | name=st.nextToken();
|
---|
| 233 | if(param.equals(name)){
|
---|
| 234 | newLine=param+"="+newValue;
|
---|
| 235 | fileLines.set(i,newLine);
|
---|
| 236 | break;
|
---|
| 237 | }
|
---|
| 238 |
|
---|
| 239 | }
|
---|
| 240 | }
|
---|
| 241 | return fileLines;
|
---|
| 242 | }
|
---|
| 243 |
|
---|
| 244 | private void renameFile(ISContext context, String sourceFilePathRelative, String targetFilePathRelative)
|
---|
| 245 | {
|
---|
| 246 | String installLocation = context.resolveString("$P(absoluteInstallLocation)");
|
---|
| 247 |
|
---|
| 248 | try {
|
---|
| 249 | FileService fileService = (FileService) context.getService(FileService.NAME);
|
---|
| 250 | String sourceFilePath = context.resolveString("$PATH(" + installLocation + ", " + sourceFilePathRelative + ")");
|
---|
| 251 | String targetFilePath = context.resolveString("$PATH(" + installLocation + ", " + targetFilePathRelative + ")");
|
---|
| 252 | fileService.moveFile(sourceFilePath, targetFilePath, true);
|
---|
| 253 | }
|
---|
| 254 | catch (ServiceException exception) {
|
---|
| 255 | System.err.println("Exception: " + exception);
|
---|
| 256 | exception.printStackTrace();
|
---|
| 257 | }
|
---|
| 258 | }
|
---|
| 259 |
|
---|
| 260 |
|
---|
| 261 | private void deleteFile(ISContext context, String filePathAbsolute)
|
---|
| 262 | {
|
---|
| 263 |
|
---|
| 264 | try {
|
---|
| 265 | FileService fileService = (FileService) context.getService(FileService.NAME);
|
---|
| 266 | fileService.deleteFile(filePathAbsolute);
|
---|
| 267 | }
|
---|
| 268 | catch (ServiceException exception) {
|
---|
| 269 | System.err.println("Exception: " + exception);
|
---|
| 270 | exception.printStackTrace();
|
---|
| 271 | }
|
---|
| 272 | }
|
---|
| 273 |
|
---|
| 274 | private void copyFile(ISContext context, String sourceFilePathRelative, String targetFilePathRelative)
|
---|
| 275 | {
|
---|
| 276 | String installLocation = context.resolveString("$P(absoluteInstallLocation)");
|
---|
| 277 |
|
---|
| 278 | try {
|
---|
| 279 | FileService fileService = (FileService) context.getService(FileService.NAME);
|
---|
| 280 | String sourceFilePath = context.resolveString("$PATH(" + installLocation + ", " + sourceFilePathRelative + ")");
|
---|
| 281 | String targetFilePath = context.resolveString("$PATH(" + installLocation + ", " + targetFilePathRelative + ")");
|
---|
| 282 | fileService.copyFile(sourceFilePath, targetFilePath, true);
|
---|
| 283 | }
|
---|
| 284 | catch (ServiceException exception) {
|
---|
| 285 | System.err.println("Exception: " + exception);
|
---|
| 286 | exception.printStackTrace();
|
---|
| 287 | }
|
---|
| 288 | }
|
---|
| 289 |
|
---|
| 290 |
|
---|
| 291 | public void onInstalled_ant(ComponentInstallContext context)
|
---|
| 292 | {
|
---|
| 293 | String installLocation = context.resolveString("$P(absoluteInstallLocation)");
|
---|
| 294 |
|
---|
| 295 | String linuxsetupfile = context.resolveString("$PATH(" + installLocation +", gs3-setup.sh)");
|
---|
| 296 | String windowssetupfile = context.resolveString("$PATH(" + installLocation +", gs3-setup.bat)");
|
---|
| 297 |
|
---|
| 298 | // Set up ANT_HOME and put it in PATH for linux
|
---|
| 299 | String anthome = context.resolveString("$PATH(" + installLocation +", packages/ant)");
|
---|
| 300 | ArrayList fileLines = readInFile(linuxsetupfile);
|
---|
| 301 | System.out.println("------------------------- fileLines !=null : "+(fileLines !=null));
|
---|
| 302 | if (fileLines !=null){
|
---|
| 303 | fileLines.add("export ANT_HOME="+anthome+"\n");
|
---|
| 304 | fileLines.add("export PATH=$ANT_HOME/bin:$PATH"+"\n");
|
---|
| 305 | writeOutFile(linuxsetupfile, fileLines);
|
---|
| 306 | }
|
---|
| 307 |
|
---|
| 308 | fileLines = readInFile(windowssetupfile);
|
---|
| 309 | if (fileLines !=null){
|
---|
| 310 | fileLines.add("set ANT_HOME="+anthome+"\n");
|
---|
| 311 | fileLines.add("set PATH=%ANT_HOME%/bin;%PATH%"+"\n");
|
---|
| 312 | writeOutFile(windowssetupfile, fileLines);
|
---|
| 313 | }
|
---|
| 314 |
|
---|
| 315 | }
|
---|
| 316 |
|
---|
| 317 |
|
---|
| 318 | }
|
---|