package eu.doppel_helix.netbeans.mantisintegration.data; import biz.futureware.mantisconnect.ProjectData; import java.util.ArrayList; import java.util.List; public class FlattenedProjectData { private biz.futureware.mantisconnect.ProjectData projectData; private int level; public FlattenedProjectData(biz.futureware.mantisconnect.ProjectData projectData, int level) { this.projectData = projectData; this.level = level; } public biz.futureware.mantisconnect.ProjectData getProjectData() { return projectData; } public void setProjectData(biz.futureware.mantisconnect.ProjectData projectData) { this.projectData = projectData; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } @Override public String toString() { return "NestedProjectData{" + "projectData=" + projectData + ", level=" + level + '}'; } @Override public int hashCode() { int hash = 7; hash = 41 * hash + (this.projectData != null ? this.projectData.hashCode() : 0); return hash; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final FlattenedProjectData other = (FlattenedProjectData) obj; if (this.projectData != other.projectData && (this.projectData == null || !this.projectData.equals(other.projectData))) { return false; } return true; } /** * Flatten the supplied ProjectData and Subprojects */ public static List<FlattenedProjectData> buildList(ProjectData pd) { List<FlattenedProjectData> result = new ArrayList<>(); buildList(pd, 0, result); return result; } private static void buildList(ProjectData pd, int level, List<FlattenedProjectData> result) { result.add(new FlattenedProjectData(pd, level)); for(ProjectData pdi: pd.getSubprojects()) { buildList(pdi, level + 1, result); } } }