1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package fr.inrae.agroclim.indicators.model.data;
18
19 import java.util.ArrayList;
20 import java.util.Collection;
21 import java.util.List;
22
23 import lombok.Getter;
24
25
26
27
28
29
30 public abstract class Resource<T extends Cloneable> extends DataLoadingListenerHandler implements Cloneable {
31
32
33
34 public static final String DEFAULT_SEP = ";";
35
36
37
38
39 private static final long serialVersionUID = 7164381207421561734L;
40
41
42
43
44 @Getter
45 private final List<T> data;
46
47
48
49
50
51 @Getter
52 private final List<String> missingVariables;
53
54
55
56
57 @Getter
58 private final List<Integer> years;
59
60
61
62
63 protected Resource() {
64 data = new ArrayList<>();
65 years = new ArrayList<>();
66 missingVariables = new ArrayList<>();
67 }
68
69
70
71
72
73 protected final void addYear(final Integer year) {
74 if (!years.contains(year)) {
75 years.add(year);
76 }
77 }
78
79 @Override
80 @SuppressWarnings("checkstyle:DesignForExtension")
81 public Resource<T> clone() throws CloneNotSupportedException {
82 @SuppressWarnings("unchecked")
83 final Resource<T> clone = (Resource<T>) super.clone();
84 clone.setMissingVariables(getMissingVariables());
85 clone.getYears().addAll(getYears());
86 return clone;
87 }
88
89
90
91
92 public final boolean isEmpty() {
93 return data.isEmpty();
94 }
95
96
97
98
99
100
101 public final void setMissingVariables(final Collection<String> variables) {
102 missingVariables.clear();
103 missingVariables.addAll(variables);
104 }
105 }