| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| package installer; |
| |
| import java.io.*; |
| import javax.swing.JLabel; |
| |
| public class FileUpdater { |
| |
| public static boolean updateProtocolHandler( String installPath, JLabel statusLabel ) { |
| File in_file = null; |
| FileInputStream in = null; |
| File out_file = null; |
| FileWriter out = null; |
| int count = 0; |
| |
| try { |
| 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" ); |
| |
| String[] xmlArray = new String[50]; |
| try { |
| BufferedReader reader = new BufferedReader(new FileReader(in_file)); |
| count = -1; |
| for (String s = reader.readLine(); s != null; s = reader.readLine()) { //</oor:node> |
| count = count + 1; |
| if(s != null) { |
| s.trim(); |
| xmlArray[count] = s; |
| } |
| else |
| break; |
| } |
| } |
| catch( IOException ioe ) { |
| String message = "\nError reading ProtocolHandler.xcu, please view SFrameworkInstall.log."; |
| System.out.println(message); |
| ioe.printStackTrace(); |
| statusLabel.setText(message); |
| return false; |
| } |
| |
| in_file.delete(); |
| |
| 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" ); |
| out_file.createNewFile(); |
| out = new FileWriter( out_file ); |
| |
| for(int i=0; i<count + 1; i++) { |
| out.write(xmlArray[i]+"\n"); |
| if( ( xmlArray[i].indexOf( "<node oor:name=\"HandlerSet\">" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptProtocolHandler" ) == -1 ) ) { |
| out.write( " <node oor:name=\"com.sun.star.comp.ScriptProtocolHandler\" oor:op=\"replace\">\n" ); |
| out.write( " <prop oor:name=\"Protocols\">\n" ); |
| out.write( " <value>script:*</value>\n" ); |
| out.write( " </prop>\n" ); |
| out.write( " </node>\n" ); |
| } |
| } |
| } |
| catch( Exception e ) { |
| String message = "\nError updating ProtocolHandler.xcu, please view SFrameworkInstall.log."; |
| System.out.println(message); |
| e.printStackTrace(); |
| statusLabel.setText(message); |
| return false; |
| } |
| finally { |
| try { |
| out.close(); |
| System.out.println("File closed"); |
| } |
| catch(Exception e) { |
| System.out.println("Update ProtocolHandler Failed, please view SFrameworkInstall.log."); |
| System.err.println(e); |
| e.printStackTrace(); |
| } |
| } |
| return true; |
| |
| }// updateProtocolHandler |
| |
| |
| public static boolean updateScriptXLC( String installPath, JLabel statusLabel ) { |
| |
| File in_file = null; |
| FileInputStream in = null; |
| File out_file = null; |
| FileWriter out = null; |
| int count = 0; |
| |
| //System.out.println("updateScriptXLC"); |
| try { |
| in_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"script.xlc" ); |
| |
| String[] xmlArray = new String[50]; |
| try { |
| BufferedReader reader = new BufferedReader(new FileReader(in_file)); |
| count = -1; |
| for (String s = reader.readLine(); s != null; s = reader.readLine()) { //</oor:node> |
| count = count + 1; |
| if(s != null) { |
| s.trim(); |
| xmlArray[count] = s; |
| } |
| else |
| break; |
| } |
| } |
| catch( IOException ioe ) { |
| String message = "Error reading script.xlc, please view SFrameworkInstall.log."; |
| System.out.println(message); |
| ioe.printStackTrace(); |
| statusLabel.setText(message); |
| return false; |
| } |
| |
| in_file.delete(); |
| |
| out_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"script.xlc" ); |
| out_file.createNewFile(); |
| out = new FileWriter( out_file ); |
| |
| //split the string into a string array with one line of xml in each element |
| //String[] xmlArray = xmlLine.split("\n"); |
| for(int i=0; i<count + 1; i++) { |
| out.write(xmlArray[i]+"\n"); |
| if( ( xmlArray[i].indexOf( "<library:libraries xmlns:library" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptBindingLibrary" ) == -1 ) ) { |
| String opSys = System.getProperty("os.name"); |
| if (opSys.indexOf("Windows") != -1) { |
| out.write(" <library:library library:name=\"ScriptBindingLibrary\" library:link=\"true\"/>\n" ); |
| } |
| else { |
| out.write(" <library:library library:name=\"ScriptBindingLibrary\" xlink:href=\"file://"+installPath+"/share/basic/ScriptBindingLibrary/script.xlb/\" xlink:type=\"simple\" library:link=\"true\"/>\n" ); |
| } |
| } |
| } |
| } |
| catch( Exception e ) { |
| String message = "\nError updating script.xlc, please view SFrameworkInstall.log."; |
| System.out.println(message); |
| e.printStackTrace(); |
| statusLabel.setText(message); |
| return false; |
| } |
| finally { |
| try { |
| out.close(); |
| } |
| catch(Exception e) { |
| System.out.println("Update Script.xlc Failed, please view SFrameworkInstall.log."); |
| e.printStackTrace(); |
| System.err.println(e); |
| } |
| } |
| return true; |
| }// updateScriptXLC |
| |
| |
| public static boolean updateDialogXLC( String installPath, JLabel statusLabel ) { |
| File in_file = null; |
| FileInputStream in = null; |
| File out_file = null; |
| FileWriter out = null; |
| int count = 0; |
| |
| //System.out.println( "updateDialogXLC" ); |
| try { |
| in_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"dialog.xlc" ); |
| String xmlLine = ""; |
| |
| String[] xmlArray = new String[50]; |
| try { |
| BufferedReader reader = new BufferedReader(new FileReader(in_file)); |
| count = -1; |
| for (String s = reader.readLine(); s != null; s = reader.readLine()) { |
| count = count + 1; |
| if(s != null) { |
| s.trim(); |
| xmlArray[count] = s; |
| } |
| else |
| break; |
| } |
| } |
| catch( IOException ioe ) { |
| |
| String message = "\nError reading dialog.xlc, please view SFrameworkInstall.log."; |
| System.out.println(message); |
| statusLabel.setText(message); |
| return false; |
| } |
| in_file.delete(); |
| |
| out_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"dialog.xlc" ); |
| out_file.createNewFile(); |
| |
| out = new FileWriter( out_file ); |
| |
| //split the string into a string array with one line of xml in each element |
| // String[] xmlArray = xmlLine.split("\n"); |
| for(int i=0; i<count + 1; i++) { |
| out.write(xmlArray[i]+"\n"); |
| if( ( xmlArray[i].indexOf( "<library:libraries xmlns:library" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptBindingLibrary" ) == -1 ) ) { |
| String opSys = System.getProperty("os.name"); |
| if (opSys.indexOf("Windows") != -1) { |
| out.write(" <library:library library:name=\"ScriptBindingLibrary\" library:link=\"true\"/>\n" ); |
| } |
| else { |
| out.write(" <library:library library:name=\"ScriptBindingLibrary\" xlink:href=\"file://"+installPath+"/share/basic/ScriptBindingLibrary/dialog.xlb/\" xlink:type=\"simple\" library:link=\"true\"/>\n" ); |
| } |
| } |
| } |
| } |
| catch( Exception e ) { |
| String message = "\nError updating dialog.xlc, please view SFrameworkInstall.log."; |
| System.out.println(message); |
| e.printStackTrace(); |
| statusLabel.setText(message); |
| return false; |
| } |
| finally { |
| try { |
| out.close(); |
| } |
| catch(Exception e) { |
| System.out.println("Update dialog.xlc Failed, please view SFrameworkInstall.log."); |
| e.printStackTrace(); |
| System.err.println(e); |
| } |
| } |
| return true; |
| }// updateScriptXLC |
| |
| |
| } |