source: issuevalue/src/main/java/geniusweb/issuevalue/DiscreteValueSet.java@ 32

Last change on this file since 32 was 32, checked in by bart, 3 years ago

Multiple learns with repeated tournament, maven use https.

File size: 2.7 KB
Line 
1package geniusweb.issuevalue;
2
3import java.math.BigInteger;
4import java.util.Collection;
5import java.util.Collections;
6import java.util.Iterator;
7import java.util.List;
8
9import com.fasterxml.jackson.annotation.JsonAutoDetect;
10import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
11import com.fasterxml.jackson.annotation.JsonCreator;
12import com.fasterxml.jackson.annotation.JsonProperty;
13import com.fasterxml.jackson.annotation.JsonTypeName;
14import com.fasterxml.jackson.databind.JsonDeserializer;
15import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
16
17import tudelft.utilities.immutablelist.ArrayListSet;
18
19/**
20 * set of discrete values
21 */
22@JsonTypeName("discreteset")
23// disable the inherited deserializer to prevent getting into infinite loop...
24@JsonDeserialize(using = JsonDeserializer.None.class)
25@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
26public class DiscreteValueSet implements ValueSet {
27 /*
28 * final, must be immutable so do not provide external access to this list.
29 * ArrayList (instead of List) to help Jackson serializer which avoids
30 * per-field type annotations.
31 */
32 private final ArrayListSet<DiscreteValue> values = new ArrayListSet<DiscreteValue>();
33
34 @JsonCreator
35 public DiscreteValueSet(
36 @JsonProperty("values") Collection<DiscreteValue> issuevalues) {
37 this.values.addAll(issuevalues);
38 }
39
40 public DiscreteValueSet(DiscreteValue... issuevalues) {
41 for (DiscreteValue value : issuevalues) {
42 this.values.add(value);
43 }
44 }
45
46 public List<DiscreteValue> getValues() {
47 return Collections.unmodifiableList(values);
48 }
49
50 @Override
51 public Boolean contains(Value value) {
52 return values.contains(value);
53 }
54
55 @Override
56 public DiscreteValue get(BigInteger index) {
57 return values.get(index.intValue());
58 }
59
60 @Override
61 public BigInteger size() {
62 return BigInteger.valueOf(values.size());
63 }
64
65 @Override
66 public DiscreteValue get(long index) {
67 return values.get((int) index);
68 }
69
70 @Override
71 public Iterator iterator() {
72 return values.iterator();
73 }
74
75 @Override
76 public String toString() {
77 return "DiscreteValueSet" + values;
78 }
79
80 @Override
81 public int hashCode() {
82 final int prime = 31;
83 int result = 1;
84 result = prime * result + ((values == null) ? 0 : values.hashCode());
85 return result;
86 }
87
88 @Override
89 public boolean equals(Object obj) {
90 if (this == obj)
91 return true;
92 if (obj == null)
93 return false;
94 if (getClass() != obj.getClass())
95 return false;
96 DiscreteValueSet other = (DiscreteValueSet) obj;
97 if (values == null) {
98 if (other.values != null)
99 return false;
100 } else if (!values.equals(other.values))
101 return false;
102 return true;
103 }
104
105}
Note: See TracBrowser for help on using the repository browser.