1 /*
2 * This file is a part of CAST project.
3 * (c) Copyright 2007, AGH University of Science & Technology
4 * https://caribou.iisg.agh.edu.pl/trac/cast
5 *
6 * Licensed under the Eclipse Public License, Version 1.0 (the "License").
7 * You may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 * http://www.eclipse.org/legal/epl-v10.html
10 */
11 /*
12 * File: IPersistenceProvider.java
13 * Created: 2009-07-06
14 * Author: tmilos
15 * $Id$
16 */
17
18 package pl.edu.agh.cast.data.persistence;
19
20 import java.util.Collection;
21 import java.util.List;
22 import java.util.Map;
23 import java.util.UUID;
24
25 import org.eclipse.core.runtime.IProgressMonitor;
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.Type;
31 import pl.edu.agh.cast.data.model.domain.DomainDataSetDescriptor;
32 import pl.edu.agh.cast.data.model.presentation.IPresentationDataSet;
33 import pl.edu.agh.cast.data.model.presentation.IPresentationElement;
34 import pl.edu.agh.cast.data.model.presentation.PresentationDataSetDescriptor;
35 import pl.edu.agh.cast.data.model.visual.VisualDataSetDescriptor;
36
37 /**
38 * Interface of data model persistence provider.
39 *
40 * @author AGH CAST Team
41 */
42 public interface IPersistenceProvider {
43
44 /**
45 * Sets the path to configuration/storage file.
46 *
47 * @param filePath
48 * path to configuration/storage file
49 */
50 public void setConfig(String filePath);
51
52 /**
53 * Initializes the instance of {@link IPersistenceProvider}.
54 */
55 public void initialize();
56
57 /**
58 * Destroys the instance of {@link IPersistenceProvider}.
59 */
60 public void destroy();
61
62 /**
63 * Returns descriptors of all available data sets.
64 *
65 * @return list of descriptors of available data sets
66 */
67 public List<DataSetDescriptor> getDataSetDescriptors();
68
69 /**
70 * Returns descriptors of all available data sets of given type (and sub-types).
71 *
72 * @param dsType
73 * the type (super-type) of the data sets whose descriptors should be returned
74 * @return list of descriptors of data sets of given type
75 */
76 public List<DataSetDescriptor> getDataSetDescriptors(Type dsType);
77
78 /**
79 * Returns descriptors of all available domain data sets.
80 *
81 * @return list of descriptors of available domain data sets
82 */
83 public List<DomainDataSetDescriptor> getDomainDataSetDescriptors();
84
85 /**
86 * Returns descriptors of all available presentation data sets.
87 *
88 * @return list of descriptors of available presentation data sets
89 */
90 public List<PresentationDataSetDescriptor> getPresentationDataSetDescriptors();
91
92 /**
93 * Returns descriptors of all available visual data sets.
94 *
95 * @return list of descriptors of available visual data sets
96 */
97 public List<VisualDataSetDescriptor> getVisualDataSetDescriptors();
98
99 /**
100 * Returns the descriptor of data set with given ID.
101 *
102 * @param id
103 * the ID of the data set
104 * @return the descriptor of data set with given ID
105 */
106 public DataSetDescriptor getDataSetDescriptor(UUID id);
107
108 /**
109 * Returns the data set with given ID.
110 *
111 * @param <T>
112 * the type of data set to be returned
113 * @param id
114 * the ID of the data set
115 * @return the data set with given ID
116 */
117 public <T extends IDataSet<? extends IElement>> T getDataSet(UUID id);
118
119 /**
120 * Returns the data set described by given descriptor.
121 *
122 * @param <T>
123 * the type of data set to be returned
124 * @param descriptor
125 * the descriptor of the data set
126 * @return the data set with described by given descriptor
127 */
128 public <T extends IDataSet<? extends IElement>> T getDataSet(DataSetDescriptor descriptor);
129
130 /**
131 * Returns the data sets with given IDs.
132 *
133 * @param <T>
134 * the type of data sets to be returned
135 * @param ids
136 * collection of data set IDs
137 * @return a map of data sets with given IDs, indexed by IDs
138 */
139 public <T extends IDataSet<? extends IElement>> Map<UUID, T> getDataSetsById(Collection<UUID> ids);
140
141 /**
142 * Returns the data sets described by given descriptors.
143 *
144 * @param <T>
145 * the type of data sets to be returned
146 * @param descriptors
147 * collection of descriptor of the data sets
148 * @return a map of data sets described by given descriptors, indexed by IDs
149 */
150 public <T extends IDataSet<? extends IElement>> Map<UUID, T> getDataSets(Collection<DataSetDescriptor> descriptors);
151
152 /**
153 * Saves the given data set.
154 *
155 * @param dataSet
156 * the data set to save
157 * @return the ID of the data set (as saved)
158 */
159 public UUID saveDataSet(IDataSet<? extends IElement> dataSet);
160
161 /**
162 * Saves the given data set.
163 *
164 * @param dataSet
165 * the data set to save
166 * @param monitor
167 * operation progress monitor
168 * @return the ID of the data set (as saved)
169 */
170 public UUID saveDataSet(IDataSet<? extends IElement> dataSet, IProgressMonitor monitor);
171
172 /**
173 * Saves the given collection of data sets.
174 *
175 * @param dataSets
176 * collection of data sets to save
177 * @return a map containing new IDs (as saved) of the data sets indexed by their old IDs
178 */
179 public Map<UUID, UUID> saveDataSets(Collection<IDataSet<? extends IElement>> dataSets);
180
181 /**
182 * Saves the given collection of data sets.
183 *
184 * @param dataSets
185 * collection of data sets to save
186 * @param monitor
187 * operation progress monitor
188 * @return a map containing new IDs (as saved) of the data sets indexed by their old IDs
189 */
190 public Map<UUID, UUID> saveDataSets(Collection<IDataSet<? extends IElement>> dataSets, IProgressMonitor monitor);
191
192 /**
193 * Saves the given presentation data set with associated visual data set and returns their new version.
194 *
195 * @param <T>
196 * the type of presentation data set
197 *
198 * @param presentationDataSet
199 * the presentation data set to save
200 * @return the new version of presentation data set (with associated visual data set) as saved
201 */
202 public <T extends IPresentationDataSet<? extends IPresentationElement<? extends IElement>>> T saveDiagram(
203 T presentationDataSet);
204
205 /**
206 * Saves the given presentation data set with associated visual data set and returns their new version.
207 *
208 * @param <T>
209 * the type of presentation data set
210 *
211 * @param presentationDataSet
212 * the presentation data set to save
213 * @param monitor
214 * operation progress monitor
215 * @return the new version of presentation data set (with associated visual data set) as saved
216 */
217 public <T extends IPresentationDataSet<? extends IPresentationElement<? extends IElement>>> T saveDiagram(
218 T presentationDataSet, IProgressMonitor monitor);
219
220 /**
221 * Changes the name of the data set with given ID.
222 *
223 * @param id
224 * the data set ID
225 * @param newName
226 * the new name to set
227 * @return the ID of renamed data set
228 */
229 public UUID renameDataSet(UUID id, String newName);
230
231 }