1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski package installer;
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski import java.lang.String;
25*b1cdbd2cSJim Jagielski import java.io.*;
26*b1cdbd2cSJim Jagielski import javax.swing.*;
27*b1cdbd2cSJim Jagielski public class Register{
28*b1cdbd2cSJim Jagielski     private static String[] singletonDefParams = { "drafts.com.sun.star.script.framework.theScriptRuntimeForJava=drafts.com.sun.star.script.framework.ScriptRuntimeForJava",
29*b1cdbd2cSJim Jagielski                                            "drafts.com.sun.star.script.framework.storage.theScriptStorageManager=drafts.com.sun.star.script.framework.storage.ScriptStorageManager",
30*b1cdbd2cSJim Jagielski                                            "drafts.com.sun.star.script.framework.theScriptRuntimeManager=drafts.com.sun.star.script.framework.ScriptRuntimeManager"};
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski 
quotedString( String stringToQuote )33*b1cdbd2cSJim Jagielski     private static String quotedString ( String stringToQuote ) {
34*b1cdbd2cSJim Jagielski             String doubleQuote = "\"";
35*b1cdbd2cSJim Jagielski 	    String result = new String ( doubleQuote + stringToQuote + doubleQuote );
36*b1cdbd2cSJim Jagielski 	    return result;
37*b1cdbd2cSJim Jagielski     }
regSingletons( String path, String progPath, String opSys, JLabel statusLabel )38*b1cdbd2cSJim Jagielski     private static boolean regSingletons( String path, String progPath, String opSys, JLabel statusLabel ) {
39*b1cdbd2cSJim Jagielski         try{
40*b1cdbd2cSJim Jagielski             boolean goodResult = false;
41*b1cdbd2cSJim Jagielski             String[] env = new String[1];
42*b1cdbd2cSJim Jagielski             String regCmd = null;
43*b1cdbd2cSJim Jagielski             ExecCmd command = new ExecCmd();
44*b1cdbd2cSJim Jagielski             for ( int i=0; i<singletonDefParams.length; i++){
45*b1cdbd2cSJim Jagielski                 if ( opSys.indexOf( "Windows" ) == -1 ){
46*b1cdbd2cSJim Jagielski 	            // Not windows
47*b1cdbd2cSJim Jagielski                     env[0] = "LD_LIBRARY_PATH=" + progPath;
48*b1cdbd2cSJim Jagielski                     command.exec( "chmod a+x " + progPath + "regsingleton", null );
49*b1cdbd2cSJim Jagielski                     regCmd = progPath + "regsingleton " + path + "user" + File.separator + "uno_packages" + File.separator + "cache" + File.separator + "services.rdb " + singletonDefParams[i];
50*b1cdbd2cSJim Jagielski                     goodResult = command.exec( regCmd, env );
51*b1cdbd2cSJim Jagielski                 }
52*b1cdbd2cSJim Jagielski                 else {
53*b1cdbd2cSJim Jagielski 		    // Windows
54*b1cdbd2cSJim Jagielski                     regCmd = quotedString( progPath + "regsingleton.exe" ) + " " + quotedString( path + "user" + File.separator + "uno_packages" + File.separator + "cache" + File.separator + "services.rdb" ) + " " + quotedString( singletonDefParams[i] );
55*b1cdbd2cSJim Jagielski                     goodResult = command.exec( regCmd,null );
56*b1cdbd2cSJim Jagielski                 }
57*b1cdbd2cSJim Jagielski                 if ( !goodResult ){
58*b1cdbd2cSJim Jagielski                     System.out.println("Regsingleton cmd failed, cmd: " + regCmd );
59*b1cdbd2cSJim Jagielski                     statusLabel.setText("Regsingleton ScriptRuntimeForJava Failed, please view SFrameworkInstall.log");
60*b1cdbd2cSJim Jagielski                     return false;
61*b1cdbd2cSJim Jagielski 		}
62*b1cdbd2cSJim Jagielski 	    }
63*b1cdbd2cSJim Jagielski 	}
64*b1cdbd2cSJim Jagielski         catch ( Exception e ) {
65*b1cdbd2cSJim Jagielski             String message = "\nError installing scripting package, please view SFrameworkInstall.log.";
66*b1cdbd2cSJim Jagielski             System.out.println(message);
67*b1cdbd2cSJim Jagielski             e.printStackTrace();
68*b1cdbd2cSJim Jagielski             statusLabel.setText(message);
69*b1cdbd2cSJim Jagielski             return false;
70*b1cdbd2cSJim Jagielski         }
71*b1cdbd2cSJim Jagielski         return true;
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski     }
register(String path, JLabel statusLabel)75*b1cdbd2cSJim Jagielski     public static boolean register(String path, JLabel statusLabel) {
76*b1cdbd2cSJim Jagielski         String[] packages = {"ooscriptframe.zip", "bshruntime.zip", "jsruntime.zip"};
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski 	try {
79*b1cdbd2cSJim Jagielski 	    String s=null;
80*b1cdbd2cSJim Jagielski 	    boolean goodResult = false;
81*b1cdbd2cSJim Jagielski 	    String env[] = new String[1];
82*b1cdbd2cSJim Jagielski             ExecCmd command = new ExecCmd();
83*b1cdbd2cSJim Jagielski 	    boolean isWindows =
84*b1cdbd2cSJim Jagielski                 (System.getProperty("os.name").indexOf("Windows") != -1);
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski 	    String progpath = path.concat("program" + File.separator);
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski             statusLabel.setText("Registering Scripting Framework...");
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski             // pkgchk Scripting Framework Components
91*b1cdbd2cSJim Jagielski             statusLabel.setText("Registering Scripting Framework Components...");
92*b1cdbd2cSJim Jagielski 	    System.out.println("Registering Scripting Framework Components...");
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski             for (int i = 0; i < packages.length; i++) {
95*b1cdbd2cSJim Jagielski                 String cmd = "";
96*b1cdbd2cSJim Jagielski 
97*b1cdbd2cSJim Jagielski 	        if (!isWindows) {
98*b1cdbd2cSJim Jagielski 		    env[0]="LD_LIBRARY_PATH=" + progpath;
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 		    goodResult = command.exec("chmod a+x " + progpath + "pkgchk", null );
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski 		    if ( goodResult ){
103*b1cdbd2cSJim Jagielski                         cmd = progpath + "pkgchk -s -f " + progpath + packages[i];
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski 		        System.err.println(cmd);
106*b1cdbd2cSJim Jagielski                         goodResult = command.exec(cmd, env);
107*b1cdbd2cSJim Jagielski                     }
108*b1cdbd2cSJim Jagielski                 }
109*b1cdbd2cSJim Jagielski 	        else {
110*b1cdbd2cSJim Jagielski                     cmd = "\"" + progpath + "pkgchk.exe\" -s -f \"" + progpath +
111*b1cdbd2cSJim Jagielski                         packages[i] + "\"";
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski 		    System.err.println(cmd);
114*b1cdbd2cSJim Jagielski                     goodResult =command.exec(cmd,null);
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski 	        }
117*b1cdbd2cSJim Jagielski                 if (!goodResult) {
118*b1cdbd2cSJim Jagielski                     System.err.println("\nPkgChk Failed");
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski 		    if(!isWindows)
121*b1cdbd2cSJim Jagielski 		        System.err.println("Command: " + cmd + "\n" + env[0]);
122*b1cdbd2cSJim Jagielski 		    else
123*b1cdbd2cSJim Jagielski 			System.err.println("Command: \"" + cmd + "\"");
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski 		    statusLabel.setText(
126*b1cdbd2cSJim Jagielski                         "PkgChk Failed, please view SFrameworkInstall.log");
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski 		    return false;
129*b1cdbd2cSJim Jagielski                 }
130*b1cdbd2cSJim Jagielski 	    }
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski             // if ( !regSingletons( path, progpath, opSys, statusLabel ) )
133*b1cdbd2cSJim Jagielski 	    // {
134*b1cdbd2cSJim Jagielski             //     return false;
135*b1cdbd2cSJim Jagielski             // }
136*b1cdbd2cSJim Jagielski             // updating ProtocolHandler
137*b1cdbd2cSJim Jagielski             /* statusLabel.setText("Updating ProtocolHandler...");
138*b1cdbd2cSJim Jagielski             if(!FileUpdater.updateProtocolHandler(path, statusLabel)) {
139*b1cdbd2cSJim Jagielski 		    statusLabel.setText("Updating ProtocolHandler failed, please view SFrameworkInstall.log");
140*b1cdbd2cSJim Jagielski 		    return false;
141*b1cdbd2cSJim Jagielski 	    } */
142*b1cdbd2cSJim Jagielski 
143*b1cdbd2cSJim Jagielski             // updating StarBasic libraries
144*b1cdbd2cSJim Jagielski             statusLabel.setText("Updating StarBasic libraries...");
145*b1cdbd2cSJim Jagielski             if(!FileUpdater.updateScriptXLC(path, statusLabel)) {
146*b1cdbd2cSJim Jagielski 		    statusLabel.setText("Updating user/basic/script.xlc failed, please view SFrameworkInstall.log");
147*b1cdbd2cSJim Jagielski 		    return false;
148*b1cdbd2cSJim Jagielski 	    }
149*b1cdbd2cSJim Jagielski             if(!FileUpdater.updateDialogXLC(path, statusLabel)) {
150*b1cdbd2cSJim Jagielski 		    statusLabel.setText("Updating user/basic/dialog.xlc failed, please view SFrameworkInstall.log");
151*b1cdbd2cSJim Jagielski 		    return false;
152*b1cdbd2cSJim Jagielski 	    }
153*b1cdbd2cSJim Jagielski 
154*b1cdbd2cSJim Jagielski 	}
155*b1cdbd2cSJim Jagielski 	catch(Exception e){
156*b1cdbd2cSJim Jagielski 		String message = "\nError installing scripting package, please view SFrameworkInstall.log.";
157*b1cdbd2cSJim Jagielski 		System.out.println(message);
158*b1cdbd2cSJim Jagielski 		e.printStackTrace();
159*b1cdbd2cSJim Jagielski 		statusLabel.setText(message);
160*b1cdbd2cSJim Jagielski 		return false;
161*b1cdbd2cSJim Jagielski 	}
162*b1cdbd2cSJim Jagielski 	return true;
163*b1cdbd2cSJim Jagielski     }// register
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski }//Register
166