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