1 //
2 // $Revision: 5 $
3 // $LastChangedBy: mhanns $
4 // $Date: 2010-04-01 10:10:45 +0200 (Do, 01 Apr 2010) $
5 // $HeadURL:
6 // svn://localhost/winf-ps/trunk/repository/src/main/java/de/uni_leipzig/wifa/iwi/mr3/dao/ModelRepositoryDao.java
7 // $
8 //
9
10 package de.uni_leipzig.wifa.iwi.mr3.dao;
11
12 import java.util.Map;
13
14 import org.eclipse.emf.ecore.EObject;
15 import org.eclipse.emf.ecore.resource.Resource;
16
17 import de.uni_leipzig.wifa.iwi.mr3.common.Match;
18 import de.uni_leipzig.wifa.iwi.mr3.service.MRException;
19
20 /**
21 * Model repository DAO.
22 */
23 public interface ModelRepositoryDao
24 {
25 /**
26 * Initialize the persitence media.
27 * <p>
28 * Make all stept to create an empty database. This action destroys any
29 * existing datastore.
30 */
31 void startUp();
32
33 /**
34 * Lifecycle method.
35 * <p>
36 * Close all resources.
37 */
38 void shutDown();
39
40 /**
41 * Load model by given namespace URI.
42 * <p>
43 * If no model will be found, the return value is <code>null</code>.
44 *
45 * @param nsUri
46 * Namespace URI
47 * @param registry
48 * the registry for loaded elements
49 * @return Model
50 */
51 EObject load(final String nsUri, final Map<Object, EObject> registry);
52
53 /**
54 * Save {@link Resource}.
55 * <p>
56 * The resource will be saved under it's nsURI. Any existing model can not be
57 * overwritten. In case of existence it must be deleted before saved.
58 * <p>
59 * Try {@link ModelRepositoryDao#modelExists(String)} to test whether the
60 * model still exists.
61 *
62 * @param resource
63 * EMF {@link Resource} to save
64 * @throws MRException
65 * Application logic exception
66 */
67 void save(Resource resource) throws MRException;
68
69 /**
70 * Check whether a model exists for the given namespace URI.
71 *
72 * @param nsUri
73 * Namespace URI to test
74 * @return <code>true</code> if a model exists inside the repository for the
75 * given namespace URI, otherwise <code>false</code>
76 */
77 boolean modelExists(String nsUri);
78
79 /**
80 * Remove the model from repository with the given namespace URI.
81 * <p>
82 * If no model with given namespace URI exists, no action will be taken.
83 *
84 * @param nsUri
85 * Namespace URI of model to delete
86 * @param cascading
87 * Whether all the instance models shoud also deleted
88 * @throws MRException
89 * Application logic exception
90 */
91 void delete(String nsUri, boolean cascading) throws MRException;
92
93 /**
94 * Find all model instances of the model with the given nsURI.
95 *
96 * @param metaNsUri
97 * nsURI of meta model
98 * @return Array of instance model's nsURI.
99 */
100 String[] getInstanceModels(String metaNsUri);
101
102 /**
103 * Finds all instances of given classifiers that contain given expression.
104 *
105 * @param expression
106 * the expression to search for
107 * @param classifiers
108 * the classifiers to search in
109 * @param isRegEx
110 * RegExp search
111 * @param isCaseSensitive
112 * Case sensitive search
113 * @return the array of found models matching the given expression
114 */
115 Match[] find(String expression, String[] classifiers, final boolean isRegEx, final boolean isCaseSensitive);
116 }