This report shows a user an estimate of the artifact disk usage per project. This report has to be used in conjunction with a report template such as the HTML Template.
Meta-Data Script:
import com.urbancode.anthill3.domain.reporting.*; ReportMetaData rmd = new ReportMetaData(); SelectParamMetaData sortParam = new SelectParamMetaData(); String [] sortLabels = new String[3]; String [] sortValues = new String[3]; sortLabels[0]="Name"; sortLabels[1]="Size"; sortLabels[2]="Type"; sortValues[0]="0"; sortValues[1]="1"; sortValues[2]="2"; sortParam.setLabels(sortLabels); sortParam.setValues(sortValues); sortParam.setName("sort"); sortParam.setLabel("Sort"); sortParam.setDescription("Select the field to sort this report by."); rmd.addParameter(sortParam); rmd.addColumn("Project"); rmd.addColumn("Type"); rmd.addColumn("TotalSize"); return rmd;
Context Script:
import com.urbancode.anthill3.domain.reporting.*; import com.urbancode.anthill3.runtime.paths.CodestationPathHelper; import com.urbancode.codestation2.domain.artifacts.*; import com.urbancode.codestation2.domain.buildlife.*; import com.urbancode.codestation2.domain.project.*; import com.urbancode.codestation2.server.CodestationRepositoryFileHelper; import com.urbancode.commons.fileutils.FileUtils; import com.urbancode.anthill3.domain.project.*; import com.urbancode.anthill3.domain.buildlife.*; import com.urbancode.devilfish.services.var.VarService; import com.urbancode.devilfish.services.file.FileInfo; import com.urbancode.commons.util.ObjectUtil; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Collection; import java.util.Comparator; import java.io.File; List mapList = new ArrayList(); ReportOutput output = new ReportOutput(metaData); int sortId=Integer.parseInt(sort); System.out.println(sortId); CodestationRepositoryFileHelper cs = CodestationRepositoryFileHelper.getInstance(); Project[] projects = ProjectFactory.getInstance().restoreAll(); for (int p=0; p<projects.length; p++) { Map projMap=new HashMap(); projMap.put("projName", projects[p].getName()); long Totalsize=0; //store name BuildLife[] buildLives = BuildLifeFactory.getInstance().restoreAllForProject(projects[p]); for (b=0; b<buildLives.length; b++) { CodestationCompatableArtifactSet[] sets = cs.getPopulatedBuildLifeArtifactSetList(buildLives[b]); for (int s=0; s<sets.length; s++) { String rawRepoLifeSetPath = CodestationPathHelper.getInstance().getSetPath(buildLives[b], sets[s]); String repoLifeSetPath = VarService.getInstance().resolve(rawRepoLifeSetPath); File baseSetDir = new File(repoLifeSetPath); FileInfo[] files = cs.getBuildLifeArtifactSetFileInfo(buildLives[b], sets[s]); for (int f=0; f<files.length; f++) { if (!".ahs.dig".equals(files[f].getName())) { Totalsize+=files[f].length(); } } } } //store totalsize projMap.put("size", Totalsize); projMap.put("Type", "Anthill"); mapList.add(projMap); } CodestationCompatableProject[] cprojects = CodestationProjectFactory.getInstance().restoreAllCodestation(); for (int p=0; p<cprojects.length; p++) { Map projMap=new HashMap(); projMap.put("projName", cprojects[p].getName()); long Totalsize=0; //store name CodestationBuildLife[] buildLives = CodestationBuildLifeFactory.getInstance().restoreAllForProject(cprojects[p]); for (b=0; b<buildLives.length; b++) { CodestationCompatableArtifactSet[] sets = cs.getPopulatedBuildLifeArtifactSetList(buildLives[b]); for (int s=0; s<sets.length; s++) { String rawRepoLifeSetPath = CodestationPathHelper.getInstance().getSetPath(buildLives[b], sets[s]); String repoLifeSetPath = VarService.getInstance().resolve(rawRepoLifeSetPath); File baseSetDir = new File(repoLifeSetPath); FileInfo[] files = cs.getBuildLifeArtifactSetFileInfo(buildLives[b], sets[s]); for (int f=0; f<files.length; f++) { if (!".ahs.dig".equals(files[f].getName())) { Totalsize+=files[f].length(); } } } } //store totalsize projMap.put("size", Totalsize); projMap.put("Type", "Codestation"); mapList.add(projMap); } //sort here Comparator mapComp = new Comparator() { public int compare(Object o1, Object o2) { Map map1=(Map) o1; Map map2=(Map) o2; if(sortId==0) { return ObjectUtil.compare(map1.get("projName"), map2.get("projName")); } else if(sortId==1) { return ObjectUtil.compare(map2.get("size"), map1.get("size")); } else { return ObjectUtil.compare(map1.get("Type"), map2.get("Type")); } } }; Collections.sort(mapList, mapComp); for (int p=0; p<mapList.size(); p++) { ReportRow row = new ReportRow(output, "1"); row.setColumnValue("Project", mapList.get(p).get("projName")); row.setColumnValue("TotalSize", FileUtils.getNearestBytes(mapList.get(p).get("size"))); row.setColumnValue("Type", mapList.get(p).get("Type")); output.addRow(row); } return output;
Related Content