Coverage Report - net.sf.statcvs.renderer.HTMLTableCellRenderer
 
Classes in this File Line Coverage Branch Coverage Complexity
HTMLTableCellRenderer
0%
0/45
0%
0/10
1.368
 
 1  
 /*
 2  
         StatCvs - CVS statistics generation
 3  
         Copyright (C) 2002  Lukasz Pekacki <lukasz@pekacki.de>
 4  
         http://statcvs.sf.net/
 5  
 
 6  
         This library is free software; you can redistribute it and/or
 7  
         modify it under the terms of the GNU Lesser General Public
 8  
         License as published by the Free Software Foundation; either
 9  
         version 2.1 of the License, or (at your option) any later version.
 10  
 
 11  
         This library is distributed in the hope that it will be useful,
 12  
         but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  
         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 14  
         Lesser General Public License for more details.
 15  
 
 16  
         You should have received a copy of the GNU Lesser General Public
 17  
         License along with this library; if not, write to the Free Software
 18  
         Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 19  
 
 20  
         $RCSfile: HTMLTableCellRenderer.java,v $
 21  
         $Date: 2008/04/02 11:22:15 $
 22  
 */
 23  
 package net.sf.statcvs.renderer;
 24  
 
 25  
 import net.sf.statcvs.Messages;
 26  
 import net.sf.statcvs.model.Author;
 27  
 import net.sf.statcvs.model.Directory;
 28  
 import net.sf.statcvs.model.VersionedFile;
 29  
 import net.sf.statcvs.output.WebRepositoryIntegration;
 30  
 import net.sf.statcvs.pages.HTML;
 31  
 import net.sf.statcvs.pages.MarkupSyntax;
 32  
 import net.sf.statcvs.pages.ReportSuiteMaker;
 33  
 
 34  
 /**
 35  
  * Helper class for rendering different types of table cells and table heads
 36  
  * to HTML
 37  
  *
 38  
  * @author Richard Cyganiak <rcyg@gmx.de>
 39  
  * @version $Id: HTMLTableCellRenderer.java,v 1.10 2008/04/02 11:22:15 benoitx Exp $
 40  
  */
 41  0
 public class HTMLTableCellRenderer implements TableCellRenderer {
 42  0
     private String html = null;
 43  0
     private MarkupSyntax output = null;
 44  
 
 45  
     /**
 46  
      * Render a generic table cell to HTML
 47  
      * @param content the cell's content
 48  
      */
 49  
     public void renderCell(final String content) {
 50  0
         html = content;
 51  0
     }
 52  
 
 53  
     /**
 54  
      * Render an empty cell to HTML
 55  
      */
 56  
     public void renderEmptyCell() {
 57  0
         html = null;
 58  0
     }
 59  
 
 60  
     /**
 61  
      * Render an integer cell to HTML
 62  
      * @param value the cell's content
 63  
      */
 64  
     public void renderIntegerCell(final int value) {
 65  0
         html = Integer.toString(value);
 66  0
     }
 67  
 
 68  
     /**
 69  
      * Render an integer cell to HTML, showing both the integer value and
 70  
      * a percentage of a total
 71  
      * @param value the cell's content
 72  
      * @param total the total, worth 100%
 73  
      */
 74  
     public void renderIntegerCell(final int value, final int total) {
 75  0
         html = Integer.toString(value) + " (" + getPercentage((double) value / (double) total) + ")";
 76  0
     }
 77  
 
 78  
     /**
 79  
      * Render a percentage cell to HTML
 80  
      * @param ratio the cell's content
 81  
      */
 82  
     public void renderPercentageCell(final double ratio) {
 83  0
         html = getPercentage(ratio);
 84  0
     }
 85  
 
 86  
     /**
 87  
      * Render a cell containing an author to HTML
 88  
      * @param author the author
 89  
      */
 90  
     public void renderAuthorCell(final Author author) {
 91  0
         html = HTML.getAuthorLink(author);
 92  0
     }
 93  
 
 94  
     /**
 95  
      * Render a cell containing an author Id to HTML
 96  
      * @param author the author
 97  
      */
 98  
     public void renderAuthorIdCell(final Author author) {
 99  0
         html = HTML.getAuthorIdLink(author);
 100  0
     }
 101  
 
 102  
     /**
 103  
      * Render a cell containing a directory to HTML
 104  
      * @param directory the directory
 105  
      */
 106  
     public void renderDirectoryCell(final Directory directory) {
 107  0
         html = HTML.getDirectoryLink(directory);
 108  0
     }
 109  
 
 110  
     /**
 111  
      * Render a cell containing a file to HTML
 112  
      * @param file the file
 113  
      * @param withIcon display an icon in front of the filename?
 114  
      * @param webRepository for creating links; might be <tt>null</tt>
 115  
      */
 116  
     public void renderFileCell(final VersionedFile file, final boolean withIcon, final WebRepositoryIntegration webRepository) {
 117  0
         if (webRepository == null) {
 118  0
             html = file.getFilenameWithPath();
 119  
         } else {
 120  0
             html = HTML.getLink(webRepository.getFileViewUrl(file), file.getFilenameWithPath());
 121  
         }
 122  0
         if (withIcon) {
 123  0
             if (file.isDead()) {
 124  0
                 html = HTML.getIcon(ReportSuiteMaker.DELETED_FILE_ICON, Messages.getString("DELETED_FILE_ICON")) + " " + html;
 125  
             } else {
 126  0
                 html = HTML.getIcon(ReportSuiteMaker.FILE_ICON, Messages.getString("FILE_ICON")) + " " + html;
 127  
             }
 128  
         }
 129  0
     }
 130  
 
 131  
     /**
 132  
      * Render a cell containing a repository tag.
 133  
      */
 134  
     public void renderLinkCell(final String url, final String label) {
 135  0
         this.html = HTML.getLink(url, label);
 136  0
     }
 137  
 
 138  
     /**
 139  
      * Return the results of the last <tt>renderCell</tt> call
 140  
      * @return HTML
 141  
      */
 142  
     public String getColumnHead() {
 143  0
         return getHtml("th");
 144  
     }
 145  
 
 146  
     /**
 147  
      * Return the results of the last <tt>renderCell</tt> call
 148  
      * as a row head
 149  
      * @return HTML
 150  
      */
 151  
     public String getRowHead() {
 152  0
         return getHtml("th");
 153  
     }
 154  
 
 155  
     /**
 156  
      * Return the results of the last <tt>renderCell</tt> call
 157  
      * as an ordinary table cell
 158  
      * @return HTML
 159  
      */
 160  
     public String getTableCell() {
 161  0
         return getHtml("td");
 162  
     }
 163  
 
 164  
     private String getPercentage(final double ratio) {
 165  0
         if (Double.isNaN(ratio)) {
 166  0
             return "-";
 167  
         }
 168  0
         final int percentTimes10 = (int) Math.round(ratio * 1000);
 169  0
         final double percent = percentTimes10 / 10.0;
 170  0
         return Double.toString(percent) + "%";
 171  
     }
 172  
 
 173  
     private String getHtml(final String tag) {
 174  0
         if (html == null) {
 175  0
             return "<" + tag + "></" + tag + ">";
 176  
         }
 177  0
         return "<" + tag + ">" + html + "</" + tag + ">";
 178  
     }
 179  
 
 180  
     /**
 181  
      * @return the output
 182  
      */
 183  
     public MarkupSyntax getOutput() {
 184  0
         return output;
 185  
     }
 186  
 
 187  
     /**
 188  
      * @param output the output to set
 189  
      */
 190  
     public void setOutput(final MarkupSyntax output) {
 191  0
         this.output = output;
 192  0
     }
 193  
 
 194  
     public String getOddRowFormat() {
 195  0
         return " class=\"even\"";
 196  
     }
 197  
 
 198  
     public String getEvenRowFormat() {
 199  0
         return " class=\"odd\"";
 200  
     }
 201  
 }