Mercurial > repos > pfrommolt > ngsrich
comparison NGSrich_0.5.5/src/middlewares/XMLSummaryFileBuilder.java @ 0:89ad0a9cca52 default tip
Uploaded
| author | pfrommolt | 
|---|---|
| date | Mon, 21 Nov 2011 08:12:19 -0500 | 
| parents | |
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| -1:000000000000 | 0:89ad0a9cca52 | 
|---|---|
| 1 package middlewares; | |
| 2 | |
| 3 import java.util.*; | |
| 4 import java.io.*; | |
| 5 import org.jdom.*; | |
| 6 import org.jdom.input.*; | |
| 7 import org.jdom.output.*; | |
| 8 | |
| 9 /** | |
| 10 * Used to construct the summary file based on the computation of an | |
| 11 * EnrichmentStatsComputer object. It uses a file pattern to generate this file | |
| 12 * dynamically. | |
| 13 * | |
| 14 * @author Ali Abdallah | |
| 15 * @version 20.07.2011 | |
| 16 * @since Java 1.6 | |
| 17 */ | |
| 18 | |
| 19 public class XMLSummaryFileBuilder { | |
| 20 | |
| 21 /** | |
| 22 * The pattern file containing the structure of the summary without real | |
| 23 * data. | |
| 24 */ | |
| 25 static String xmlPatternFile; | |
| 26 | |
| 27 /** | |
| 28 * The summary file containing the computed data. | |
| 29 */ | |
| 30 static String xmlOutputFile; | |
| 31 | |
| 32 /** | |
| 33 * An object with an abstract representation on an xml-file. | |
| 34 */ | |
| 35 static Document doc; | |
| 36 | |
| 37 /** | |
| 38 * The leaf-tags containing data as text. | |
| 39 */ | |
| 40 List<Element> leafs; | |
| 41 | |
| 42 /** | |
| 43 * The name of the current sample. | |
| 44 */ | |
| 45 static String currSample; | |
| 46 | |
| 47 /** | |
| 48 * Creates and initializes a XMLSummaryFileBuilder object. | |
| 49 * | |
| 50 * @param xmlPatternFile the pattern file. | |
| 51 * @param xmlOutputFile the output file. | |
| 52 * @param currSample the current read alignment sample name without | |
| 53 * the extension. | |
| 54 */ | |
| 55 public XMLSummaryFileBuilder(String xmlPatternFile, String xmlOutputFile, | |
| 56 String currSample) { | |
| 57 | |
| 58 leafs = new ArrayList<Element>(); | |
| 59 XMLSummaryFileBuilder.xmlPatternFile = xmlPatternFile; | |
| 60 XMLSummaryFileBuilder.xmlOutputFile = xmlOutputFile; | |
| 61 XMLSummaryFileBuilder.currSample = currSample; | |
| 62 SAXBuilder builder = new SAXBuilder(); | |
| 63 try { | |
| 64 doc = builder.build(xmlPatternFile); | |
| 65 } catch (JDOMException e) { | |
| 66 e.printStackTrace(); | |
| 67 } catch (IOException e) { | |
| 68 e.printStackTrace(); | |
| 69 } | |
| 70 } | |
| 71 | |
| 72 /** | |
| 73 * Same as the constructor above but the pattern file is internally | |
| 74 * specified. | |
| 75 * | |
| 76 * @param xmlOutputFile the output file. | |
| 77 * @param currSample the current read alignment sample name without | |
| 78 * the extension. | |
| 79 */ | |
| 80 public XMLSummaryFileBuilder(String xmlOutputFile, | |
| 81 String currSample) { | |
| 82 this(Misc.binDir()+"/xmlFilePattern.xml", xmlOutputFile, currSample); | |
| 83 } | |
| 84 | |
| 85 /** | |
| 86 * Computes all the leafs of the subtree with root e. | |
| 87 * | |
| 88 * @param e an Element. | |
| 89 * @return all the leafs of the subtree with root e. | |
| 90 */ | |
| 91 public Element[] getLeafs(Element e){ | |
| 92 @SuppressWarnings("unchecked") | |
| 93 List<Element> children = e.getChildren(); | |
| 94 for(int i = 0; i < children.size(); i++){ | |
| 95 Element child = children.get(i); | |
| 96 if(child.getChildren().size() == 0) | |
| 97 leafs.add(child); | |
| 98 else | |
| 99 getLeafs(child); | |
| 100 } | |
| 101 | |
| 102 Object[] oleafs = leafs.toArray(); | |
| 103 Element[] eleafs = new Element[oleafs.length]; | |
| 104 for(int i = 0; i < eleafs.length; i++) | |
| 105 eleafs[i] = (Element)oleafs[i]; | |
| 106 | |
| 107 return eleafs; | |
| 108 } | |
| 109 | |
| 110 /** | |
| 111 * Same as the above method but the element is internally specified as the | |
| 112 * root of the document. | |
| 113 * | |
| 114 * @return an array with all leaf elements of the document. | |
| 115 */ | |
| 116 public Element[] getLeafs(){ | |
| 117 return getLeafs(doc.getRootElement()); | |
| 118 } | |
| 119 | |
| 120 /** | |
| 121 * Write the summary file created. | |
| 122 * @param name the name of the file. | |
| 123 */ | |
| 124 public void writeXMLFile(String name) { | |
| 125 XMLOutputter outp = new XMLOutputter(); | |
| 126 outp.setFormat(Format.getPrettyFormat()); | |
| 127 try { | |
| 128 outp.output(doc, new FileOutputStream(name)); | |
| 129 } catch (FileNotFoundException e) { | |
| 130 e.printStackTrace(); | |
| 131 } catch (IOException e) { | |
| 132 e.printStackTrace(); | |
| 133 } | |
| 134 } | |
| 135 | |
| 136 } | 
