/** * Copyright Copyright 2010-12 Simon Andrews * * This file is part of BamQC. * * BamQC is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * BamQC is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with BamQC; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * Changelog: * - Pierre Lindenbaum: Class creation. */ package uk.ac.babraham.BamQC.Modules; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import javax.imageio.ImageIO; import javax.swing.JPanel; import javax.swing.table.TableModel; import uk.ac.babraham.BamQC.Report.HTMLReportArchive; import uk.ac.babraham.BamQC.Utilities.ImageToBase64; /** * * @author Pierre Lindenbaum * */ public abstract class AbstractQCModule implements QCModule { protected void simpleXhtmlReport(HTMLReportArchive report,BufferedImage img,String alt) throws XMLStreamException { XMLStreamWriter xhtml = report.xhtmlStream(); xhtml.writeStartElement("p"); xhtml.writeEmptyElement("img"); xhtml.writeAttribute("class", "indented"); xhtml.writeAttribute("src", ImageToBase64.imageToBase64(img)); xhtml.writeAttribute("alt", alt); if(img!=null){ xhtml.writeAttribute("width",String.valueOf(img.getWidth())); xhtml.writeAttribute("height",String.valueOf(img.getHeight())); } xhtml.writeEndElement();//p } protected void writeTable(HTMLReportArchive report, TableModel table) throws IOException,XMLStreamException { writeXhtmlTable(report,table); writeTextTable(report,table); } protected void writeDefaultImage (HTMLReportArchive report, String fileName, String imageTitle, int width, int height) throws IOException, XMLStreamException { ZipOutputStream zip = report.zipFile(); zip.putNextEntry(new ZipEntry(report.folderName()+"/Images/"+fileName)); BufferedImage b = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = b.createGraphics(); JPanel resultsPanel = getResultsPanel(); resultsPanel.setDoubleBuffered(false); resultsPanel.setSize(800,600); resultsPanel.addNotify(); resultsPanel.validate(); resultsPanel.print(g); g.dispose(); ImageIO.write(b, "PNG", zip); zip.closeEntry(); simpleXhtmlReport(report, b, imageTitle); } protected void writeXhtmlTable(HTMLReportArchive report, TableModel table) throws IOException,XMLStreamException { XMLStreamWriter w=report.xhtmlStream(); w.writeStartElement("table"); w.writeStartElement("thead"); w.writeStartElement("tr"); for (int c=0;c<table.getColumnCount();c++) { w.writeStartElement("th"); w.writeCharacters(table.getColumnName(c)); w.writeEndElement(); } w.writeEndElement();//tr w.writeEndElement();//thead w.writeStartElement("tbody"); for (int r=0;r<table.getRowCount();r++) { w.writeStartElement("tr"); for (int c=0;c<table.getColumnCount();c++) { w.writeStartElement("td"); w.writeCharacters(String.valueOf(table.getValueAt(r, c))); w.writeEndElement();//td } w.writeEndElement();//tr } w.writeEndElement();//tbody w.writeEndElement(); } protected void writeTextTable(HTMLReportArchive report, TableModel table) throws IOException { StringBuffer d=report.dataDocument(); d.append("#"); for (int c=0;c<table.getColumnCount();c++) { if (c!=0) d.append("\t"); d.append(table.getColumnName(c)); } d.append("\n"); // Do the rows for (int r=0;r<table.getRowCount();r++) { for (int c=0;c<table.getColumnCount();c++) { if (c!=0) d.append("\t"); d.append(table.getValueAt(r, c)); } d.append("\n"); } } }