package jdepend.parse.util; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import jdepend.framework.file.AnalyzeData; import jdepend.metadata.JavaClass; import jdepend.metadata.JavaPackage; import jdepend.parse.Parse; import jdepend.parse.ParseException; import jdepend.parse.ParseListener; public final class SearchUtil { private Parse parse = new Parse(); private Collection<JavaPackage> javaPackages; private Collection<JavaClass> javaClasses; private Integer classCount; public SearchUtil() { } public SearchUtil(List<String> paths) { for (String path : paths) { try { this.parse.addDirectorys(path); } catch (IOException e) { e.printStackTrace(); } } } public SearchUtil(AnalyzeData data) { this.parse.setAnalyseData(data); } public void addFilters(List<String> filters) { this.parse.addFilteredPackages(filters); } public int getClassCount() { if (classCount == null) { classCount = this.parse.countClasses(); } return classCount; } public Collection<JavaClass> getClasses() { if (javaClasses == null) { try { this.analyse(); } catch (ParseException e) { e.printStackTrace(); } } return javaClasses; } public Collection<JavaPackage> getPackages() { if (javaPackages == null) { try { this.analyse(); } catch (ParseException e) { e.printStackTrace(); } } return javaPackages; } private void analyse() throws ParseException { this.javaPackages = new ArrayList<JavaPackage>(this.parse.execute()); this.javaClasses = new ArrayList<JavaClass>(); for (JavaPackage javaPackage : javaPackages) { javaClasses.addAll(javaPackage.getClasses()); } } public void addPath(String path) { try { this.parse.addDirectorys(path); } catch (IOException e) { e.printStackTrace(); } } public void addAnalyseData(AnalyzeData data) { this.parse.setAnalyseData(data); } public void setBuildClassRelation(boolean isBuildClassRelation) { this.parse.setBuildClassRelation(isBuildClassRelation); } public void setSupplyJavaClassDetail(boolean isSupplyJavaClassDetail) { this.parse.setSupplyJavaClassDetail(isSupplyJavaClassDetail); } public void setParseConfigs(boolean isParseConfigs) { this.parse.setParseConfigs(isParseConfigs); } public void addParseListener(ParseListener listener) { this.parse.addParseListener(listener); } public void setParseModel(String parseModel) { this.parse.setParseModel(parseModel); } }