231 |
231 |
* This method will be call in handleUploadRequest in MetacatServlet class
|
232 |
232 |
*/
|
233 |
233 |
public static void registerDocument(String docname, String doctype,
|
234 |
|
String accnum, String user) throws SQLException,
|
|
234 |
String accnum, String user, String[] groupnames) throws SQLException,
|
235 |
235 |
AccessionNumberException, Exception
|
236 |
236 |
{
|
237 |
237 |
try {
|
238 |
238 |
// get server location for this doc
|
239 |
239 |
int serverLocation = getServerLocationNumber(accnum);
|
240 |
|
registerDocument(docname, doctype, accnum, user, serverLocation);
|
|
240 |
registerDocument(docname, doctype, accnum, user, groupnames,
|
|
241 |
serverLocation);
|
241 |
242 |
} catch (Exception e) {
|
242 |
243 |
throw e;
|
243 |
244 |
}
|
... | ... | |
267 |
268 |
* (e.g., knb.1.1)
|
268 |
269 |
* @param user
|
269 |
270 |
* the user that owns the document
|
|
271 |
* @param groupnames
|
|
272 |
* the groups that owns the document
|
270 |
273 |
* @param serverCode
|
271 |
274 |
* the serverid from xml_replication on which this document
|
272 |
275 |
* resides.
|
273 |
276 |
*/
|
274 |
277 |
public static void registerDocument(String docname, String doctype,
|
275 |
|
String accnum, String user, int serverCode) throws SQLException,
|
276 |
|
AccessionNumberException, Exception
|
|
278 |
String accnum, String user, String[] groups, int serverCode)
|
|
279 |
throws SQLException, AccessionNumberException, Exception
|
277 |
280 |
{
|
|
281 |
|
278 |
282 |
DBConnection dbconn = null;
|
279 |
283 |
int serialNumber = -1;
|
280 |
284 |
PreparedStatement pstmt = null;
|
... | ... | |
301 |
305 |
// it is a updated data file
|
302 |
306 |
else if (userSpecifyRev > revInDataBase && revInDataBase > 0) {
|
303 |
307 |
|
|
308 |
if (!hasWritePermission(user, groups, accnum)) { throw new Exception(
|
|
309 |
"User " + user
|
|
310 |
+ " does not have permission to update the document"
|
|
311 |
+ accnum); }
|
|
312 |
|
304 |
313 |
//archive the old entry
|
305 |
314 |
archiveDocRevision(docIdWithoutRev, user);
|
306 |
315 |
//delete the old entry in xml_documents
|
... | ... | |
362 |
371 |
//dbconn.close();
|
363 |
372 |
} finally {
|
364 |
373 |
try {
|
365 |
|
pstmt.close();
|
|
374 |
if(pstmt != null){
|
|
375 |
pstmt.close();
|
|
376 |
}
|
366 |
377 |
} finally {
|
367 |
378 |
DBConnectionPool.returnDBConnection(dbconn, serialNumber);
|
368 |
379 |
}
|
... | ... | |
1240 |
1251 |
sql.append(" FROM ").append(table);
|
1241 |
1252 |
sql.append(" WHERE docid LIKE '").append(docid.getIdentifier());
|
1242 |
1253 |
sql.append("' and rev like '").append(docid.getRev()).append("'");
|
|
1254 |
|
1243 |
1255 |
pstmt = dbconn.prepareStatement(sql.toString());
|
1244 |
1256 |
|
1245 |
1257 |
pstmt.execute();
|
Fixed a bug in upload function. For online data updates, access was not checked.