xref: /trunk/main/scripting/workben/installer/FileUpdater.java (revision 3309286857f19787ae62bd793a98b5af4edd2ad3)
1*cd519653SAndrew Rist /**************************************************************
2*cd519653SAndrew Rist  *
3*cd519653SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*cd519653SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*cd519653SAndrew Rist  * distributed with this work for additional information
6*cd519653SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*cd519653SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*cd519653SAndrew Rist  * "License"); you may not use this file except in compliance
9*cd519653SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*cd519653SAndrew Rist  *
11*cd519653SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*cd519653SAndrew Rist  *
13*cd519653SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*cd519653SAndrew Rist  * software distributed under the License is distributed on an
15*cd519653SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*cd519653SAndrew Rist  * KIND, either express or implied.  See the License for the
17*cd519653SAndrew Rist  * specific language governing permissions and limitations
18*cd519653SAndrew Rist  * under the License.
19*cd519653SAndrew Rist  *
20*cd519653SAndrew Rist  *************************************************************/
21*cd519653SAndrew Rist 
22cdf0e10cSrcweir package installer;
23cdf0e10cSrcweir 
24cdf0e10cSrcweir import java.io.*;
25cdf0e10cSrcweir import javax.swing.JLabel;
26cdf0e10cSrcweir 
27cdf0e10cSrcweir public class FileUpdater {
28cdf0e10cSrcweir 
updateProtocolHandler( String installPath, JLabel statusLabel )29cdf0e10cSrcweir     public static boolean updateProtocolHandler( String installPath, JLabel statusLabel ) {
30cdf0e10cSrcweir             File in_file = null;
31cdf0e10cSrcweir             FileInputStream in = null;
32cdf0e10cSrcweir             File out_file = null;
33cdf0e10cSrcweir             FileWriter out = null;
34cdf0e10cSrcweir             int count = 0;
35cdf0e10cSrcweir 
36cdf0e10cSrcweir             try {
37cdf0e10cSrcweir                 in_file = new File( installPath+File.separator+"share"+File.separator+"registry"+File.separator+"data"+File.separator+"org"+File.separator+"openoffice"+File.separator+"Office"+File.separator+"ProtocolHandler.xcu" );
38cdf0e10cSrcweir 
39cdf0e10cSrcweir         String[] xmlArray = new String[50];
40cdf0e10cSrcweir         try {
41cdf0e10cSrcweir             BufferedReader reader = new BufferedReader(new FileReader(in_file));
42cdf0e10cSrcweir             count = -1;
43cdf0e10cSrcweir                 for (String s = reader.readLine(); s != null; s = reader.readLine()) { //</oor:node>
44cdf0e10cSrcweir                 count = count + 1;
45cdf0e10cSrcweir                 if(s != null) {
46cdf0e10cSrcweir                     s.trim();
47cdf0e10cSrcweir                     xmlArray[count] = s;
48cdf0e10cSrcweir                 }
49cdf0e10cSrcweir                 else
50cdf0e10cSrcweir                     break;
51cdf0e10cSrcweir             }
52cdf0e10cSrcweir         }
53cdf0e10cSrcweir         catch( IOException ioe ) {
54cdf0e10cSrcweir             String message = "\nError reading ProtocolHandler.xcu, please view SFrameworkInstall.log.";
55cdf0e10cSrcweir             System.out.println(message);
56cdf0e10cSrcweir             ioe.printStackTrace();
57cdf0e10cSrcweir             statusLabel.setText(message);
58cdf0e10cSrcweir             return false;
59cdf0e10cSrcweir         }
60cdf0e10cSrcweir 
61cdf0e10cSrcweir         in_file.delete();
62cdf0e10cSrcweir 
63cdf0e10cSrcweir                 out_file = new File( installPath+File.separator+"share"+File.separator+"registry"+File.separator+"data"+File.separator+"org"+File.separator+"openoffice"+File.separator+"Office"+File.separator+"ProtocolHandler.xcu" );
64cdf0e10cSrcweir                 out_file.createNewFile();
65cdf0e10cSrcweir                 out = new FileWriter( out_file );
66cdf0e10cSrcweir 
67cdf0e10cSrcweir         for(int i=0; i<count + 1; i++) {
68cdf0e10cSrcweir                     out.write(xmlArray[i]+"\n");
69cdf0e10cSrcweir                     if( ( xmlArray[i].indexOf( "<node oor:name=\"HandlerSet\">" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptProtocolHandler" ) == -1 ) ) {
70cdf0e10cSrcweir                         out.write( "        <node oor:name=\"com.sun.star.comp.ScriptProtocolHandler\" oor:op=\"replace\">\n" );
71cdf0e10cSrcweir                         out.write( "            <prop oor:name=\"Protocols\">\n" );
72cdf0e10cSrcweir                         out.write( "                <value>script:*</value>\n" );
73cdf0e10cSrcweir                         out.write( "            </prop>\n" );
74cdf0e10cSrcweir                         out.write( "        </node>\n" );
75cdf0e10cSrcweir                      }
76cdf0e10cSrcweir                 }
77cdf0e10cSrcweir             }
78cdf0e10cSrcweir             catch( Exception e ) {
79cdf0e10cSrcweir         String message = "\nError updating ProtocolHandler.xcu, please view SFrameworkInstall.log.";
80cdf0e10cSrcweir                 System.out.println(message);
81cdf0e10cSrcweir         e.printStackTrace();
82cdf0e10cSrcweir         statusLabel.setText(message);
83cdf0e10cSrcweir         return false;
84cdf0e10cSrcweir             }
85cdf0e10cSrcweir             finally {
86cdf0e10cSrcweir                 try {
87cdf0e10cSrcweir                     out.close();
88cdf0e10cSrcweir                     System.out.println("File closed");
89cdf0e10cSrcweir                 }
90cdf0e10cSrcweir                 catch(Exception e) {
91cdf0e10cSrcweir                     System.out.println("Update ProtocolHandler Failed, please view SFrameworkInstall.log.");
92cdf0e10cSrcweir             System.err.println(e);
93cdf0e10cSrcweir             e.printStackTrace();
94cdf0e10cSrcweir                 }
95cdf0e10cSrcweir             }
96cdf0e10cSrcweir         return true;
97cdf0e10cSrcweir 
98cdf0e10cSrcweir     }// updateProtocolHandler
99cdf0e10cSrcweir 
100cdf0e10cSrcweir 
updateScriptXLC( String installPath, JLabel statusLabel )101cdf0e10cSrcweir         public static boolean updateScriptXLC( String installPath, JLabel statusLabel ) {
102cdf0e10cSrcweir 
103cdf0e10cSrcweir             File in_file = null;
104cdf0e10cSrcweir             FileInputStream in = null;
105cdf0e10cSrcweir             File out_file = null;
106cdf0e10cSrcweir             FileWriter out = null;
107cdf0e10cSrcweir             int count = 0;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir         //System.out.println("updateScriptXLC");
110cdf0e10cSrcweir             try {
111cdf0e10cSrcweir                 in_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"script.xlc" );
112cdf0e10cSrcweir 
113cdf0e10cSrcweir         String[] xmlArray = new String[50];
114cdf0e10cSrcweir         try {
115cdf0e10cSrcweir             BufferedReader reader = new BufferedReader(new FileReader(in_file));
116cdf0e10cSrcweir             count = -1;
117cdf0e10cSrcweir                 for (String s = reader.readLine(); s != null; s = reader.readLine()) { //</oor:node>
118cdf0e10cSrcweir                 count = count + 1;
119cdf0e10cSrcweir                 if(s != null) {
120cdf0e10cSrcweir                     s.trim();
121cdf0e10cSrcweir                     xmlArray[count] = s;
122cdf0e10cSrcweir                 }
123cdf0e10cSrcweir                 else
124cdf0e10cSrcweir                     break;
125cdf0e10cSrcweir             }
126cdf0e10cSrcweir         }
127cdf0e10cSrcweir         catch( IOException ioe ) {
128cdf0e10cSrcweir             String message = "Error reading script.xlc, please view SFrameworkInstall.log.";
129cdf0e10cSrcweir             System.out.println(message);
130cdf0e10cSrcweir             ioe.printStackTrace();
131cdf0e10cSrcweir             statusLabel.setText(message);
132cdf0e10cSrcweir             return false;
133cdf0e10cSrcweir         }
134cdf0e10cSrcweir 
135cdf0e10cSrcweir         in_file.delete();
136cdf0e10cSrcweir 
137cdf0e10cSrcweir                 out_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"script.xlc" );
138cdf0e10cSrcweir                 out_file.createNewFile();
139cdf0e10cSrcweir                 out = new FileWriter( out_file );
140cdf0e10cSrcweir 
141cdf0e10cSrcweir                 //split the string into a string array with one line of xml in each element
142cdf0e10cSrcweir                 //String[] xmlArray = xmlLine.split("\n");
143cdf0e10cSrcweir         for(int i=0; i<count + 1; i++) {
144cdf0e10cSrcweir                     out.write(xmlArray[i]+"\n");
145cdf0e10cSrcweir                     if( ( xmlArray[i].indexOf( "<library:libraries xmlns:library" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptBindingLibrary" ) == -1 ) ) {
146cdf0e10cSrcweir             String opSys = System.getProperty("os.name");
147cdf0e10cSrcweir             if (opSys.indexOf("Windows") != -1) {
148cdf0e10cSrcweir                 out.write(" <library:library library:name=\"ScriptBindingLibrary\" library:link=\"true\"/>\n" );
149cdf0e10cSrcweir             }
150cdf0e10cSrcweir             else {
151cdf0e10cSrcweir                 out.write(" <library:library library:name=\"ScriptBindingLibrary\" xlink:href=\"file://"+installPath+"/share/basic/ScriptBindingLibrary/script.xlb/\" xlink:type=\"simple\" library:link=\"true\"/>\n" );
152cdf0e10cSrcweir             }
153cdf0e10cSrcweir                      }
154cdf0e10cSrcweir                 }
155cdf0e10cSrcweir             }
156cdf0e10cSrcweir             catch( Exception e ) {
157cdf0e10cSrcweir             String message = "\nError updating script.xlc, please view SFrameworkInstall.log.";
158cdf0e10cSrcweir             System.out.println(message);
159cdf0e10cSrcweir             e.printStackTrace();
160cdf0e10cSrcweir             statusLabel.setText(message);
161cdf0e10cSrcweir             return false;
162cdf0e10cSrcweir             }
163cdf0e10cSrcweir             finally {
164cdf0e10cSrcweir                 try {
165cdf0e10cSrcweir                     out.close();
166cdf0e10cSrcweir                 }
167cdf0e10cSrcweir                 catch(Exception e) {
168cdf0e10cSrcweir                     System.out.println("Update Script.xlc Failed, please view SFrameworkInstall.log.");
169cdf0e10cSrcweir             e.printStackTrace();
170cdf0e10cSrcweir                     System.err.println(e);
171cdf0e10cSrcweir                 }
172cdf0e10cSrcweir             }
173cdf0e10cSrcweir         return true;
174cdf0e10cSrcweir         }// updateScriptXLC
175cdf0e10cSrcweir 
176cdf0e10cSrcweir 
updateDialogXLC( String installPath, JLabel statusLabel )177cdf0e10cSrcweir         public static boolean updateDialogXLC( String installPath, JLabel statusLabel ) {
178cdf0e10cSrcweir             File in_file = null;
179cdf0e10cSrcweir             FileInputStream in = null;
180cdf0e10cSrcweir             File out_file = null;
181cdf0e10cSrcweir             FileWriter out = null;
182cdf0e10cSrcweir             int count = 0;
183cdf0e10cSrcweir 
184cdf0e10cSrcweir             //System.out.println( "updateDialogXLC" );
185cdf0e10cSrcweir             try {
186cdf0e10cSrcweir                 in_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"dialog.xlc" );
187cdf0e10cSrcweir                 String xmlLine = "";
188cdf0e10cSrcweir 
189cdf0e10cSrcweir         String[] xmlArray = new String[50];
190cdf0e10cSrcweir         try {
191cdf0e10cSrcweir             BufferedReader reader = new BufferedReader(new FileReader(in_file));
192cdf0e10cSrcweir             count = -1;
193cdf0e10cSrcweir                 for (String s = reader.readLine(); s != null; s = reader.readLine()) {
194cdf0e10cSrcweir                 count = count + 1;
195cdf0e10cSrcweir                 if(s != null) {
196cdf0e10cSrcweir                     s.trim();
197cdf0e10cSrcweir                     xmlArray[count] = s;
198cdf0e10cSrcweir                 }
199cdf0e10cSrcweir                 else
200cdf0e10cSrcweir                     break;
201cdf0e10cSrcweir             }
202cdf0e10cSrcweir         }
203cdf0e10cSrcweir         catch( IOException ioe ) {
204cdf0e10cSrcweir 
205cdf0e10cSrcweir             String message = "\nError reading dialog.xlc, please view SFrameworkInstall.log.";
206cdf0e10cSrcweir             System.out.println(message);
207cdf0e10cSrcweir             statusLabel.setText(message);
208cdf0e10cSrcweir             return false;
209cdf0e10cSrcweir         }
210cdf0e10cSrcweir                 in_file.delete();
211cdf0e10cSrcweir 
212cdf0e10cSrcweir                 out_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"dialog.xlc" );
213cdf0e10cSrcweir                 out_file.createNewFile();
214cdf0e10cSrcweir 
215cdf0e10cSrcweir                 out = new FileWriter( out_file );
216cdf0e10cSrcweir 
217cdf0e10cSrcweir                 //split the string into a string array with one line of xml in each element
218cdf0e10cSrcweir                 // String[] xmlArray = xmlLine.split("\n");
219cdf0e10cSrcweir         for(int i=0; i<count + 1; i++) {
220cdf0e10cSrcweir                     out.write(xmlArray[i]+"\n");
221cdf0e10cSrcweir                     if( ( xmlArray[i].indexOf( "<library:libraries xmlns:library" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptBindingLibrary" ) == -1 ) ) {
222cdf0e10cSrcweir             String opSys = System.getProperty("os.name");
223cdf0e10cSrcweir             if (opSys.indexOf("Windows") != -1) {
224cdf0e10cSrcweir                 out.write(" <library:library library:name=\"ScriptBindingLibrary\" library:link=\"true\"/>\n" );
225cdf0e10cSrcweir             }
226cdf0e10cSrcweir             else {
227cdf0e10cSrcweir                 out.write(" <library:library library:name=\"ScriptBindingLibrary\" xlink:href=\"file://"+installPath+"/share/basic/ScriptBindingLibrary/dialog.xlb/\" xlink:type=\"simple\" library:link=\"true\"/>\n" );
228cdf0e10cSrcweir             }
229cdf0e10cSrcweir                      }
230cdf0e10cSrcweir                 }
231cdf0e10cSrcweir             }
232cdf0e10cSrcweir             catch( Exception e ) {
233cdf0e10cSrcweir             String message = "\nError updating dialog.xlc, please view SFrameworkInstall.log.";
234cdf0e10cSrcweir             System.out.println(message);
235cdf0e10cSrcweir             e.printStackTrace();
236cdf0e10cSrcweir             statusLabel.setText(message);
237cdf0e10cSrcweir             return false;
238cdf0e10cSrcweir             }
239cdf0e10cSrcweir             finally {
240cdf0e10cSrcweir                 try {
241cdf0e10cSrcweir                     out.close();
242cdf0e10cSrcweir                 }
243cdf0e10cSrcweir                 catch(Exception e) {
244cdf0e10cSrcweir                     System.out.println("Update dialog.xlc Failed, please view SFrameworkInstall.log.");
245cdf0e10cSrcweir             e.printStackTrace();
246cdf0e10cSrcweir                     System.err.println(e);
247cdf0e10cSrcweir                 }
248cdf0e10cSrcweir             }
249cdf0e10cSrcweir         return true;
250cdf0e10cSrcweir         }// updateScriptXLC
251cdf0e10cSrcweir 
252cdf0e10cSrcweir 
253cdf0e10cSrcweir }
254