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.collation;
024    
025    import java.io.File;
026    
027    import org.apache.log4j.Logger;
028    
029    import com.jcoverage.reporting.AbstractLine;
030    import com.jcoverage.reporting.Column;
031    import com.jcoverage.reporting.Line;
032    import com.jcoverage.reporting.Page;
033    
034    /**
035     *
036     */
037    public class JavaFileLine extends AbstractLine implements Line {
038      
039      static Logger logger=Logger.getLogger(JavaFileLine.class);
040      
041      public static Column COLUMN_FILE_NAME=new Column("file",String.class);
042      public static Column COLUMN_PATH=new Column("sourcepath",String.class);
043      public static Column COLUMN_SOURCE_LINES=new Column("lines",Integer.class);
044      public static Column COLUMN_COVERAGE_PERCENT=new Column("%line",Integer.class);
045      public static Column COLUMN_COVERAGE=new Column("rate",Double.class);
046      public static Column COLUMN_BRANCH_COVERAGE_PERCENT=new Column("%branch",Integer.class);
047      public static Column COLUMN_BRANCH_COVERAGE=new Column("rate",Double.class);
048    
049      JavaFilePage javaFilePage;
050    
051      public Page instantiateDetailPage() {
052        javaFilePage=new JavaFilePage();
053        return javaFilePage;
054      }
055    
056      public String getClassName() {
057        return (String)getField(COLUMN_FILE_NAME);
058      }
059    
060      public Object getField(Column column) {
061    
062        Object o=super.getField(column);
063    
064        if (column.equals(COLUMN_SOURCE_LINES)) {
065          return new Integer(getSourceLinesCount());
066          
067        } else if (column.equals(COLUMN_COVERAGE)) {
068          return new Double(javaFilePage.getLineCoverageRate());
069    
070        } else if (column.equals(COLUMN_COVERAGE_PERCENT)) {
071          return new Integer(FieldHelper.toPercent(javaFilePage.getLineCoverageRate()));
072    
073        } else if (column.equals(COLUMN_BRANCH_COVERAGE)) {
074          return new Double(javaFilePage.getBranchCoverageRate());
075    
076        } else if (column.equals(COLUMN_BRANCH_COVERAGE_PERCENT)) {
077          return new Integer(FieldHelper.toPercent(javaFilePage.getBranchCoverageRate()));
078    
079        } else {
080          return o;
081    
082        }
083      }
084    
085      public File getSourceFile() {
086        return new File((String)getField(COLUMN_PATH));
087      }
088    
089      public int getSourceLinesCount() {
090        return javaFilePage.getSourceLinesCount();
091      }
092    
093    }