1 package jester.makealljesterchanges; 2 3 import java.io.BufferedReader ; 4 import java.io.BufferedWriter ; 5 import java.io.File ; 6 import java.io.FileInputStream ; 7 import java.io.FileNotFoundException ; 8 import java.io.FileReader ; 9 import java.io.FileWriter ; 10 import java.io.IOException ; 11 import java.io.InputStream ; 12 13 import javax.xml.parsers.DocumentBuilder ; 14 import javax.xml.parsers.DocumentBuilderFactory ; 15 16 import org.w3c.dom.Attr ; 17 import org.w3c.dom.Document ; 18 import org.w3c.dom.NamedNodeMap ; 19 import org.w3c.dom.Node ; 20 import org.w3c.dom.NodeList ; 21 22 41 public class MakeAllJesterChanges { 42 43 48 public static void main(String [] args) { 49 try { 50 54 DocumentBuilderFactory builderFactory = DocumentBuilderFactory 55 .newInstance(); 56 57 DocumentBuilder builder = builderFactory.newDocumentBuilder(); 59 60 64 parseXMLAndApplyChanges(builder); 65 66 } catch (Exception e) { 67 System.out.println(e); 69 } 70 } 71 72 76 private static void parseXMLAndApplyChanges(DocumentBuilder builder) 77 throws Exception { 78 InputStream in = new FileInputStream ("jesterReport.xml"); 80 81 Document doc = builder.parse(in); 83 in.close(); 85 87 NodeList jestedFiles = doc.getElementsByTagName("JestedFile"); 89 90 NodeList changes = doc 92 .getElementsByTagName("ChangeThatDidNotCauseTestsToFail"); 93 94 99 int noOfChangesSoFarForFiles = 0; 100 101 for (int i = 0; i < jestedFiles.getLength(); i++) { 103 104 Node jestedFile = jestedFiles.item(i); 106 107 NamedNodeMap jestedFileAttrs = jestedFile.getAttributes(); 109 110 112 Attr fileNameAttr = (Attr ) jestedFileAttrs 114 .getNamedItem("absolutePathFileName"); 115 String fileNameValue = fileNameAttr.getValue(); 116 117 Attr noOfChangesNoFail = (Attr ) jestedFileAttrs 119 .getNamedItem("numberOfChangesThatDidNotCauseTestsToFail"); 120 int noOfChangesNoFailValue = new Integer (noOfChangesNoFail 121 .getValue()).intValue(); 122 123 125 String originalContents = getContents(new File (fileNameValue)); 127 128 133 String newAbsolutePathFileName = parseFileName(fileNameValue); 134 135 140 BufferedWriter bufWriter = new BufferedWriter (new FileWriter ( 141 newAbsolutePathFileName)); 142 143 148 int indexInOriginalOfLastChange = 0; 149 150 155 for (int j = 0; j < noOfChangesNoFailValue; j++) { 156 158 Node change = changes.item(j + noOfChangesSoFarForFiles); 160 161 NamedNodeMap changesAttrs = change.getAttributes(); 163 164 Attr indexOfChange = (Attr ) changesAttrs.getNamedItem("index"); 166 int indexOfChangeValue = new Integer (indexOfChange.getValue()) 167 .intValue(); 168 169 Attr fromChange = (Attr ) changesAttrs.getNamedItem("from"); 171 String fromChangeValue = fromChange.getValue(); 172 173 Attr toChange = (Attr ) changesAttrs.getNamedItem("to"); 175 String toChangeValue = toChange.getValue(); 176 177 179 186 if (indexOfChangeValue >= indexInOriginalOfLastChange) { 187 String originalUpToChange = originalContents.substring( 189 indexInOriginalOfLastChange, indexOfChangeValue); 190 191 bufWriter.write(originalUpToChange); 193 } 194 195 bufWriter.write(toChangeValue); 197 198 203 indexInOriginalOfLastChange = indexOfChangeValue 204 + fromChangeValue.length(); 205 206 } 207 208 214 bufWriter.write(originalContents 215 .substring(indexInOriginalOfLastChange)); 216 bufWriter.close(); 218 219 234 noOfChangesSoFarForFiles += noOfChangesNoFailValue; 235 236 } 237 } 238 239 245 public static String getContents(File aFile) { 246 StringBuffer contents = new StringBuffer (); 248 249 253 BufferedReader input = null; 254 255 try { 256 input = new BufferedReader (new FileReader (aFile)); 258 259 String line = null; 261 262 266 while ((line = input.readLine()) != null) { 267 contents.append(line); 269 contents.append(System.getProperty("line.separator")); 271 } 272 273 } catch (FileNotFoundException ex) { 274 ex.printStackTrace(); 275 } catch (IOException ex) { 276 ex.printStackTrace(); 277 } 281 finally { 282 try { 283 if (input != null) { 284 288 input.close(); 289 } 290 } catch (IOException ex) { 291 ex.printStackTrace(); 292 } 293 } 294 295 return contents.toString(); 297 } 298 299 303 public static String parseFileName(String original) { 304 String temp = original.substring(0, original.length() - 5); 306 307 311 return (new StringBuffer (temp).append(".jester")).toString(); 312 313 } 314 315 } | Popular Tags |