| 1 19 20 package edu.umd.cs.findbugs.ml; 21 22 import java.io.BufferedInputStream ; 23 import java.io.BufferedOutputStream ; 24 import java.io.FileInputStream ; 25 import java.io.FileOutputStream ; 26 import java.io.IOException ; 27 import java.io.InputStream ; 28 import java.io.OutputStream ; 29 import java.util.List ; 30 import java.util.zip.GZIPInputStream ; 31 32 import org.dom4j.Attribute; 33 import org.dom4j.Document; 34 import org.dom4j.DocumentException; 35 import org.dom4j.DocumentFactory; 36 import org.dom4j.Element; 37 import org.dom4j.io.OutputFormat; 38 import org.dom4j.io.XMLWriter; 39 40 import edu.umd.cs.findbugs.BugCollection; 41 import edu.umd.cs.findbugs.Project; 42 import edu.umd.cs.findbugs.SortedBugCollection; 43 import edu.umd.cs.findbugs.xml.Dom4JXMLOutput; 44 45 53 public class GenerateUIDs { 54 private BugCollection bugCollection; 55 private Project project; 56 private String inputFilename; 57 private String outputFilename; 58 59 public GenerateUIDs(String inputFilename, String outputFilename) { 60 this.bugCollection = new SortedBugCollection(); 61 this.project = new Project(); 62 this.inputFilename = inputFilename; 63 this.outputFilename = outputFilename; 64 } 65 66 public void execute() throws IOException , DocumentException { 67 InputStream in; 68 if (inputFilename.equals("-")) { 69 in = System.in; 70 } else { 71 in = new BufferedInputStream (new FileInputStream (inputFilename)); 72 if (inputFilename.endsWith(".gz")) 73 in = new GZIPInputStream (in); 74 } 75 76 bugCollection.readXML(in, project); 77 78 Document document = DocumentFactory.getInstance().createDocument(); 79 Dom4JXMLOutput xmlOutput = new Dom4JXMLOutput(document); 80 bugCollection.writeXML(xmlOutput, project); 81 82 int count = 0; 83 84 List <Element> bugInstanceList = document.selectNodes("/BugCollection/BugInstance"); 85 for (Element element : bugInstanceList) { 86 Attribute uidAttr = element.attribute("uid"); 87 if (uidAttr == null) { 88 element.addAttribute("uid", Integer.toString(count++)); 89 } 90 } 91 92 OutputStream out; 93 if (outputFilename.equals("-")) { 94 out = System.out; 95 } else { 96 out = new BufferedOutputStream (new FileOutputStream (outputFilename)); 97 } 98 XMLWriter xmlWriter = new XMLWriter(out, OutputFormat.createPrettyPrint()); 99 xmlWriter.write(document); 100 } 101 102 public static void main(String [] args) throws IOException , DocumentException { 103 if (args.length != 2) { 104 System.err.println("Usage: " + GenerateUIDs.class.getName() + 105 " <input file> <output file>"); 106 System.exit(1); 107 } 108 109 String inputFilename = args[0]; 110 String outputFilename = args[1]; 111 112 GenerateUIDs generateUIDs = new GenerateUIDs(inputFilename, outputFilename); 113 generateUIDs.execute(); 114 } 115 } 116 | Popular Tags |