summaryrefslogtreecommitdiff
path: root/scripting/workben/installer/FileUpdater.java
diff options
context:
space:
mode:
Diffstat (limited to 'scripting/workben/installer/FileUpdater.java')
-rw-r--r--scripting/workben/installer/FileUpdater.java232
1 files changed, 232 insertions, 0 deletions
diff --git a/scripting/workben/installer/FileUpdater.java b/scripting/workben/installer/FileUpdater.java
new file mode 100644
index 000000000000..76b5358eb6fe
--- /dev/null
+++ b/scripting/workben/installer/FileUpdater.java
@@ -0,0 +1,232 @@
+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
+
+
+}