Revision 6174
Added by Chris Jones over 13 years ago
src/edu/ucsb/nceas/metacat/dataone/D1NodeService.java | ||
---|---|---|
1 |
/** |
|
2 |
* '$RCSfile$' |
|
3 |
* Copyright: 2000-2011 Regents of the University of California and the |
|
4 |
* National Center for Ecological Analysis and Synthesis |
|
5 |
* |
|
6 |
* '$Author$' |
|
7 |
* '$Date$' |
|
8 |
* |
|
9 |
* This program is free software; you can redistribute it and/or modify |
|
10 |
* it under the terms of the GNU General Public License as published by |
|
11 |
* the Free Software Foundation; either version 2 of the License, or |
|
12 |
* (at your option) any later version. |
|
13 |
* |
|
14 |
* This program is distributed in the hope that it will be useful, |
|
15 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
16 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
17 |
* GNU General Public License for more details. |
|
18 |
* |
|
19 |
* You should have received a copy of the GNU General Public License |
|
20 |
* along with this program; if not, write to the Free Software |
|
21 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
22 |
*/ |
|
23 |
|
|
24 |
package edu.ucsb.nceas.metacat.dataone; |
|
25 |
|
|
26 |
import java.io.InputStream; |
|
27 |
import java.util.Date; |
|
28 |
|
|
29 |
import org.dataone.service.exceptions.InvalidRequest; |
|
30 |
import org.dataone.service.exceptions.InvalidToken; |
|
31 |
import org.dataone.service.exceptions.NotAuthorized; |
|
32 |
import org.dataone.service.exceptions.NotFound; |
|
33 |
import org.dataone.service.exceptions.NotImplemented; |
|
34 |
import org.dataone.service.exceptions.ServiceFailure; |
|
35 |
import org.dataone.service.types.AccessPolicy; |
|
36 |
import org.dataone.service.types.Checksum; |
|
37 |
import org.dataone.service.types.Event; |
|
38 |
import org.dataone.service.types.Identifier; |
|
39 |
import org.dataone.service.types.Log; |
|
40 |
import org.dataone.service.types.Permission; |
|
41 |
import org.dataone.service.types.Session; |
|
42 |
import org.dataone.service.types.SystemMetadata; |
|
43 |
|
|
44 |
public abstract class D1NodeService { |
|
45 |
|
|
46 |
/* Methods common to CNCore and MNCore APIs */ |
|
47 |
|
|
48 |
/** |
|
49 |
* Return the log records associated with a given event between the start and |
|
50 |
* end dates listed given a particular Subject listed in the Session |
|
51 |
* |
|
52 |
* @param session - the Session object containing the credentials for the Subject |
|
53 |
* @param fromDate - the start date of the desired log records |
|
54 |
* @param toDate - the end date of the desired log records |
|
55 |
* |
|
56 |
* @return the desired log records |
|
57 |
* |
|
58 |
* @throws InvalidToken |
|
59 |
* @throws ServiceFailure |
|
60 |
* @throws NotAuthorized |
|
61 |
* @throws InvalidRequest |
|
62 |
* @throws NotImplemented |
|
63 |
*/ |
|
64 |
public Log getLogRecords(Session session, Date fromDate, Date toDate, |
|
65 |
Event event) throws InvalidToken, ServiceFailure, |
|
66 |
NotAuthorized, InvalidRequest, NotImplemented { |
|
67 |
|
|
68 |
return null; |
|
69 |
} |
|
70 |
|
|
71 |
/* End methods common to CNCore and MNCore APIs */ |
|
72 |
|
|
73 |
/* Methods common to CNRead and MNRead APIs */ |
|
74 |
|
|
75 |
/** |
|
76 |
* Return the object identified by the given object identifier |
|
77 |
* |
|
78 |
* @param session - the Session object containing the credentials for the Subject |
|
79 |
* @param pid - the object identifier for the given object |
|
80 |
* |
|
81 |
* @return inputStream - the input stream of the given object |
|
82 |
* |
|
83 |
* @throws InvalidToken |
|
84 |
* @throws ServiceFailure |
|
85 |
* @throws NotAuthorized |
|
86 |
* @throws InvalidRequest |
|
87 |
* @throws NotImplemented |
|
88 |
*/ |
|
89 |
public InputStream get(Session session, Identifier pid) |
|
90 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, |
|
91 |
NotImplemented, InvalidRequest { |
|
92 |
|
|
93 |
return null; |
|
94 |
} |
|
95 |
|
|
96 |
/** |
|
97 |
* Return the system metadata for a given object |
|
98 |
* |
|
99 |
* @param session - the Session object containing the credentials for the Subject |
|
100 |
* @param pid - the object identifier for the given object |
|
101 |
* |
|
102 |
* @return inputStream - the input stream of the given system metadata object |
|
103 |
* |
|
104 |
* @throws InvalidToken |
|
105 |
* @throws ServiceFailure |
|
106 |
* @throws NotAuthorized |
|
107 |
* @throws NotFound |
|
108 |
* @throws InvalidRequest |
|
109 |
* @throws NotImplemented |
|
110 |
*/ |
|
111 |
public SystemMetadata getSystemMetadata(Session session, Identifier pid) |
|
112 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, |
|
113 |
InvalidRequest, NotImplemented { |
|
114 |
|
|
115 |
return null; |
|
116 |
} |
|
117 |
|
|
118 |
/** |
|
119 |
* Return a checksum of the object given the object identifier and the name |
|
120 |
* of the checksum algorithm (the default being SHA-1) |
|
121 |
* |
|
122 |
* @param session - the Session object containing the credentials for the Subject |
|
123 |
* @param pid - the object identifier for the given object |
|
124 |
* @param algorithm - the name of the checksum algorithm to be used |
|
125 |
* @return |
|
126 |
* @throws InvalidToken |
|
127 |
* @throws ServiceFailure |
|
128 |
* @throws NotAuthorized |
|
129 |
* @throws NotFound |
|
130 |
* @throws InvalidRequest |
|
131 |
* @throws NotImplemented |
|
132 |
*/ |
|
133 |
/* TODO: CNRead and MNRead have different getChecksum() signatures. Reconcile this first. |
|
134 |
public Checksum getChecksum(Session session, Identifier pid, String algorithm) |
|
135 |
throws InvalidToken, ServiceFailure, NotAuthorized, NotFound, |
|
136 |
InvalidRequest, NotImplemented { |
|
137 |
|
|
138 |
return null; |
|
139 |
|
|
140 |
} |
|
141 |
*/ |
|
142 |
|
|
143 |
/* End methods common to CNRead and MNRead APIs */ |
|
144 |
|
|
145 |
/* Methods common to CNAuthorization and MNAuthorization APIs */ |
|
146 |
|
|
147 |
/** |
|
148 |
* Determine if a particular operation can be performed on an object given |
|
149 |
* by the Subject identified in the Session. |
|
150 |
* |
|
151 |
* @param session - the Session object containing the credentials for the Subject |
|
152 |
* @param pid - the object identifier for the given object to determine authorization |
|
153 |
* @param operation - the permission to check for authorization |
|
154 |
* |
|
155 |
* @return true or false |
|
156 |
* @throws InvalidToken |
|
157 |
* @throws ServiceFailure |
|
158 |
* @throws NotFound |
|
159 |
* @throws NotAuthorized |
|
160 |
* @throws NotImplemented |
|
161 |
* @throws InvalidRequest |
|
162 |
*/ |
|
163 |
public boolean isAuthorized(Session session, Identifier pid, Permission operation) |
|
164 |
throws ServiceFailure, InvalidRequest, InvalidToken, NotFound, |
|
165 |
NotAuthorized, NotImplemented { |
|
166 |
|
|
167 |
return false; |
|
168 |
} |
|
169 |
|
|
170 |
/** |
|
171 |
* Set access for a given object using the object identifier and a Subject |
|
172 |
* under a given Session. |
|
173 |
* |
|
174 |
* @param session - the Session object containing the credentials for the Subject |
|
175 |
* @param pid - the object identifier for the given object to apply the policy |
|
176 |
* @param policy - the access policy to be applied |
|
177 |
* |
|
178 |
* @return true or false |
|
179 |
* @throws InvalidToken |
|
180 |
* @throws ServiceFailure |
|
181 |
* @throws NotFound |
|
182 |
* @throws NotAuthorized |
|
183 |
* @throws NotImplemented |
|
184 |
* @throws InvalidRequest |
|
185 |
*/ |
|
186 |
public boolean setAccessPolicy(Session session, Identifier pid, |
|
187 |
AccessPolicy policy) |
|
188 |
throws InvalidToken, ServiceFailure, NotFound, NotAuthorized, |
|
189 |
NotImplemented, InvalidRequest { |
|
190 |
|
|
191 |
return false; |
|
192 |
} |
|
193 |
|
|
194 |
/* End methods common to CNAuthorization and MNAuthorization APIs */ |
|
195 |
|
|
196 |
} |
|
0 | 197 |
Also available in: Unified diff
Initial check in of the D1NodeService class that provides methods common to both CNodeService and MNodeService implementation classes. The common API methods are:
Methods common to CNCore and MNCore APIs
getLogRecords()
Methods common to CNRead and MNRead APIs
get()
getSystemMetadata()
getChecksum()
Note: getChecksum() differs (the MN interface lists the checksum algorithm, CN doesn't), and this needs to be reconciled.
Methods common to CNAuthorization and MNAuthorization APIs
isAuthorized()
setAccessPolicy()
This class, along with CNodeService, will replace CNCoreImpl.