/* Copyright (c) 2007, http://www.codeviation.org project * This program is made available under the terms of the MIT License. */ package hudson.plugins.codeviation; import hudson.model.Project; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.codeviation.model.JavaFile; import org.codeviation.model.Package; import org.codeviation.model.SourceRoot; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; /** * * @author pzajac */ public class SourceRootView extends JavaFileIterableView { public SourceRoot srcRoot; public Project project; private static final String SLASH_PATTERN = "-.-"; public SourceRootView(SourceRoot srcRoot,Project project) { if (srcRoot == null) { throw new NullPointerException(); } this.srcRoot = srcRoot; this.project = project; } public String getDisplayName() { return srcRoot.getRelPath(); } public String getUrl() { return srcRoot.getRelPath().replace("/",SLASH_PATTERN); } public static String decodeUrl(String srcRootName) { return srcRootName.replace(SLASH_PATTERN,"/"); } public List<PackageView> getPackageViews() { List<PackageView> packs = new ArrayList<PackageView>(); for (Package pack : srcRoot.getPackages()) { packs.add(new PackageView(pack,project)); } return packs; } protected Date getMinDate() { return srcRoot.getMinTagDate(); } protected Date getMaxDate() { return srcRoot.getMaxTagDate(); } protected Iterable<JavaFile> getJavaFiles() { int size = 0; for (JavaFile jf : srcRoot) { size++; } getLogger().info("JavaFiles: " + size); return srcRoot; } public PackageView getDynamic(String token, StaplerRequest req, StaplerResponse rsp ) throws IOException { Package pack = srcRoot.getPackage(token,false); return (pack == null) ? null : new PackageView(pack,project); } }