KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quikj > application > utilities > postinstall > ReplaceString


1 /*
2  * ReplaceString.java
3  *
4  * Created on January 8, 2003, 1:59 AM
5  */

6
7 package com.quikj.application.utilities.postinstall;
8
9 import java.util.*;
10 import java.io.*;
11
12 /**
13  *
14  * @author amit
15  */

16 public class ReplaceString
17 {
18     private ArrayList files = new ArrayList();
19     private String JavaDoc stringToReplace;
20     private String JavaDoc stringNewValue;
21     private String JavaDoc errorMessage = "";
22     private int numReplaced = 0;
23     
24     /** Creates a new instance of ReplaceString */
25     public ReplaceString()
26     {
27     }
28     
29     public void addFile(String JavaDoc filename)
30     {
31         files.add(filename);
32     }
33     
34     public int numFiles()
35     {
36         return files.size();
37     }
38     
39     public String JavaDoc getFileAt (int index)
40     {
41         return (String JavaDoc)files.get(index);
42     }
43     
44     /** Getter for property stringToReplace.
45      * @return Value of property stringToReplace.
46      *
47      */

48     public java.lang.String JavaDoc getStringToReplace()
49     {
50         return stringToReplace;
51     }
52     
53     /** Setter for property stringToReplace.
54      * @param stringToReplace New value of property stringToReplace.
55      *
56      */

57     public void setStringToReplace(java.lang.String JavaDoc stringToReplace)
58     {
59         this.stringToReplace = stringToReplace;
60     }
61     
62     /** Getter for property stringNewValue.
63      * @return Value of property stringNewValue.
64      *
65      */

66     public java.lang.String JavaDoc getStringNewValue()
67     {
68         return stringNewValue;
69     }
70     
71     /** Setter for property stringNewValue.
72      * @param stringNewValue New value of property stringNewValue.
73      *
74      */

75     public void setStringNewValue(java.lang.String JavaDoc stringNewValue)
76     {
77         this.stringNewValue = stringNewValue;
78     }
79     
80     public boolean replace()
81     {
82         int size = numFiles();
83         char[] arr = new char[100];
84         
85         for (int i = 0; i < size; i++)
86         {
87             String JavaDoc filename = getFileAt(i);
88             
89             // copy the content of the file in a memory buffer
90
StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
91             
92             try
93             {
94                 FileReader reader = new FileReader(filename);
95                 int len = 0;
96                 while (len >= 0)
97                 {
98                     len = reader.read(arr);
99                     if (len < 0) // EOF reached
100
{
101                         break;
102                     }
103                     
104                     buffer.append (arr, 0, len);
105                 }
106                 
107                 // the file has been read
108
String JavaDoc replaced = replaceString(buffer.toString());
109                 if (replaced == null)
110                 {
111                     return false;
112                 }
113                 
114                 // write the buffer back to the file
115
FileWriter writer = new FileWriter(filename);
116                 writer.write(replaced);
117                 writer.close();
118             }
119             catch (FileNotFoundException ex)
120             {
121                 continue;
122             }
123             catch (IOException ex)
124             {
125                 errorMessage = "IO error occured while reading/writing from/to file " + filename
126                 + " : " + ex.getMessage();
127                 return false;
128             }
129         }
130         
131         return true;
132     }
133     
134     private String JavaDoc replaceString(String JavaDoc buffer)
135     {
136         char[] array = buffer.toCharArray();
137         StringBuffer JavaDoc new_buffer = new StringBuffer JavaDoc();
138         
139         int search_length = stringToReplace.length();
140         for (int i = 0; i < array.length; i++)
141         {
142             if ((array.length - i) < search_length)
143             {
144                 new_buffer.append (buffer.substring(i));
145                 break; // done
146
}
147             
148             String JavaDoc part_string = buffer.substring(i, i + search_length);
149             if (stringToReplace.equals(part_string) == true)
150             {
151                 numReplaced++;
152                 new_buffer.append(stringNewValue);
153                 i += search_length - 1;
154             }
155             else
156             {
157                 new_buffer.append(array[i]);
158             }
159         }
160                 
161         return new_buffer.toString();
162     }
163     
164     /** Getter for property errorMessage.
165      * @return Value of property errorMessage.
166      *
167      */

168     public java.lang.String JavaDoc getErrorMessage()
169     {
170         return errorMessage;
171     }
172     
173     /** Setter for property errorMessage.
174      * @param errorMessage New value of property errorMessage.
175      *
176      */

177     public void setErrorMessage(java.lang.String JavaDoc errorMessage)
178     {
179         this.errorMessage = errorMessage;
180     }
181     
182     /** Getter for property numReplaced.
183      * @return Value of property numReplaced.
184      *
185      */

186     public int getNumReplaced()
187     {
188         return numReplaced;
189     }
190     
191     /** Setter for property numReplaced.
192      * @param numReplaced New value of property numReplaced.
193      *
194      */

195     public void setNumReplaced(int numReplaced)
196     {
197         this.numReplaced = numReplaced;
198     }
199     
200     // test program
201
public static void main(String JavaDoc[] args)
202     {
203         ReplaceString str = new ReplaceString();
204         str.addFile("/usr/java/ace/src/java/com/quikj/application/utilities/postinstall/test.txt");
205         str.setStringToReplace("TEST");
206         str.setStringNewValue("NEW TEST VALUE");
207         
208         if (str.replace() == false)
209         {
210             System.out.println(str.getErrorMessage());
211         }
212     }
213 }
214
Popular Tags