1 package com.github.celldynamics.quimp.filesystem;
2
3 import com.github.celldynamics.quimp.BOAState;
4 import com.github.celldynamics.quimp.BOA_;
5 import com.github.celldynamics.quimp.QParams;
6 import com.github.celldynamics.quimp.QParamsQconf;
7 import com.github.celldynamics.quimp.SnakePluginList;
8 import com.github.celldynamics.quimp.ViewUpdater;
9 import com.github.celldynamics.quimp.filesystem.converter.FormatConverter;
10 import com.github.celldynamics.quimp.plugin.engine.PluginFactory;
11 import com.github.celldynamics.quimp.plugin.qanalysis.STmap;
12
13
14
15
16
17
18
19
20
21
22
23
24 public class DataContainer implements IQuimpSerialize {
25
26
27
28
29 public static final int BOA_RUN = 1024;
30
31
32
33 public static final int ECMM_RUN = 2048;
34
35
36
37 public static final int ANA_RUN = 4096;
38
39
40
41 public static final int Q_RUN = 8192;
42
43
44
45 public static final int STATS_AVAIL = 16384;
46
47
48
49
50 public BOAState BOAState;
51
52
53
54 public OutlinesCollection ECMMState;
55
56
57
58 public ANAParamCollection ANAState;
59
60
61
62
63
64
65
66
67 public STmap[] QState;
68
69
70
71 public StatsCollection Stats;
72
73 private transient PluginFactory pf;
74 private transient ViewUpdater vu;
75
76
77
78
79 public DataContainer() {
80 BOAState = null;
81 ECMMState = null;
82 ANAState = null;
83 QState = null;
84 }
85
86
87
88
89
90
91
92
93 public DataContainer(final PluginFactory pf, final ViewUpdater vu) {
94 this();
95 this.pf = pf;
96 this.vu = vu;
97 }
98
99
100
101
102
103
104 public BOAState getBOAState() {
105 return BOAState;
106 }
107
108
109
110
111
112
113 public OutlinesCollection getEcmmState() {
114 return ECMMState;
115 }
116
117
118
119
120
121
122 public STmap[] getQState() {
123 return QState;
124 }
125
126
127
128
129
130
131 public ANAParamCollection getANAState() {
132 return ANAState;
133 }
134
135
136
137
138
139
140 public StatsCollection getStats() {
141 return Stats;
142 }
143
144
145
146
147
148
149
150 public int validateDataContainer() {
151 int ret = QconfLoader.QCONF_INVALID;
152
153 if (getBOAState() != null) {
154 ret += DataContainer.BOA_RUN;
155 }
156 if (getEcmmState() != null) {
157 ret += DataContainer.ECMM_RUN;
158 }
159 if (getANAState() != null) {
160 ret += DataContainer.ANA_RUN;
161 }
162 if (getQState() != null) {
163 if (getQState().length > 0) {
164 int count = 0;
165 for (STmap tmp : getQState()) {
166 if (tmp != null && tmp.getT() != 0) {
167 count++;
168 }
169 }
170 if (count == getQState().length) {
171
172
173 ret += DataContainer.Q_RUN;
174 }
175 }
176 }
177 if (getStats() != null) {
178 ret += DataContainer.STATS_AVAIL;
179 }
180 return ret;
181 }
182
183
184
185
186
187
188
189 @Override
190 public void beforeSerialize() {
191 if (BOAState != null) {
192 BOAState.beforeSerialize();
193 }
194 if (ECMMState != null) {
195 ECMMState.beforeSerialize();
196 }
197 if (ANAState != null) {
198 ANAState.beforeSerialize();
199 }
200 if (QState != null) {
201 for (STmap stM : QState) {
202 if (stM != null) {
203 stM.beforeSerialize();
204 }
205 }
206 }
207 if (Stats != null) {
208 Stats.beforeSerialize();
209 }
210
211 }
212
213
214
215
216
217
218 @Override
219 public void afterSerialize() throws Exception {
220 if (BOAState != null) {
221 BOAState.snakePluginList = new SnakePluginList(BOA_.NUM_SNAKE_PLUGINS, pf, vu);
222 BOAState.afterSerialize();
223 for (SnakePluginList sl : BOAState.snakePluginListSnapshots) {
224 sl.updateRefs(pf, vu);
225 }
226 }
227 if (ECMMState != null) {
228 ECMMState.afterSerialize();
229 }
230 if (ANAState != null) {
231 ANAState.afterSerialize();
232 }
233 if (QState != null) {
234 for (STmap stM : QState) {
235 if (stM != null) {
236 stM.afterSerialize();
237 }
238 }
239 }
240 if (Stats != null) {
241 Stats.afterSerialize();
242 }
243 }
244 }