Project Artifact Disk Usage

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

AnthillPro Template Reports
Report Templates