blob: b7d8d873dddd03649e89659dcd13b09ed0d7954d [file] [log] [blame]
/**************************************************************
*
* 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
}