001 /** 002 * www.jcoverage.com 003 * Copyright (C)2003 jcoverage ltd. 004 * 005 * This file is part of jcoverage. 006 * 007 * jcoverage is free software; you can redistribute it and/or modify 008 * it under the terms of the GNU General Public License as published 009 * by the Free Software Foundation; either version 2 of the License, 010 * or (at your option) any later version. 011 * 012 * jcoverage is distributed in the hope that it will be useful, but 013 * WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * General Public License for more details. 016 * 017 * You should have received a copy of the GNU General Public License 018 * along with jcoverage; if not, write to the Free Software 019 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 020 * USA 021 * 022 */ 023 package com.jcoverage.coverage.reporting.html; 024 025 import java.io.*; 026 import java.util.*; 027 028 import org.apache.log4j.Logger; 029 030 import com.jcoverage.coverage.reporting.collation.JavaFileLine; 031 import com.jcoverage.coverage.reporting.collation.PackageSummaryPage; 032 import com.jcoverage.coverage.reporting.collation.ReportSummaryPackageLine; 033 import com.jcoverage.coverage.reporting.collation.ReportSummaryPage; 034 import com.jcoverage.reporting.Column; 035 import com.jcoverage.reporting.FormattingContext; 036 import com.jcoverage.reporting.MultiViewCollator; 037 import com.jcoverage.reporting.Page; 038 import com.jcoverage.reporting.ReportingException; 039 import com.jcoverage.reporting.View; 040 import com.jcoverage.reporting.ViewFormattingContext; 041 import com.jcoverage.reporting.html.ColumnRenderer; 042 import com.jcoverage.reporting.html.CssColumnRenderer; 043 import com.jcoverage.reporting.html.H1; 044 import com.jcoverage.reporting.html.H2; 045 import com.jcoverage.reporting.html.Html; 046 import com.jcoverage.reporting.html.RedGreenIndicator; 047 import com.jcoverage.reporting.html.ReportTable; 048 049 /** 050 * 051 */ 052 public class PackageSummaryFormat extends CommonFormat { 053 054 static Logger logger=Logger.getLogger(PackageSummaryFormat.class); 055 056 public void formatPage(FormattingContext ctx,Page page) throws ReportingException { 057 throw new IllegalStateException(getClass().getName()+" formatPage method must be given a ViewFormattingContext because views are involved"); 058 } 059 060 public void formatPage(ViewFormattingContext ctx,Page page) throws ReportingException { 061 062 String name=(String)page.getMasterLine().getField(ReportSummaryPackageLine.COLUMN_PACKAGE_NAME); 063 064 Html html=new Html(); 065 html.setTitle("jcoverage package summary for "+name); 066 buildHeader(html); 067 068 NavigationBar navbar=new NavigationBar(ctx,page); 069 html.add(navbar); 070 071 html.add(new H1("Package summary for "+name)); 072 073 html.add(new H2("Overall package")); 074 075 Set lines=new HashSet(); 076 lines.add(page.getMasterLine()); 077 html.add(new PackagesTable(page,lines,ctx)); 078 079 addViews(ctx,page,html); 080 081 html.add(new H2("Classes")); 082 lines=page.getLines(PackageSummaryPage.CATEGORY_JAVAFILES); 083 if (ctx.getCurrentView()!=null) { 084 lines=ctx.getCurrentView().orderLines(lines,PackageSummaryPage.CATEGORY_JAVAFILES); 085 } 086 087 html.add(new JavaFilesTable(page,lines,ctx)); 088 089 html.add("<p>"); 090 html.add(navbar); 091 buildFooter(html); 092 html.writeTo(getWriter(ctx,page)); 093 } 094 095 }