1*cdf0e10cSrcweir package installer; 2*cdf0e10cSrcweir 3*cdf0e10cSrcweir import java.io.*; 4*cdf0e10cSrcweir import javax.swing.JLabel; 5*cdf0e10cSrcweir 6*cdf0e10cSrcweir public class FileUpdater { 7*cdf0e10cSrcweir 8*cdf0e10cSrcweir public static boolean updateProtocolHandler( String installPath, JLabel statusLabel ) { 9*cdf0e10cSrcweir File in_file = null; 10*cdf0e10cSrcweir FileInputStream in = null; 11*cdf0e10cSrcweir File out_file = null; 12*cdf0e10cSrcweir FileWriter out = null; 13*cdf0e10cSrcweir int count = 0; 14*cdf0e10cSrcweir 15*cdf0e10cSrcweir try { 16*cdf0e10cSrcweir 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" ); 17*cdf0e10cSrcweir 18*cdf0e10cSrcweir String[] xmlArray = new String[50]; 19*cdf0e10cSrcweir try { 20*cdf0e10cSrcweir BufferedReader reader = new BufferedReader(new FileReader(in_file)); 21*cdf0e10cSrcweir count = -1; 22*cdf0e10cSrcweir for (String s = reader.readLine(); s != null; s = reader.readLine()) { //</oor:node> 23*cdf0e10cSrcweir count = count + 1; 24*cdf0e10cSrcweir if(s != null) { 25*cdf0e10cSrcweir s.trim(); 26*cdf0e10cSrcweir xmlArray[count] = s; 27*cdf0e10cSrcweir } 28*cdf0e10cSrcweir else 29*cdf0e10cSrcweir break; 30*cdf0e10cSrcweir } 31*cdf0e10cSrcweir } 32*cdf0e10cSrcweir catch( IOException ioe ) { 33*cdf0e10cSrcweir String message = "\nError reading ProtocolHandler.xcu, please view SFrameworkInstall.log."; 34*cdf0e10cSrcweir System.out.println(message); 35*cdf0e10cSrcweir ioe.printStackTrace(); 36*cdf0e10cSrcweir statusLabel.setText(message); 37*cdf0e10cSrcweir return false; 38*cdf0e10cSrcweir } 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir in_file.delete(); 41*cdf0e10cSrcweir 42*cdf0e10cSrcweir 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" ); 43*cdf0e10cSrcweir out_file.createNewFile(); 44*cdf0e10cSrcweir out = new FileWriter( out_file ); 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir for(int i=0; i<count + 1; i++) { 47*cdf0e10cSrcweir out.write(xmlArray[i]+"\n"); 48*cdf0e10cSrcweir if( ( xmlArray[i].indexOf( "<node oor:name=\"HandlerSet\">" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptProtocolHandler" ) == -1 ) ) { 49*cdf0e10cSrcweir out.write( " <node oor:name=\"com.sun.star.comp.ScriptProtocolHandler\" oor:op=\"replace\">\n" ); 50*cdf0e10cSrcweir out.write( " <prop oor:name=\"Protocols\">\n" ); 51*cdf0e10cSrcweir out.write( " <value>script:*</value>\n" ); 52*cdf0e10cSrcweir out.write( " </prop>\n" ); 53*cdf0e10cSrcweir out.write( " </node>\n" ); 54*cdf0e10cSrcweir } 55*cdf0e10cSrcweir } 56*cdf0e10cSrcweir } 57*cdf0e10cSrcweir catch( Exception e ) { 58*cdf0e10cSrcweir String message = "\nError updating ProtocolHandler.xcu, please view SFrameworkInstall.log."; 59*cdf0e10cSrcweir System.out.println(message); 60*cdf0e10cSrcweir e.printStackTrace(); 61*cdf0e10cSrcweir statusLabel.setText(message); 62*cdf0e10cSrcweir return false; 63*cdf0e10cSrcweir } 64*cdf0e10cSrcweir finally { 65*cdf0e10cSrcweir try { 66*cdf0e10cSrcweir out.close(); 67*cdf0e10cSrcweir System.out.println("File closed"); 68*cdf0e10cSrcweir } 69*cdf0e10cSrcweir catch(Exception e) { 70*cdf0e10cSrcweir System.out.println("Update ProtocolHandler Failed, please view SFrameworkInstall.log."); 71*cdf0e10cSrcweir System.err.println(e); 72*cdf0e10cSrcweir e.printStackTrace(); 73*cdf0e10cSrcweir } 74*cdf0e10cSrcweir } 75*cdf0e10cSrcweir return true; 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir }// updateProtocolHandler 78*cdf0e10cSrcweir 79*cdf0e10cSrcweir 80*cdf0e10cSrcweir public static boolean updateScriptXLC( String installPath, JLabel statusLabel ) { 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir File in_file = null; 83*cdf0e10cSrcweir FileInputStream in = null; 84*cdf0e10cSrcweir File out_file = null; 85*cdf0e10cSrcweir FileWriter out = null; 86*cdf0e10cSrcweir int count = 0; 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir //System.out.println("updateScriptXLC"); 89*cdf0e10cSrcweir try { 90*cdf0e10cSrcweir in_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"script.xlc" ); 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir String[] xmlArray = new String[50]; 93*cdf0e10cSrcweir try { 94*cdf0e10cSrcweir BufferedReader reader = new BufferedReader(new FileReader(in_file)); 95*cdf0e10cSrcweir count = -1; 96*cdf0e10cSrcweir for (String s = reader.readLine(); s != null; s = reader.readLine()) { //</oor:node> 97*cdf0e10cSrcweir count = count + 1; 98*cdf0e10cSrcweir if(s != null) { 99*cdf0e10cSrcweir s.trim(); 100*cdf0e10cSrcweir xmlArray[count] = s; 101*cdf0e10cSrcweir } 102*cdf0e10cSrcweir else 103*cdf0e10cSrcweir break; 104*cdf0e10cSrcweir } 105*cdf0e10cSrcweir } 106*cdf0e10cSrcweir catch( IOException ioe ) { 107*cdf0e10cSrcweir String message = "Error reading script.xlc, please view SFrameworkInstall.log."; 108*cdf0e10cSrcweir System.out.println(message); 109*cdf0e10cSrcweir ioe.printStackTrace(); 110*cdf0e10cSrcweir statusLabel.setText(message); 111*cdf0e10cSrcweir return false; 112*cdf0e10cSrcweir } 113*cdf0e10cSrcweir 114*cdf0e10cSrcweir in_file.delete(); 115*cdf0e10cSrcweir 116*cdf0e10cSrcweir out_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"script.xlc" ); 117*cdf0e10cSrcweir out_file.createNewFile(); 118*cdf0e10cSrcweir out = new FileWriter( out_file ); 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir //split the string into a string array with one line of xml in each element 121*cdf0e10cSrcweir //String[] xmlArray = xmlLine.split("\n"); 122*cdf0e10cSrcweir for(int i=0; i<count + 1; i++) { 123*cdf0e10cSrcweir out.write(xmlArray[i]+"\n"); 124*cdf0e10cSrcweir if( ( xmlArray[i].indexOf( "<library:libraries xmlns:library" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptBindingLibrary" ) == -1 ) ) { 125*cdf0e10cSrcweir String opSys = System.getProperty("os.name"); 126*cdf0e10cSrcweir if (opSys.indexOf("Windows") != -1) { 127*cdf0e10cSrcweir out.write(" <library:library library:name=\"ScriptBindingLibrary\" library:link=\"true\"/>\n" ); 128*cdf0e10cSrcweir } 129*cdf0e10cSrcweir else { 130*cdf0e10cSrcweir out.write(" <library:library library:name=\"ScriptBindingLibrary\" xlink:href=\"file://"+installPath+"/share/basic/ScriptBindingLibrary/script.xlb/\" xlink:type=\"simple\" library:link=\"true\"/>\n" ); 131*cdf0e10cSrcweir } 132*cdf0e10cSrcweir } 133*cdf0e10cSrcweir } 134*cdf0e10cSrcweir } 135*cdf0e10cSrcweir catch( Exception e ) { 136*cdf0e10cSrcweir String message = "\nError updating script.xlc, please view SFrameworkInstall.log."; 137*cdf0e10cSrcweir System.out.println(message); 138*cdf0e10cSrcweir e.printStackTrace(); 139*cdf0e10cSrcweir statusLabel.setText(message); 140*cdf0e10cSrcweir return false; 141*cdf0e10cSrcweir } 142*cdf0e10cSrcweir finally { 143*cdf0e10cSrcweir try { 144*cdf0e10cSrcweir out.close(); 145*cdf0e10cSrcweir } 146*cdf0e10cSrcweir catch(Exception e) { 147*cdf0e10cSrcweir System.out.println("Update Script.xlc Failed, please view SFrameworkInstall.log."); 148*cdf0e10cSrcweir e.printStackTrace(); 149*cdf0e10cSrcweir System.err.println(e); 150*cdf0e10cSrcweir } 151*cdf0e10cSrcweir } 152*cdf0e10cSrcweir return true; 153*cdf0e10cSrcweir }// updateScriptXLC 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir 156*cdf0e10cSrcweir public static boolean updateDialogXLC( String installPath, JLabel statusLabel ) { 157*cdf0e10cSrcweir File in_file = null; 158*cdf0e10cSrcweir FileInputStream in = null; 159*cdf0e10cSrcweir File out_file = null; 160*cdf0e10cSrcweir FileWriter out = null; 161*cdf0e10cSrcweir int count = 0; 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir //System.out.println( "updateDialogXLC" ); 164*cdf0e10cSrcweir try { 165*cdf0e10cSrcweir in_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"dialog.xlc" ); 166*cdf0e10cSrcweir String xmlLine = ""; 167*cdf0e10cSrcweir 168*cdf0e10cSrcweir String[] xmlArray = new String[50]; 169*cdf0e10cSrcweir try { 170*cdf0e10cSrcweir BufferedReader reader = new BufferedReader(new FileReader(in_file)); 171*cdf0e10cSrcweir count = -1; 172*cdf0e10cSrcweir for (String s = reader.readLine(); s != null; s = reader.readLine()) { 173*cdf0e10cSrcweir count = count + 1; 174*cdf0e10cSrcweir if(s != null) { 175*cdf0e10cSrcweir s.trim(); 176*cdf0e10cSrcweir xmlArray[count] = s; 177*cdf0e10cSrcweir } 178*cdf0e10cSrcweir else 179*cdf0e10cSrcweir break; 180*cdf0e10cSrcweir } 181*cdf0e10cSrcweir } 182*cdf0e10cSrcweir catch( IOException ioe ) { 183*cdf0e10cSrcweir 184*cdf0e10cSrcweir String message = "\nError reading dialog.xlc, please view SFrameworkInstall.log."; 185*cdf0e10cSrcweir System.out.println(message); 186*cdf0e10cSrcweir statusLabel.setText(message); 187*cdf0e10cSrcweir return false; 188*cdf0e10cSrcweir } 189*cdf0e10cSrcweir in_file.delete(); 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir out_file = new File( installPath+File.separator+"user"+File.separator+"basic"+File.separator+"dialog.xlc" ); 192*cdf0e10cSrcweir out_file.createNewFile(); 193*cdf0e10cSrcweir 194*cdf0e10cSrcweir out = new FileWriter( out_file ); 195*cdf0e10cSrcweir 196*cdf0e10cSrcweir //split the string into a string array with one line of xml in each element 197*cdf0e10cSrcweir // String[] xmlArray = xmlLine.split("\n"); 198*cdf0e10cSrcweir for(int i=0; i<count + 1; i++) { 199*cdf0e10cSrcweir out.write(xmlArray[i]+"\n"); 200*cdf0e10cSrcweir if( ( xmlArray[i].indexOf( "<library:libraries xmlns:library" ) != -1 ) && ( xmlArray[i+1].indexOf( "ScriptBindingLibrary" ) == -1 ) ) { 201*cdf0e10cSrcweir String opSys = System.getProperty("os.name"); 202*cdf0e10cSrcweir if (opSys.indexOf("Windows") != -1) { 203*cdf0e10cSrcweir out.write(" <library:library library:name=\"ScriptBindingLibrary\" library:link=\"true\"/>\n" ); 204*cdf0e10cSrcweir } 205*cdf0e10cSrcweir else { 206*cdf0e10cSrcweir out.write(" <library:library library:name=\"ScriptBindingLibrary\" xlink:href=\"file://"+installPath+"/share/basic/ScriptBindingLibrary/dialog.xlb/\" xlink:type=\"simple\" library:link=\"true\"/>\n" ); 207*cdf0e10cSrcweir } 208*cdf0e10cSrcweir } 209*cdf0e10cSrcweir } 210*cdf0e10cSrcweir } 211*cdf0e10cSrcweir catch( Exception e ) { 212*cdf0e10cSrcweir String message = "\nError updating dialog.xlc, please view SFrameworkInstall.log."; 213*cdf0e10cSrcweir System.out.println(message); 214*cdf0e10cSrcweir e.printStackTrace(); 215*cdf0e10cSrcweir statusLabel.setText(message); 216*cdf0e10cSrcweir return false; 217*cdf0e10cSrcweir } 218*cdf0e10cSrcweir finally { 219*cdf0e10cSrcweir try { 220*cdf0e10cSrcweir out.close(); 221*cdf0e10cSrcweir } 222*cdf0e10cSrcweir catch(Exception e) { 223*cdf0e10cSrcweir System.out.println("Update dialog.xlc Failed, please view SFrameworkInstall.log."); 224*cdf0e10cSrcweir e.printStackTrace(); 225*cdf0e10cSrcweir System.err.println(e); 226*cdf0e10cSrcweir } 227*cdf0e10cSrcweir } 228*cdf0e10cSrcweir return true; 229*cdf0e10cSrcweir }// updateScriptXLC 230*cdf0e10cSrcweir 231*cdf0e10cSrcweir 232*cdf0e10cSrcweir } 233