| DataStore.java |
1 /*
2 * DataStore.java
3 *
4 * Copyright (c) 1998-2004, The University of Sheffield.
5 *
6 * This file is part of GATE (see http://gate.ac.uk/), and is free
7 * software, licenced under the GNU Library General Public License,
8 * Version 2, June 1991 (in the distribution as file licence.html,
9 * and also available at http://gate.ac.uk/gate/licence.html).
10 *
11 * Hamish Cunningham, 11/Feb/2000
12 *
13 * $Id: DataStore.java,v 1.29 2004/07/21 17:10:02 akshay Exp $
14 */
15
16 package gate;
17
18 import java.util.List;
19
20 import gate.event.DatastoreListener;
21 import gate.persist.PersistenceException;
22 import gate.security.*;
23 import gate.security.SecurityException;
24 import gate.util.FeatureBearer;
25 import gate.util.NameBearer;
26
27 /** Models all sorts of data storage.
28 */
29 public interface DataStore extends FeatureBearer, NameBearer {
30
31 public static final String DATASTORE_FEATURE_NAME = "DataStore";
32 public static final String LR_ID_FEATURE_NAME = "LRPersistenceId";
33
34
35 /** Set the URL as string for the underlying storage mechanism. */
36 public void setStorageUrl(String storageUrl) throws PersistenceException;
37
38 /** Get the URL as String for the underlying storage mechanism. */
39 public String getStorageUrl();
40
41 /**
42 * Create a new data store. <B>NOTE:</B> for some data stores
43 * creation is an system administrator task; in such cases this
44 * method will throw an UnsupportedOperationException.
45 */
46 public void create()
47 throws PersistenceException, UnsupportedOperationException;
48
49 /** Open a connection to the data store. */
50 public void open() throws PersistenceException;
51
52 /** Close the data store. */
53 public void close() throws PersistenceException;
54
55 /**
56 * Delete the data store. <B>NOTE:</B> for some data stores
57 * deletion is an system administrator task; in such cases this
58 * method will throw an UnsupportedOperationException.
59 */
60 public void delete()
61 throws PersistenceException, UnsupportedOperationException;
62
63 /**
64 * Delete a resource from the data store.
65 * @param lrId a data-store specific unique identifier for the resource
66 * @param lrClassName class name of the type of resource
67 */
68 public void delete(String lrClassName, Object lrId)
69 throws PersistenceException,SecurityException;
70
71 /**
72 * Save: synchonise the in-memory image of the LR with the persistent
73 * image.
74 */
75 public void sync(LanguageResource lr)
76 throws PersistenceException,SecurityException;
77
78 /**
79 * Set method for the autosaving behaviour of the data store.
80 * <B>NOTE:</B> many types of datastore have no auto-save function,
81 * in which case this will throw an UnsupportedOperationException.
82 */
83 public void setAutoSaving(boolean autoSaving)
84 throws UnsupportedOperationException,PersistenceException;
85
86 /** Get the autosaving behaviour of the LR. */
87 public boolean isAutoSaving();
88
89 /** Adopt a resource for persistence. */
90 public LanguageResource adopt(LanguageResource lr, SecurityInfo secInfo)
91 throws PersistenceException, gate.security.SecurityException;
92
93 /**
94 * Get a resource from the persistent store.
95 * <B>Don't use this method - use Factory.createResource with
96 * DataStore and DataStoreInstanceId parameters set instead.</B>
97 */
98 LanguageResource getLr(String lrClassName, Object lrId)
99 throws PersistenceException,SecurityException;
100
101 /** Get a list of the types of LR that are present in the data store. */
102 public List getLrTypes() throws PersistenceException;
103
104 /** Get a list of the IDs of LRs of a particular type that are present. */
105 public List getLrIds(String lrType) throws PersistenceException;
106
107 /** Get a list of the names of LRs of a particular type that are present. */
108 public List getLrNames(String lrType) throws PersistenceException;
109
110 /** Get a list of LRs that satisfy some set or restrictions */
111 public List findLrIds(List constraints) throws PersistenceException;
112
113 /**
114 * Get a list of LRs that satisfy some set or restrictions and are
115 * of a particular type
116 */
117 public List findLrIds(List constraints, String lrType) throws PersistenceException;
118
119 /** Get the name of an LR from its ID. */
120 public String getLrName(Object lrId) throws PersistenceException;
121
122 /**
123 * Registers a new {@link gate.event.DatastoreListener} with this datastore
124 */
125 public void addDatastoreListener(DatastoreListener l);
126
127 /**
128 * Removes a a previously registered {@link gate.event.DatastoreListener}
129 * from the list listeners for this datastore
130 */
131 public void removeDatastoreListener(DatastoreListener l);
132
133 /**
134 * Returns the name of the icon to be used when this datastore is displayed
135 * in the GUI
136 */
137 public String getIconName();
138
139 /**
140 * Returns the comment displayed by the GUI for this DataStore
141 */
142 public String getComment();
143
144
145 /**
146 * Checks if the user (identified by the sessionID)
147 * has read access to the LR
148 */
149 public boolean canReadLR(Object lrID)
150 throws PersistenceException, gate.security.SecurityException;
151
152 /**
153 * Checks if the user (identified by the sessionID)
154 * has write access to the LR
155 */
156 public boolean canWriteLR(Object lrID)
157 throws PersistenceException, gate.security.SecurityException;
158
159 /** get security information for LR . */
160 public SecurityInfo getSecurityInfo(LanguageResource lr)
161 throws PersistenceException;
162
163 /** set security information for LR . */
164 public void setSecurityInfo(LanguageResource lr,SecurityInfo si)
165 throws PersistenceException, gate.security.SecurityException;
166
167 /** identify user using this datastore */
168 public void setSession(Session s)
169 throws gate.security.SecurityException;
170
171 /** identify user using this datastore */
172 public Session getSession(Session s)
173 throws gate.security.SecurityException;
174
175 /**
176 * Try to acquire exlusive lock on a resource from the persistent store.
177 * Always call unlockLR() when the lock is no longer needed
178 */
179 public boolean lockLr(LanguageResource lr)
180 throws PersistenceException,SecurityException;
181
182 /**
183 * Releases the exlusive lock on a resource from the persistent store.
184 */
185 public void unlockLr(LanguageResource lr)
186 throws PersistenceException,SecurityException;
187
188
189 } // interface DataStore
190