source: trunk/src/org/expeditee/stats/TreeStats.java@ 115

Last change on this file since 115 was 115, checked in by ra33, 16 years ago

added functionality for dockable @v's

File size: 3.8 KB
Line 
1package org.expeditee.stats;
2
3import java.sql.Time;
4import java.util.HashSet;
5import java.util.Set;
6
7import org.expeditee.gui.Frame;
8import org.expeditee.gui.FrameGraphics;
9import org.expeditee.gui.FrameIO;
10import org.expeditee.io.Logger;
11import org.expeditee.items.Item;
12
13public class TreeStats extends CometStats {
14 protected int _treeFrames = 0;
15
16 protected int _treeSessions = 0;
17
18 protected long _treeActive = 0;
19
20 protected long _treeDark = 0;
21
22 public TreeStats(Frame topFrame) {
23 this(topFrame, new HashSet<String>());
24 }
25
26 public TreeStats(Frame topFrame, Set<String> visited) {
27 super(topFrame);
28 visited.add(_name.toLowerCase());
29 FrameGraphics.OverwriteMessage("Computed: " + _name);
30
31 // Initialise variables with the data for this frames comet
32 _treeActive = _active;
33 _treeDark = _dark;
34 _treeSessions = _sessions;
35 _treeFrames = 1;
36 // Now get all add all the trees for linked items
37 for (Item i : topFrame.getItems()) {
38 String link = i.getAbsoluteLink();
39 if (link == null)
40 continue;
41 if (i.isAnnotation())
42 continue;
43 // Stop infinate loops by not visiting nodes we have already visited
44 if (visited.contains(link.toLowerCase())) {
45 continue;
46 }
47 Frame childFrame = FrameIO.LoadFrame(i.getAbsoluteLink());
48 if (childFrame == null)
49 continue;
50
51 TreeStats childItemStats = new TreeStats(childFrame, visited);
52 _treeActive += childItemStats._treeActive;
53 _treeDark += childItemStats._treeDark;
54 _treeSessions += childItemStats._treeSessions;
55 _treeFrames += childItemStats._treeFrames;
56 }
57 }
58
59 @Override
60 public String toString() {
61 Time total = new Time(_treeActive + _treeDark);
62 Time active = new Time(_treeActive);
63 Time dark = new Time(_treeDark);
64
65 StringBuffer sb = new StringBuffer();
66 sb.append(SessionStats.getDate());
67 sb.append("TreeStats: ").append(_name).append('\n');
68 sb.append("Frames: ").append(_treeFrames).append('\n');
69 sb.append("Versions: ").append(_treeSessions).append('\n');
70 sb.append(String.format(
71 " %cVersionAve%c FrameAve %c Total%n",
72 COLUMN_SEPARATOR_CHAR, COLUMN_SEPARATOR_CHAR,
73 COLUMN_SEPARATOR_CHAR));
74
75 StringBuffer rowSeparator = new StringBuffer();
76 rowSeparator.append(getBufferedString(10, ROW_SEPARATOR_CHAR));
77 for (int i = 0; i < 3; i++) {
78 rowSeparator.append(ROW_COLUMN_SEPARATOR).append(
79 getBufferedString(8, ROW_SEPARATOR_CHAR));
80 }
81 sb.append(rowSeparator).append('\n');
82
83 Time averageActive = new Time((long) (0.5 + active.getTime()
84 / (1.0 * _treeFrames)));
85 Time averageDark = new Time((long) (0.5 + dark.getTime()
86 / (1.0 * _treeFrames)));
87 Time averageTotal = new Time((long) (0.5 + total.getTime()
88 / (1.0 * _treeFrames)));
89 Time averageActiveEdit = new Time((long) (0.5 + active.getTime()
90 / (1.0 * _treeSessions)));
91 Time averageDarkEdit = new Time((long) (0.5 + dark.getTime()
92 / (1.0 * _treeSessions)));
93 Time averageTotalEdit = new Time((long) (0.5 + total.getTime()
94 / (1.0 * _treeSessions)));
95
96 sb.append("ActiveTime").append(COLUMN_SEPARATOR).append(
97 Logger.EasyTimeFormat(averageActiveEdit)).append(
98 COLUMN_SEPARATOR).append(Logger.EasyTimeFormat(averageActive))
99 .append(COLUMN_SEPARATOR).append(Logger.EasyTimeFormat(active))
100 .append('\n');
101 sb.append(" DarkTime").append(COLUMN_SEPARATOR).append(
102 Logger.EasyTimeFormat(averageDarkEdit))
103 .append(COLUMN_SEPARATOR).append(
104 Logger.EasyTimeFormat(averageDark)).append(
105 COLUMN_SEPARATOR).append(Logger.EasyTimeFormat(dark))
106 .append('\n');
107 sb.append(" TotalTime").append(COLUMN_SEPARATOR).append(
108 Logger.EasyTimeFormat(averageTotalEdit)).append(
109 COLUMN_SEPARATOR).append(Logger.EasyTimeFormat(averageTotal))
110 .append(COLUMN_SEPARATOR).append(Logger.EasyTimeFormat(total))
111 .append('\n');
112 sb.append(rowSeparator.toString().replace(ROW_COLUMN_SEPARATOR_CHAR,
113 BOTTOM_COLUMN_SEPARATOR_CHAR));
114 return sb.toString();
115 }
116}
Note: See TracBrowser for help on using the repository browser.