1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.metis.viewer;
18
19 import io.github.tonywasher.joceanus.oceanus.decimal.OceanusDecimal;
20 import io.github.tonywasher.joceanus.oceanus.format.OceanusDataFormatter;
21 import io.github.tonywasher.joceanus.oceanus.profile.OceanusProfile;
22 import io.github.tonywasher.joceanus.oceanus.profile.OceanusProfile.OceanusProfileStatus;
23 import io.github.tonywasher.joceanus.metis.data.MetisDataResource;
24 import io.github.tonywasher.joceanus.metis.field.MetisFieldItem;
25 import io.github.tonywasher.joceanus.metis.field.MetisFieldSet;
26
27 import java.util.Iterator;
28
29
30
31
32 public class MetisViewerProfileWrapper
33 implements MetisFieldItem {
34
35
36
37 private static final MetisFieldSet<MetisViewerProfileWrapper> FIELD_DEFS = MetisFieldSet.newFieldSet(MetisViewerProfileWrapper.class);
38
39
40
41
42 static {
43 FIELD_DEFS.declareLocalField(MetisDataResource.PROFILE_TASK, MetisViewerProfileWrapper::getName);
44 FIELD_DEFS.declareLocalField(MetisDataResource.PROFILE_STATUS, MetisViewerProfileWrapper::getStatus);
45 FIELD_DEFS.declareLocalField(MetisDataResource.PROFILE_ELAPSED, MetisViewerProfileWrapper::getElapsed);
46 FIELD_DEFS.declareLocalField(MetisDataResource.PROFILE_HIDDEN, MetisViewerProfileWrapper::getHidden);
47 }
48
49
50
51
52 private final MetisFieldSet<MetisViewerProfileWrapper> theFields = MetisFieldSet.newFieldSet(this);
53
54
55
56
57 private final OceanusProfile theWrapped;
58
59
60
61
62
63
64 public MetisViewerProfileWrapper(final OceanusProfile pProfile) {
65
66 theWrapped = pProfile;
67
68
69 final Iterator<OceanusProfile> myIterator = theWrapped.subTaskIterator();
70 while (myIterator.hasNext()) {
71 final OceanusProfile mySubTask = myIterator.next();
72 theFields.declareLocalField(mySubTask.getName(), p -> mySubTask);
73 }
74 }
75
76 @Override
77 public MetisFieldSet<MetisViewerProfileWrapper> getDataFieldSet() {
78 return theFields;
79 }
80
81 @Override
82 public String formatObject(final OceanusDataFormatter pFormatter) {
83
84 return getName()
85 + ": "
86 + (theWrapped.isRunning()
87 ? getStatus()
88 : getElapsed());
89 }
90
91
92
93
94
95
96 private String getName() {
97 return theWrapped.getName();
98 }
99
100
101
102
103
104
105 private OceanusProfileStatus getStatus() {
106 return theWrapped.isRunning()
107 ? theWrapped.getStatus()
108 : null;
109 }
110
111
112
113
114
115
116 private OceanusDecimal getElapsed() {
117 return theWrapped.isRunning()
118 ? null
119 : theWrapped.getElapsed();
120 }
121
122
123
124
125
126
127 private OceanusDecimal getHidden() {
128 return theWrapped.getHidden();
129 }
130 }