1 23 package org.hammurapi.inspectors; 24 25 import org.hammurapi.InspectorBase; 26 27 import com.pavelvlasov.config.ConfigurationException; 28 import com.pavelvlasov.config.Parameterizable; 29 import com.pavelvlasov.jsel.Package; 30 import com.pavelvlasov.review.SimpleSourceMarker; 31 32 38 public class FilesPerPackage extends InspectorBase implements Parameterizable { 39 40 45 public void visit(Package element) { 46 SimpleSourceMarker ssm=new SimpleSourceMarker(0, 0, (element.getName().length()==0 ? "." : element.getName().replace('.','/'))+"/", null); 47 48 int packageSize=element.getCompilationUnits().size(); 49 if (maxPackageSize!=null && packageSize>maxPackageSize.intValue()) { 50 context.reportViolationEx(ssm, new Object [] {maxPackageSize, new Integer (packageSize)}, "MAX"); 51 } 52 53 if (minPackageSize!=null && packageSize<minPackageSize.intValue()) { 54 context.reportViolationEx(ssm, new Object [] {minPackageSize, new Integer (packageSize)}, "MIN"); 55 } 56 } 57 58 62 private Integer maxPackageSize; 63 64 68 private Integer minPackageSize; 69 70 78 public boolean setParameter(String name, Object parameter) throws ConfigurationException { 79 if ("max-files".equals(name)) { 80 maxPackageSize = (Integer ) parameter; 81 } else if ("min-files".equals(name)) { 82 minPackageSize = (Integer ) parameter; 83 } else { 84 throw new ConfigurationException("Parameter '"+name+"' is not supported by "+getClass().getName()); 85 } 86 return true; 87 } 88 89 92 public String getConfigInfo() { 93 StringBuffer ret=new StringBuffer ("Allowed maximum files per package:\n"); 94 if (maxPackageSize!=null) { 95 ret.append("max-files: " + maxPackageSize + "\n"); 96 } 97 98 if (minPackageSize!=null) { 99 ret.append("min-files: " + minPackageSize + "\n"); 100 } 101 return ret.toString(); 102 } 103 } 104 | Popular Tags |