blob: 3b19031cb3a657a4269bbd1badc64316459a0779 [file] [log] [blame]
Murat Parlakisik34863382016-12-05 00:53:17 -08001 private OFOxsList.Builder oxsFieldsBuilder;
2
3 private void initBuilder() {
4 if (oxsFieldsBuilder != null)
5 return;
6 oxsFieldsBuilder = new OFOxsList.Builder();
7 }
8
9 private void updateOxsList() {
10 this.oxsFields = this.oxsFieldsBuilder.build();
11 this.oxsFieldsSet = true;
12 }
13
14
15
16 @Override
17 public <F extends OFValueType<F>> F get(StatField<F> field) throws UnsupportedOperationException{
18 if (!supports(field))
19 throw new UnsupportedOperationException("${msg.name} does not support statistics on field " + field.getName());
20
21 OFOxs<F> oxs = getOxs(field);
22
23 if (oxs == null)
24 return null;
25
26 return oxs.getValue();
27 }
28
29 @Override
30 public <F extends OFValueType<F>> Stat.Builder set(StatField<F> field, F value) {
31 initBuilder();
32 OFOxs<F> oxs = OFFactories.getFactory(OFVersion.${version.constant_version}).oxss().fromValue(value, field);
33 this.oxsFieldsBuilder.set(oxs);
34 updateOxsList();
35 return this;
36 }
37
38
39 @Override
40 public boolean supports(StatField<?> field){
41 return supportsField(field);
42 }
43
44 private <F extends OFValueType<F>> OFOxs<F> getOxs(StatField<F> field) {
45//:: if has_parent:
46 return this.oxsFieldsSet ? this.oxsFields.get(field) : parentMessage.oxsFields.get(field);
47//:: else:
48 return this.oxsFieldsSet ? this.oxsFields.get(field) : null;
49//:: #endif
50 }