Revision 9249
Added by Jing Tao over 9 years ago
src/edu/ucsb/nceas/metacat/IdentifierManager.java | ||
---|---|---|
1682 | 1682 |
* @param startTime |
1683 | 1683 |
* @param endTime |
1684 | 1684 |
* @param objectFormat |
1685 |
* @param replicaStatus
|
|
1685 |
* @param nodeId
|
|
1686 | 1686 |
* @param start |
1687 | 1687 |
* @param count |
1688 | 1688 |
* @return ObjectList |
... | ... | |
1691 | 1691 |
* @throws PropertyNotFoundException |
1692 | 1692 |
*/ |
1693 | 1693 |
public ObjectList querySystemMetadata(Date startTime, Date endTime, |
1694 |
ObjectFormatIdentifier objectFormatId, boolean replicaStatus,
|
|
1694 |
ObjectFormatIdentifier objectFormatId, NodeReference nodeId,
|
|
1695 | 1695 |
int start, int count, Identifier identifier, boolean isSID) |
1696 | 1696 |
throws SQLException, PropertyNotFoundException, ServiceException { |
1697 | 1697 |
ObjectList ol = new ObjectList(); |
... | ... | |
1756 | 1756 |
f4 = true; |
1757 | 1757 |
} |
1758 | 1758 |
|
1759 |
if (!replicaStatus) { |
|
1759 |
/*if (!replicaStatus) {
|
|
1760 | 1760 |
String currentNodeId = PropertyService.getInstance().getProperty("dataone.nodeId"); |
1761 | 1761 |
if (!f1 && !f2 && !f3 && !f4) { |
1762 | 1762 |
whereClauseSql += " where authoritive_member_node = '" + |
... | ... | |
1765 | 1765 |
whereClauseSql += " and authoritive_member_node = '" + |
1766 | 1766 |
currentNodeId.trim() + "'"; |
1767 | 1767 |
} |
1768 |
}*/ |
|
1769 |
|
|
1770 |
if (nodeId != null && nodeId.getValue() != null && !nodeId.getValue().trim().equals("")) { |
|
1771 |
if (!f1 && !f2 && !f3 && !f4) { |
|
1772 |
whereClauseSql += " where authoritive_member_node = '" + |
|
1773 |
nodeId.getValue().trim() + "'"; |
|
1774 |
} else { |
|
1775 |
whereClauseSql += " and authoritive_member_node = '" + |
|
1776 |
nodeId.getValue().trim() + "'"; |
|
1777 |
} |
|
1768 | 1778 |
} |
1769 |
|
|
1770 | 1779 |
|
1771 | 1780 |
|
1772 | 1781 |
// connection |
src/edu/ucsb/nceas/metacat/dataone/CNodeService.java | ||
---|---|---|
2035 | 2035 |
Integer start, Integer count) |
2036 | 2036 |
throws InvalidRequest, InvalidToken, NotAuthorized, NotImplemented, |
2037 | 2037 |
ServiceFailure { |
2038 |
boolean replicaStatus= true; |
|
2039 |
return super.listObjects(session, startTime, endTime, formatid, identifier, replicaStatus, start, count);
|
|
2038 |
|
|
2039 |
return super.listObjects(session, startTime, endTime, formatid, identifier, nodeId, start, count);
|
|
2040 | 2040 |
} |
2041 | 2041 |
|
2042 | 2042 |
|
src/edu/ucsb/nceas/metacat/dataone/D1NodeService.java | ||
---|---|---|
1539 | 1539 |
* @throws InvalidRequest |
1540 | 1540 |
* @throws NotImplemented |
1541 | 1541 |
*/ |
1542 |
public ObjectList listObjects(Session session, Date startTime, Date endTime, ObjectFormatIdentifier objectFormatId, Identifier identifier, Boolean replicaStatus, Integer start,
|
|
1542 |
public ObjectList listObjects(Session session, Date startTime, Date endTime, ObjectFormatIdentifier objectFormatId, Identifier identifier, NodeReference nodeId, Integer start,
|
|
1543 | 1543 |
Integer count) throws NotAuthorized, InvalidRequest, NotImplemented, ServiceFailure, InvalidToken { |
1544 | 1544 |
|
1545 | 1545 |
ObjectList objectList = null; |
... | ... | |
1553 | 1553 |
if(identifier != null) { |
1554 | 1554 |
isSid = IdentifierManager.getInstance().systemMetadataSIDExists(identifier); |
1555 | 1555 |
} |
1556 |
objectList = IdentifierManager.getInstance().querySystemMetadata(startTime, endTime, objectFormatId, replicaStatus, start, count, identifier, isSid);
|
|
1556 |
objectList = IdentifierManager.getInstance().querySystemMetadata(startTime, endTime, objectFormatId, nodeId, start, count, identifier, isSid);
|
|
1557 | 1557 |
} catch (Exception e) { |
1558 | 1558 |
throw new ServiceFailure("1580", "Error querying system metadata: " + e.getMessage()); |
1559 | 1559 |
} |
src/edu/ucsb/nceas/metacat/dataone/MNodeService.java | ||
---|---|---|
928 | 928 |
@Override |
929 | 929 |
public ObjectList listObjects(Session session, Date startTime, Date endTime, ObjectFormatIdentifier objectFormatId, Identifier identifier, Boolean replicaStatus, Integer start, |
930 | 930 |
Integer count) throws NotAuthorized, InvalidRequest, NotImplemented, ServiceFailure, InvalidToken { |
931 |
|
|
932 |
return super.listObjects(session, startTime, endTime, objectFormatId, identifier, replicaStatus, start, count); |
|
931 |
NodeReference nodeId = null; |
|
932 |
if(!replicaStatus) { |
|
933 |
//not include those objects whose authoritative node is not this mn |
|
934 |
nodeId = new NodeReference(); |
|
935 |
try { |
|
936 |
String currentNodeId = PropertyService.getInstance().getProperty("dataone.nodeId"); // return only pids for which this mn |
|
937 |
nodeId.setValue(currentNodeId); |
|
938 |
} catch(Exception e) { |
|
939 |
throw new ServiceFailure("1580", e.getMessage()); |
|
940 |
} |
|
941 |
} |
|
942 |
return super.listObjects(session, startTime, endTime, objectFormatId, identifier, nodeId, start, count); |
|
933 | 943 |
} |
934 | 944 |
|
935 | 945 |
/** |
src/edu/ucsb/nceas/metacat/dataone/SyncAccessPolicy.java | ||
---|---|---|
52 | 52 |
import org.dataone.service.types.v1.AccessPolicy; |
53 | 53 |
import org.dataone.service.types.v1.AccessRule; |
54 | 54 |
import org.dataone.service.types.v1.Identifier; |
55 |
import org.dataone.service.types.v1.NodeReference; |
|
55 | 56 |
import org.dataone.service.types.v1.ObjectFormatIdentifier; |
56 | 57 |
import org.dataone.service.types.v1.ObjectInfo; |
57 | 58 |
import org.dataone.service.types.v1.ObjectList; |
... | ... | |
316 | 317 |
Date startTime = null; |
317 | 318 |
Date endTime = null; |
318 | 319 |
ObjectFormatIdentifier objectFormatId = null; |
319 |
Boolean replicaStatus = false; // return only pids for which this mn |
|
320 |
// is |
|
320 |
//Boolean replicaStatus = false; // return only pids for which this mn |
|
321 |
NodeReference thisMN = new NodeReference(); |
|
322 |
try { |
|
323 |
String currentNodeId = PropertyService.getInstance().getProperty("dataone.nodeId"); // return only pids for which this mn |
|
324 |
thisMN.setValue(currentNodeId); |
|
325 |
} catch (Exception e) { |
|
326 |
logMetacat.error("SyncAccessPolicy.run - can't get the node id of this member node from the metacat property file since :"+e.getMessage()); |
|
327 |
return; |
|
328 |
} |
|
329 |
// is |
|
321 | 330 |
ObjectList objsToSync = null; |
322 | 331 |
Integer count = 0; |
323 | 332 |
Integer start = 0; |
... | ... | |
350 | 359 |
|
351 | 360 |
objsToSync = IdentifierManager.getInstance() |
352 | 361 |
.querySystemMetadata(startTime, endTime, |
353 |
objectFormatId, replicaStatus, start, count, id, isSid);
|
|
362 |
objectFormatId, thisMN, start, count, id, isSid);
|
|
354 | 363 |
|
355 | 364 |
logMetacat.debug("syncTask total # of guids: " |
356 | 365 |
+ objsToSync.getTotal() + ", count for this page: " |
... | ... | |
383 | 392 |
objsToSync = IdentifierManager |
384 | 393 |
.getInstance() |
385 | 394 |
.querySystemMetadata(startTime, endTime, |
386 |
objectFormatId, replicaStatus, start, count, id, isSid);
|
|
395 |
objectFormatId, thisMN, start, count, id, isSid);
|
|
387 | 396 |
} catch (Exception e) { |
388 | 397 |
logMetacat.error("Error syncing ids"); |
389 | 398 |
syncError = true; |
src/edu/ucsb/nceas/metacat/dataone/v1/CNodeService.java | ||
---|---|---|
74 | 74 |
|
75 | 75 |
import edu.ucsb.nceas.metacat.IdentifierManager; |
76 | 76 |
import edu.ucsb.nceas.metacat.dataone.convert.LogV2toV1Converter; |
77 |
import edu.ucsb.nceas.metacat.properties.PropertyService; |
|
77 | 78 |
|
78 | 79 |
/** |
79 | 80 |
* Represents Metacat's implementation of the DataONE Coordinating Node service |
... | ... | |
321 | 322 |
ObjectFormatIdentifier formatid, Boolean replicaStatus, Integer start, |
322 | 323 |
Integer count) throws InvalidRequest, InvalidToken, NotAuthorized, |
323 | 324 |
NotImplemented, ServiceFailure { |
324 |
return impl.listObjects(null, startTime, endTime, formatid, null, replicaStatus, start, count); |
|
325 |
NodeReference nodeId = null; |
|
326 |
if(!replicaStatus) { |
|
327 |
//not include those objects whose authoritative node is not this mn |
|
328 |
nodeId = new NodeReference(); |
|
329 |
try { |
|
330 |
String currentNodeId = PropertyService.getInstance().getProperty("dataone.nodeId"); // return only pids for which this mn |
|
331 |
nodeId.setValue(currentNodeId); |
|
332 |
} catch(Exception e) { |
|
333 |
throw new ServiceFailure("1580", e.getMessage()); |
|
334 |
} |
|
335 |
} |
|
336 |
return impl.listObjects(null, startTime, endTime, formatid, null, nodeId, start, count); |
|
325 | 337 |
} |
326 | 338 |
|
327 | 339 |
@Override |
... | ... | |
330 | 342 |
ObjectFormatIdentifier formatid, Boolean replicaStatus, Integer start, |
331 | 343 |
Integer count) throws InvalidRequest, InvalidToken, NotAuthorized, |
332 | 344 |
NotImplemented, ServiceFailure { |
333 |
return impl.listObjects(session, startTime, endTime, formatid, null, replicaStatus, start, count); |
|
345 |
NodeReference nodeId = null; |
|
346 |
if(!replicaStatus) { |
|
347 |
//not include those objects whose authoritative node is not this mn |
|
348 |
nodeId = new NodeReference(); |
|
349 |
try { |
|
350 |
String currentNodeId = PropertyService.getInstance().getProperty("dataone.nodeId"); // return only pids for which this mn |
|
351 |
nodeId.setValue(currentNodeId); |
|
352 |
} catch(Exception e) { |
|
353 |
throw new ServiceFailure("1580", e.getMessage()); |
|
354 |
} |
|
355 |
} |
|
356 |
return impl.listObjects(session, startTime, endTime, formatid, null, nodeId, start, count); |
|
334 | 357 |
} |
335 | 358 |
|
336 | 359 |
@Override |
src/edu/ucsb/nceas/metacat/restservice/v2/CNResourceHandler.java | ||
---|---|---|
1279 | 1279 |
Date endTime = null; |
1280 | 1280 |
ObjectFormatIdentifier formatId = null; |
1281 | 1281 |
Identifier identifier = null; |
1282 |
boolean replicaStatus = true; |
|
1282 |
//boolean replicaStatus = true; |
|
1283 |
NodeReference nodeId = null; |
|
1283 | 1284 |
int start = 0; |
1284 | 1285 |
int count = 1000; |
1285 | 1286 |
Enumeration<String> paramlist = request.getParameterNames(); |
... | ... | |
1315 | 1316 |
} else if (name.equals("identifier") && value != null) { |
1316 | 1317 |
identifier = new Identifier(); |
1317 | 1318 |
identifier.setValue(value); |
1318 |
} else if (name.equals("replicaStatus") && value != null) { |
|
1319 |
replicaStatus = Boolean.parseBoolean(value); |
|
1319 |
/*} else if (name.equals("replicaStatus") && value != null) { |
|
1320 |
replicaStatus = Boolean.parseBoolean(value);*/ |
|
1321 |
} else if (name.equals("nodeId") && value != null) { |
|
1322 |
nodeId = new NodeReference(); |
|
1323 |
nodeId.setValue(value); |
|
1324 |
logMetacat.debug("the nodeId value is "+nodeId.getValue()); |
|
1320 | 1325 |
} else if (name.equals("start") && value != null) { |
1321 | 1326 |
start = Integer.valueOf(value); |
1322 | 1327 |
} else if (name.equals("count") && value != null) { |
... | ... | |
1326 | 1331 |
// make the call |
1327 | 1332 |
logMetacat.debug("session: " + session + " fromDate: " + startTime |
1328 | 1333 |
+ " toDate: " + endTime + " formatId: " + formatId |
1329 |
+ " replicaStatus: " + replicaStatus + " start: " + start
|
|
1334 |
+ " start: " + start |
|
1330 | 1335 |
+ " count: " + count); |
1331 | 1336 |
|
1332 | 1337 |
// get the list |
1333 | 1338 |
ObjectList ol = CNodeService.getInstance(request).listObjects(session, |
1334 |
startTime, endTime, formatId, identifier, replicaStatus, start, count);
|
|
1339 |
startTime, endTime, formatId, identifier, nodeId, start, count);
|
|
1335 | 1340 |
|
1336 | 1341 |
// send it |
1337 | 1342 |
OutputStream out = response.getOutputStream(); |
Also available in: Unified diff
Use the NodeReference object to replace the replicaStatus to restrict the listObjects method.