001 package hirondelle.web4jtools.metrics.tests; 002 003 import hirondelle.web4j.action.ResponsePage; 004 import hirondelle.web4j.request.RequestParser; 005 import hirondelle.web4jtools.metrics.base.FileInfo; 006 import hirondelle.web4jtools.metrics.base.MetricsAction; 007 008 import java.util.ArrayList; 009 import java.util.List; 010 011 /** 012 * List the unit test classes. 013 * 014 * <P>Uses the <tt>UnitTestFingerprint</tt> setting in <tt>web.xml</tt> to 015 * identify test classes. 016 */ 017 public final class TestsAction extends MetricsAction { 018 019 /** Full constructor. */ 020 public TestsAction(RequestParser aRequestParser){ 021 super(FORWARD, aRequestParser); 022 } 023 024 /** Show the test class metrics to the user. */ 025 protected void calculateMetric() { 026 scanFiles(fFileList); 027 addToRequest("testClasses", fTestFiles); 028 addToRequest("numTestLines", fNumTestLines); 029 } 030 031 // PRIVATE // 032 private static final ResponsePage FORWARD = new ResponsePage("Test Frequency", "view.jsp", TestsAction.class); 033 private List<FileInfo> fTestFiles = new ArrayList<FileInfo>(); 034 private long fNumTestLines; 035 036 private void scanFiles(List<FileInfo> aFiles){ 037 for (FileInfo fileInfo : aFiles){ 038 if ( fileInfo.isUnitTest() ) { 039 fTestFiles.add(fileInfo); 040 fNumTestLines = fNumTestLines + fileInfo.getNumLines(); 041 } 042 } 043 } 044 }