package hudson.plugins.sloccount; import hudson.model.AbstractBuild; import hudson.model.ModelObject; import hudson.plugins.sloccount.model.File; import hudson.plugins.sloccount.model.FileFilter; import hudson.plugins.sloccount.model.SloccountReport; import java.io.Serializable; /** * * @author lordofthepigs */ public class SloccountResult implements Serializable { private SloccountReport report; private AbstractBuild owner; public SloccountResult(SloccountReport report, AbstractBuild<?,?> owner){ this.report = report; this.owner = owner; } public SloccountReport getReport(){ return report; } public AbstractBuild<?,?> getOwner(){ return owner; } public SloccountResult getLanguageResult(String language){ SloccountReport filtered = new SloccountReport(this.report, new LanguageFileFilter(language)); return new BreadCrumbResult(filtered, this.owner, language); } public SloccountResult getFolderResult(String jumbledFolder){ String folder = jumbledFolder.replace("|", System.getProperty("file.separator")); SloccountReport filtered = new SloccountReport(this.report, new FolderFileFilter(folder)); return new BreadCrumbResult(filtered, this.owner, folder); } private static class LanguageFileFilter implements FileFilter, Serializable { private String language; public LanguageFileFilter(String language){ this.language = language; } public boolean include(File file) { return file.getLanguage().equals(this.language); } } private static class FolderFileFilter implements FileFilter, Serializable { private String folder; public FolderFileFilter(String folder){ this.folder = folder; } public boolean include(File file) { String separator = System.getProperty("file.separator"); int index = file.getName().lastIndexOf(separator); String fileFolder = file.getName().substring(0, index); return this.folder.equals(fileFolder); } } private static class BreadCrumbResult extends SloccountResult implements ModelObject, Serializable { private String displayName = null; public BreadCrumbResult(SloccountReport report, AbstractBuild<?,?> owner, String displayName){ super(report, owner); this.displayName = displayName; } public String getDisplayName() { return this.displayName; } } }