1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package pl.edu.agh.cast.data.persistence.runtime;
19
20 import java.util.ArrayList;
21 import java.util.Collections;
22 import java.util.HashMap;
23 import java.util.LinkedList;
24 import java.util.List;
25 import java.util.UUID;
26
27 import pl.edu.agh.cast.data.model.DataSetDescriptor;
28 import pl.edu.agh.cast.data.model.IDataSet;
29 import pl.edu.agh.cast.data.model.IElement;
30 import pl.edu.agh.cast.data.model.general.IGeneralDataSet;
31 import pl.edu.agh.cast.data.model.general.IGeneralElement;
32 import pl.edu.agh.cast.data.model.general.sample.SampleGeneralDataSet;
33 import pl.edu.agh.cast.data.persistence.AbstractPersistenceProvider;
34 import pl.edu.agh.cast.data.persistence.IPersistenceProvider;
35
36
37
38
39
40
41
42
43 public class RuntimePersistenceProvider extends AbstractPersistenceProvider implements IPersistenceProvider {
44
45 private HashMap<UUID, IDataSet<? extends IElement>> dsMap = new HashMap<UUID, IDataSet<? extends IElement>>();
46
47 private List<DataSetDescriptor> dsDescriptors = new LinkedList<DataSetDescriptor>();
48
49
50
51
52 @SuppressWarnings("nls")
53 public RuntimePersistenceProvider() {
54
55 IGeneralDataSet<IGeneralElement> gds = new SampleGeneralDataSet("Sample GDS");
56
57 dsMap.put(gds.getId(), gds);
58 dsDescriptors.add(gds.getDescriptor());
59
60 }
61
62 protected List<IDataSet<? extends IElement>> getAllDataSets() {
63 return new ArrayList<IDataSet<? extends IElement>>(dsMap.values());
64 }
65
66 protected void addDataSet(IDataSet<? extends IElement> dataSet) {
67 dsMap.put(dataSet.getId(), dataSet);
68 if (!dsDescriptors.contains(dataSet.getDescriptor())) {
69 dsDescriptors.add(dataSet.getDescriptor());
70 }
71 }
72
73 protected void clearDataSets() {
74 dsMap.clear();
75 dsDescriptors.clear();
76 }
77
78
79
80
81
82
83 @SuppressWarnings("unchecked")
84 @Override
85 public <T extends IDataSet<? extends IElement>> T getDataSet(UUID id) {
86 return (T)dsMap.get(id);
87 }
88
89
90
91
92
93
94 @Override
95 public DataSetDescriptor getDataSetDescriptor(UUID id) {
96 IDataSet<? extends IElement> ds = dsMap.get(id);
97 return ds == null ? null : ds.getDescriptor();
98 }
99
100
101
102
103
104
105 @Override
106 public List<DataSetDescriptor> getDataSetDescriptors() {
107 return Collections.unmodifiableList(dsDescriptors);
108 }
109
110
111
112
113
114
115 @Override
116 public UUID saveDataSet(IDataSet<? extends IElement> dataSet) {
117 IDataSet<? extends IElement> newDataSet = (IDataSet<? extends IElement>)copy(dataSet);
118 dsMap.put(newDataSet.getId(), newDataSet);
119 if (!dsDescriptors.contains(newDataSet.getDescriptor())) {
120 dsDescriptors.add(newDataSet.getDescriptor());
121 }
122 return newDataSet.getId();
123 }
124
125
126
127
128
129
130
131
132 public static IDataSet<? extends IElement> copy(IDataSet<? extends IElement> dataSet) {
133 return dataSet;
134 }
135
136
137
138
139
140
141 @Override
142 public void destroy() {
143 }
144
145
146
147
148
149
150 @Override
151 public void initialize() {
152 }
153
154 }