diff options
author | ddunne | 2008-12-13 17:04:11 +0000 |
---|---|---|
committer | ddunne | 2008-12-13 17:04:11 +0000 |
commit | ac92320e2751ab5a9ec33b01b2189e1e5a8f2d91 (patch) | |
tree | 09bb3619ba0cadacf5f242941cb4b0eac66ffe38 | |
parent | f7e149f9c694ed5c3b856c1777b32e81b7eda8b6 (diff) | |
download | org.eclipse.osee-ac92320e2751ab5a9ec33b01b2189e1e5a8f2d91.tar.gz org.eclipse.osee-ac92320e2751ab5a9ec33b01b2189e1e5a8f2d91.tar.xz org.eclipse.osee-ac92320e2751ab5a9ec33b01b2189e1e5a8f2d91.zip |
-rw-r--r-- | org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java | 388 | ||||
-rw-r--r-- | org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java | 20 |
2 files changed, 188 insertions, 220 deletions
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java index fc66d9df8e9..a6be507692c 100644 --- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java +++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/SMAMetrics.java @@ -41,12 +41,9 @@ public class SMAMetrics { double hrsRemain = 0; double hrsSpent = 0; double manDaysNeeded = 0; - double cummulativeTeamPercentComplete = 0; - double percentCompleteByTeamPercents = 0; - double percentCompleteByTeamWorkflow = 0; - double cummulativeTaskPercentComplete = 0; - double percentCompleteByTaskPercents = 0; - double percentCompleteByTaskWorkflow = 0; + double cummulativeWorkflowPercentComplete = 0; + double percentCompleteByWorkflowPercents = 0; + double percentCompleteByNumWorkflow = 0; Date estRelDate; long daysTillRel = 0; @@ -73,72 +70,174 @@ public class SMAMetrics { return userToCompletedSmas; } + public <A extends StateMachineArtifact> Collection<A> getUserToCompletedSmas(User user) { + return getUserToCompletedSmas(user, null); + } + @SuppressWarnings("unchecked") public <A extends StateMachineArtifact> Collection<A> getUserToCompletedSmas(User user, Class<A> clazz) { if (!userToCompletedSmas.containsKey(user)) return Collections.emptyList(); List<A> smas = new ArrayList<A>(); for (Artifact art : userToCompletedSmas.getValues(user)) { - if (art.getClass().equals(clazz)) { + if (clazz == null || art.getClass().isInstance(clazz)) { smas.add((A) art); } } return smas; } - /** - * @return the manDayHrs - */ - public static double getManDayHrs() { - return MAN_DAY_HOURS; + @SuppressWarnings("unchecked") + public <A extends StateMachineArtifact> Collection<A> getUserToAssignedSmas(User user, Class<A> clazz) { + if (!userToAssignedSmas.containsKey(user)) return Collections.emptyList(); + List<A> smas = new ArrayList<A>(); + for (Artifact art : userToAssignedSmas.getValues(user)) { + if (clazz == null || art.getClass().equals(clazz)) { + smas.add((A) art); + } + } + return smas; } - /** - * @return the teamArts - */ - public Set<TeamWorkFlowArtifact> getTeamArts() { - return teamArts; + public Collection<TeamWorkFlowArtifact> getCompletedTeamWorkflows() throws OseeCoreException { + Set<TeamWorkFlowArtifact> teams = new HashSet<TeamWorkFlowArtifact>(); + for (TeamWorkFlowArtifact team : getTeamArts()) { + if (team.getSmaMgr().isCancelledOrCompleted()) { + teams.add(team); + } + } + return teams; } - /** - * @return the actionArts - */ - public Set<ActionArtifact> getActionArts() { - return actionArts; + public double getPercentCompleteByTeamWorkflow() throws OseeCoreException { + if (getTeamArts().size() == 0) return 0; + double completed = getCompletedTeamWorkflows().size(); + if (completed == 0) return 0; + return completed / getTeamArts().size() * 100; } - /** - * @return the taskArts - */ - public Set<TaskArtifact> getTaskArts() { - return taskArts; + public Collection<TaskArtifact> getCompletedTaskWorkflows() throws OseeCoreException { + Set<TaskArtifact> tasks = new HashSet<TaskArtifact>(); + for (TaskArtifact team : getTaskArts()) { + if (team.getSmaMgr().isCancelledOrCompleted()) { + tasks.add(team); + } + } + return tasks; } - /** - * @return the reviewArts - */ - public Set<ReviewSMArtifact> getReviewArts() { - return reviewArts; + public double getPercentCompleteByTaskWorkflow() throws OseeCoreException { + if (getTaskArts().size() == 0) return 0; + double completed = getCompletedTaskWorkflows().size(); + if (completed == 0) return 0; + return completed / getTaskArts().size() * 100; } /** - * Return all SMAs including Review and Tasks - * - * @return the userToSmas + * @return the str */ - public HashCollection<User, Artifact> getUserToAssignedSmas() { - return userToAssignedSmas; + @Override + public String toString() { + return str; } - @SuppressWarnings("unchecked") - public <A extends StateMachineArtifact> Collection<A> getUserToAssignedSmas(User user, Class<A> clazz) { - if (!userToAssignedSmas.containsKey(user)) return Collections.emptyList(); - List<A> smas = new ArrayList<A>(); - for (Artifact art : userToAssignedSmas.getValues(user)) { - if (art.getClass().equals(clazz)) { - smas.add((A) art); + public static String getEstRemainMetrics(Collection<? extends Artifact> smas) throws OseeCoreException { + return new SMAMetrics(smas).str; + } + + public SMAMetrics(Collection<? extends Artifact> smas) throws OseeCoreException { + this(smas, null); + } + + public SMAMetrics(Collection<? extends Artifact> artifacts, VersionArtifact versionArtifact) throws OseeCoreException { + System.err.println("get man hrs / day from team definition if applicable"); + this.versionArtifact = versionArtifact; + if (artifacts.size() == 0) return; + for (Artifact art : artifacts) { + if (art instanceof ActionArtifact) { + actionArts.add((ActionArtifact) art); } } - return smas; + for (Artifact art : artifacts) { + if (art instanceof TeamWorkFlowArtifact) { + teamArts.add((TeamWorkFlowArtifact) art); + } else if (art instanceof TaskArtifact) { + taskArts.add((TaskArtifact) art); + } else if (art instanceof ReviewSMArtifact) { + reviewArts.add((ReviewSMArtifact) art); + } + if (art instanceof StateMachineArtifact) { + smas.add((StateMachineArtifact) art); + Collection<User> users = ((StateMachineArtifact) art).getSmaMgr().getStateMgr().getAssignees(); + assignees.addAll(users); + assigneesAssignedOrCompleted.addAll(users); + for (User user : users) { + userToAssignedSmas.put(user, art); + } + if (((StateMachineArtifact) art).getSmaMgr().isCompleted()) { + Collection<User> implementers = ((StateMachineArtifact) art).getImplementers(); + assigneesAssignedOrCompleted.addAll(implementers); + for (User user : implementers) { + userToCompletedSmas.put(user, art); + } + } + } + } + estHours = 0; + hrsRemain = 0; + hrsSpent = 0; + manDaysNeeded = 0; + cummulativeWorkflowPercentComplete = 0; + manDaysNeeded = 0; + for (StateMachineArtifact team : smas) { + hrsRemain += team.getWorldViewRemainHours(); + estHours += team.getWorldViewEstimatedHours(); + hrsSpent += team.getWorldViewHoursSpentTotal(); + manDaysNeeded += team.getWorldViewManDaysNeeded(); + cummulativeWorkflowPercentComplete += team.getWorldViewPercentCompleteTotal(); + } + if (hrsRemain != 0) manDaysNeeded = hrsRemain / MAN_DAY_HOURS; + percentCompleteByWorkflowPercents = 0; + if (getNumSMAs() > 0 && cummulativeWorkflowPercentComplete > 0) { + percentCompleteByWorkflowPercents = cummulativeWorkflowPercentComplete / getNumSMAs(); + } + + estRelDate = null; + Date today = new Date(); + daysTillRel = 0; + if (versionArtifact != null) { + estRelDate = versionArtifact.getEstimatedReleaseDate(); + if (estRelDate != null && estRelDate.after(today)) { + daysTillRel = (estRelDate.getTime() - today.getTime()) / MILLISECS_PER_DAY; + } + } + str = + String.format("TeamWFs: %s Tasks: %s EstHrs: %5.2f %sCmp: %5.2f RmnHrs: %5.2f HrsSpnt: %5.2f %s %s", + getNumTeamWfs(), getNumTasks(), estHours, "%", percentCompleteByWorkflowPercents, hrsRemain, + hrsSpent, (manDaysNeeded > 0 ? String.format("ManDaysNeeded: %5.2f ", manDaysNeeded) : ""), + (versionArtifact != null ? String.format("Version: %s EstRelDate: %s DaysLeft: %d ", + versionArtifact.getDescriptiveName(), (estRelDate == null ? "Not Set" : XDate.getDateStr( + estRelDate, XDate.MMDDYY)), daysTillRel) : "")); + } + + /** + * @return the assigneesAssignedOrCompleted + */ + public Set<User> getAssigneesAssignedOrCompleted() { + return assigneesAssignedOrCompleted; + } + + public String toStringObjectBreakout() { + return String.format("Breakout: Actions: %s - Team Workflows: %s - Tasks: %s - Reviews: %s ", getNumActions(), + getNumTeamWfs(), getNumTasks(), getNumReviews()); + } + + public String toStringLong() { + return String.format( + "%s\nEstimated Hours: %5.2f Percent Complete: %5.2f Remaining Hours: %5.2f ManDaysNeeded: %5.2f \nHours Spent: %5.2f %s", + toStringObjectBreakout(), estHours, percentCompleteByWorkflowPercents, hrsRemain, manDaysNeeded, hrsSpent, + (versionArtifact != null ? String.format("\nVersion: %s Estimated Release Date: %s Days Left: %d ", + versionArtifact.getDescriptiveName(), (estRelDate == null ? "Not Set" : XDate.getDateStr(estRelDate, + XDate.MMDDYY)), daysTillRel) : "")); } /** @@ -204,6 +303,10 @@ public class SMAMetrics { return taskArts.size(); } + public int getNumSMAs() { + return smas.size(); + } + /** * @return the numTasks */ @@ -261,20 +364,6 @@ public class SMAMetrics { } /** - * @return the cummulativeTaskPercentComplete - */ - public double getCummulativeTaskPercentComplete() { - return cummulativeTaskPercentComplete; - } - - /** - * @return the percentCompleteByTaskPercents - */ - public double getPercentCompleteByTaskPercents() { - return percentCompleteByTaskPercents; - } - - /** * @return the manDaysNeeded */ public double getManDaysNeeded() { @@ -292,184 +381,69 @@ public class SMAMetrics { * @return the cummulativePercentComplete */ public double getCummulativeTeamPercentComplete() { - return cummulativeTeamPercentComplete; + return cummulativeWorkflowPercentComplete; } /** * @param cummulativePercentComplete the cummulativePercentComplete to set */ public void setCummulativePercentComplete(double cummulativePercentComplete) { - this.cummulativeTeamPercentComplete = cummulativePercentComplete; + this.cummulativeWorkflowPercentComplete = cummulativePercentComplete; } /** * @return the percentComplete */ public double getPercentCompleteByTeamPercents() { - return percentCompleteByTeamPercents; - } - - public Collection<TeamWorkFlowArtifact> getCompletedTeamWorkflows() throws OseeCoreException { - Set<TeamWorkFlowArtifact> teams = new HashSet<TeamWorkFlowArtifact>(); - for (TeamWorkFlowArtifact team : getTeamArts()) { - if (team.getSmaMgr().isCancelledOrCompleted()) { - teams.add(team); - } - } - return teams; - } - - public double getPercentCompleteByTeamWorkflow() throws OseeCoreException { - if (getTeamArts().size() == 0) return 0; - double completed = getCompletedTeamWorkflows().size(); - if (completed == 0) return 0; - return completed / getTeamArts().size() * 100; - } - - public Collection<TaskArtifact> getCompletedTaskWorkflows() throws OseeCoreException { - Set<TaskArtifact> tasks = new HashSet<TaskArtifact>(); - for (TaskArtifact team : getTaskArts()) { - if (team.getSmaMgr().isCancelledOrCompleted()) { - tasks.add(team); - } - } - return tasks; - } - - public double getPercentCompleteByTaskWorkflow() throws OseeCoreException { - if (getTaskArts().size() == 0) return 0; - double completed = getCompletedTaskWorkflows().size(); - if (completed == 0) return 0; - return completed / getTaskArts().size() * 100; + return percentCompleteByWorkflowPercents; } /** - * @return the str + * @return the manDayHrs */ - @Override - public String toString() { - return str; + public static double getManDayHrs() { + return MAN_DAY_HOURS; } - public static String getEstRemainMetrics(Collection<? extends Artifact> smas) throws OseeCoreException { - return new SMAMetrics(smas).str; + /** + * @return the teamArts + */ + public Set<TeamWorkFlowArtifact> getTeamArts() { + return teamArts; } - public SMAMetrics(Collection<? extends Artifact> smas) throws OseeCoreException { - this(smas, null); + /** + * @return the actionArts + */ + public Set<ActionArtifact> getActionArts() { + return actionArts; } - public SMAMetrics(Collection<? extends Artifact> artifacts, VersionArtifact versionArtifact) throws OseeCoreException { - this.versionArtifact = versionArtifact; - if (artifacts.size() == 0) return; - getInheritedSmasRecursive(artifacts, smasInherited); - for (Artifact art : artifacts) { - if (art instanceof ActionArtifact) { - actionArts.add((ActionArtifact) art); - } - } - for (Artifact art : smasInherited) { - if (art instanceof TeamWorkFlowArtifact) { - teamArts.add((TeamWorkFlowArtifact) art); - } else if (art instanceof TaskArtifact) { - taskArts.add((TaskArtifact) art); - } else if (art instanceof ReviewSMArtifact) { - reviewArts.add((ReviewSMArtifact) art); - } - if (art instanceof StateMachineArtifact) { - smas.add((StateMachineArtifact) art); - Collection<User> users = ((StateMachineArtifact) art).getSmaMgr().getStateMgr().getAssignees(); - assignees.addAll(users); - assigneesAssignedOrCompleted.addAll(users); - for (User user : users) { - userToAssignedSmas.put(user, art); - } - if (((StateMachineArtifact) art).getSmaMgr().isCompleted()) { - Collection<User> implementers = ((StateMachineArtifact) art).getImplementers(); - assigneesAssignedOrCompleted.addAll(implementers); - for (User user : implementers) { - userToCompletedSmas.put(user, art); - } - } - } - } - estHours = 0; - hrsRemain = 0; - hrsSpent = 0; - manDaysNeeded = 0; - cummulativeTeamPercentComplete = 0; - manDaysNeeded = 0; - for (TeamWorkFlowArtifact team : teamArts) { - hrsRemain += team.getWorldViewRemainHours(); - estHours += team.getWorldViewEstimatedHours(); - hrsSpent += team.getWorldViewHoursSpentTotal(); - manDaysNeeded += team.getWorldViewManDaysNeeded(); - cummulativeTeamPercentComplete += team.getWorldViewPercentCompleteTotal(); - } - if (hrsRemain != 0) manDaysNeeded = hrsRemain / MAN_DAY_HOURS; - percentCompleteByTeamPercents = 0; - if (getNumTeamWfs() > 0 && cummulativeTeamPercentComplete > 0) { - percentCompleteByTeamPercents = cummulativeTeamPercentComplete / getNumTeamWfs(); - } - for (TaskArtifact task : taskArts) { - cummulativeTaskPercentComplete += task.getWorldViewPercentCompleteTotal(); - } - percentCompleteByTaskPercents = 0; - if (getNumTasks() > 0 && cummulativeTaskPercentComplete > 0) { - percentCompleteByTaskPercents = cummulativeTaskPercentComplete / getNumTasks(); - } - - estRelDate = null; - Date today = new Date(); - daysTillRel = 0; - if (versionArtifact != null) { - estRelDate = versionArtifact.getEstimatedReleaseDate(); - if (estRelDate != null && estRelDate.after(today)) { - daysTillRel = (estRelDate.getTime() - today.getTime()) / MILLISECS_PER_DAY; - } - } - str = - String.format("TeamWFs: %s Tasks: %s EstHrs: %5.2f %sCmp: %5.2f RmnHrs: %5.2f HrsSpnt: %5.2f %s %s", - getNumTeamWfs(), getNumTasks(), estHours, "%", percentCompleteByTeamPercents, hrsRemain, hrsSpent, - (manDaysNeeded > 0 ? String.format("ManDaysNeeded: %5.2f ", manDaysNeeded) : ""), - (versionArtifact != null ? String.format("Version: %s EstRelDate: %s DaysLeft: %d ", - versionArtifact.getDescriptiveName(), (estRelDate == null ? "Not Set" : XDate.getDateStr( - estRelDate, XDate.MMDDYY)), daysTillRel) : "")); + /** + * @return the taskArts + */ + public Set<TaskArtifact> getTaskArts() { + return taskArts; } /** - * @return the assigneesAssignedOrCompleted + * @return the reviewArts */ - public Set<User> getAssigneesAssignedOrCompleted() { - return assigneesAssignedOrCompleted; + public Set<ReviewSMArtifact> getReviewArts() { + return reviewArts; } - public void getInheritedSmasRecursive(Collection<? extends Artifact> artifacts, Set<StateMachineArtifact> smas) throws OseeCoreException { - for (Artifact art : artifacts) { - if (art instanceof StateMachineArtifact) { - StateMachineArtifact sma = (StateMachineArtifact) art; - smas.add(sma); - smas.addAll(sma.getSmaMgr().getReviewManager().getReviews()); - getInheritedSmasRecursive(sma.getSmaMgr().getReviewManager().getReviews(), smas); - smas.addAll(sma.getSmaMgr().getTaskMgr().getTaskArtifacts()); - } else if (art instanceof ActionArtifact) { - smas.addAll(((ActionArtifact) art).getTeamWorkFlowArtifacts()); - getInheritedSmasRecursive(((ActionArtifact) art).getTeamWorkFlowArtifacts(), smas); - } - } + /** + * Return all SMAs including Review and Tasks + * + * @return the userToSmas + */ + public HashCollection<User, Artifact> getUserToAssignedSmas() { + return userToAssignedSmas; } - public String toStringObjectBreakout() { - return String.format("Breakout: Actions: %s - Team Workflows: %s - Tasks: %s - Reviews: %s ", getNumActions(), - getNumTeamWfs(), getNumTasks(), getNumReviews()); + public <A extends StateMachineArtifact> Collection<A> getUserToAssignedSmas(User user) { + return getUserToAssignedSmas(user, null); } - public String toStringLong() { - return String.format( - "%s\nEstimated Hours: %5.2f Percent Complete: %5.2f Remaining Hours: %5.2f ManDaysNeeded: %5.2f \nHours Spent: %5.2f %s", - toStringObjectBreakout(), estHours, percentCompleteByTeamPercents, hrsRemain, manDaysNeeded, hrsSpent, - (versionArtifact != null ? String.format("\nVersion: %s Estimated Release Date: %s Days Left: %d ", - versionArtifact.getDescriptiveName(), (estRelDate == null ? "Not Set" : XDate.getDateStr(estRelDate, - XDate.MMDDYY)), daysTillRel) : "")); - } } diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java index fa67b819937..72539c5d0b2 100644 --- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java +++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/world/AtsMetricsComposite.java @@ -176,17 +176,11 @@ public class AtsMetricsComposite extends ScrolledComposite { lines.add(new XBarGraphLine(sMet.toStringObjectBreakout(), segments));
lines.add(XBarGraphLine.getPercentLine(
- "By Team Workflow Percents (" + sMet.getCummulativeTeamPercentComplete() + "/" + sMet.getNumTeamWfs() + ")",
+ "By Workflow Percents (" + sMet.getCummulativeTeamPercentComplete() + "/" + sMet.getNumTeamWfs() + ")",
(int) sMet.getPercentCompleteByTeamPercents()));
lines.add(XBarGraphLine.getPercentLine(
- "By Number of Team Workflows (" + sMet.getCompletedTeamWorkflows().size() + "/" + sMet.getNumTeamWfs() + ")",
+ "By Number of Workflows (" + sMet.getCompletedTeamWorkflows().size() + "/" + sMet.getNumTeamWfs() + ")",
(int) sMet.getPercentCompleteByTeamWorkflow()));
- lines.add(XBarGraphLine.getPercentLine(
- "By Task Percents (" + sMet.getCummulativeTaskPercentComplete() + "/" + sMet.getNumTasks() + ")",
- (int) sMet.getPercentCompleteByTaskPercents()));
- lines.add(XBarGraphLine.getPercentLine(
- "By Number of Tasks (" + sMet.getCompletedTaskWorkflows().size() + "/" + sMet.getNumTasks() + ")",
- (int) sMet.getPercentCompleteByTaskWorkflow()));
lines.add(XBarGraphLine.getTextLine("Estimated Hours: ", String.format("%5.2f", sMet.getEstHours())));
lines.add(XBarGraphLine.getTextLine("Remaining Hours: ", String.format(
@@ -238,15 +232,14 @@ public class AtsMetricsComposite extends ScrolledComposite { List<XBarGraphLine> lines = new ArrayList<XBarGraphLine>();
for (User user : sMet.getAssigneesAssignedOrCompleted()) {
try {
- int numCompleted = sMet.getUserToCompletedSmas(user, TeamWorkFlowArtifact.class).size();
+ int numCompleted = sMet.getUserToCompletedSmas(user).size();
double cummulativePercentComplete = numCompleted * 100;
- int numInWork = sMet.getUserToAssignedSmas(user, TeamWorkFlowArtifact.class).size();
+ int numInWork = sMet.getUserToAssignedSmas(user).size();
// Since table is loaded with arts and also shows children, don't want to count artifacts twice
Set<Artifact> processedArts = new HashSet<Artifact>();
if (sMet.getUserToAssignedSmas().getValues(user) != null) {
for (Artifact sma : sMet.getUserToAssignedSmas().getValues(user)) {
- if ((sma instanceof TeamWorkFlowArtifact) && !processedArts.contains(sma) && !sMet.getUserToCompletedSmas().containsValue(
- sma)) {
+ if (!processedArts.contains(sma) && !sMet.getUserToCompletedSmas().containsValue(sma)) {
cummulativePercentComplete += ((StateMachineArtifact) sma).getWorldViewPercentCompleteTotal();
processedArts.add(sma);
}
@@ -278,7 +271,8 @@ public class AtsMetricsComposite extends ScrolledComposite { }
}
XBarGraphTable table =
- new XBarGraphTable("Completed by Assignee per Assigned Workflow", "User", "Percent Complete", lines);
+ new XBarGraphTable("Completed by Assignee per Assigned Workflow (Team, Task and Review)", "User",
+ "Percent Complete", lines);
table.setFillHorizontally(true);
table.createWidgets(parent, 1);
adapt(table);
|