Mercurial > repos > pfrommolt > ngsrich
view 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 |
line wrap: on
line source
package middlewares; import java.util.*; import java.io.*; import org.jdom.*; import org.jdom.input.*; import org.jdom.output.*; /** * Used to construct the summary file based on the computation of an * EnrichmentStatsComputer object. It uses a file pattern to generate this file * dynamically. * * @author Ali Abdallah * @version 20.07.2011 * @since Java 1.6 */ public class XMLSummaryFileBuilder { /** * The pattern file containing the structure of the summary without real * data. */ static String xmlPatternFile; /** * The summary file containing the computed data. */ static String xmlOutputFile; /** * An object with an abstract representation on an xml-file. */ static Document doc; /** * The leaf-tags containing data as text. */ List<Element> leafs; /** * The name of the current sample. */ static String currSample; /** * Creates and initializes a XMLSummaryFileBuilder object. * * @param xmlPatternFile the pattern file. * @param xmlOutputFile the output file. * @param currSample the current read alignment sample name without * the extension. */ public XMLSummaryFileBuilder(String xmlPatternFile, String xmlOutputFile, String currSample) { leafs = new ArrayList<Element>(); XMLSummaryFileBuilder.xmlPatternFile = xmlPatternFile; XMLSummaryFileBuilder.xmlOutputFile = xmlOutputFile; XMLSummaryFileBuilder.currSample = currSample; SAXBuilder builder = new SAXBuilder(); try { doc = builder.build(xmlPatternFile); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * Same as the constructor above but the pattern file is internally * specified. * * @param xmlOutputFile the output file. * @param currSample the current read alignment sample name without * the extension. */ public XMLSummaryFileBuilder(String xmlOutputFile, String currSample) { this(Misc.binDir()+"/xmlFilePattern.xml", xmlOutputFile, currSample); } /** * Computes all the leafs of the subtree with root e. * * @param e an Element. * @return all the leafs of the subtree with root e. */ public Element[] getLeafs(Element e){ @SuppressWarnings("unchecked") List<Element> children = e.getChildren(); for(int i = 0; i < children.size(); i++){ Element child = children.get(i); if(child.getChildren().size() == 0) leafs.add(child); else getLeafs(child); } Object[] oleafs = leafs.toArray(); Element[] eleafs = new Element[oleafs.length]; for(int i = 0; i < eleafs.length; i++) eleafs[i] = (Element)oleafs[i]; return eleafs; } /** * Same as the above method but the element is internally specified as the * root of the document. * * @return an array with all leaf elements of the document. */ public Element[] getLeafs(){ return getLeafs(doc.getRootElement()); } /** * Write the summary file created. * @param name the name of the file. */ public void writeXMLFile(String name) { XMLOutputter outp = new XMLOutputter(); outp.setFormat(Format.getPrettyFormat()); try { outp.output(doc, new FileOutputStream(name)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }