use of org.irods.jargon.core.pub.CollectionAO in project metalnx-web by irods-contrib.
the class GroupServiceImpl method updateOwnership.
@Override
public boolean updateOwnership(DataGridGroup group, Map<String, Boolean> addCollectionsToOwn, Map<String, Boolean> removeCollectionsToOwn) throws DataGridConnectionRefusedException {
DataObjectAO dataObjectAO = irodsServices.getDataObjectAO();
CollectionAO collectionAO = irodsServices.getCollectionAO();
try {
for (String path : addCollectionsToOwn.keySet()) {
if (collectionService.isCollection(path)) {
collectionAO.setAccessPermissionOwnAsAdmin(group.getAdditionalInfo(), path, group.getGroupname(), addCollectionsToOwn.get(path));
} else {
dataObjectAO.setAccessPermissionWriteInAdminMode(group.getAdditionalInfo(), path, group.getGroupname());
}
}
for (String path : removeCollectionsToOwn.keySet()) {
if (collectionService.isCollection(path)) {
collectionAO.removeAccessPermissionForUserAsAdmin(group.getAdditionalInfo(), path, group.getGroupname(), removeCollectionsToOwn.get(path));
} else {
dataObjectAO.removeAccessPermissionsForUserInAdminMode(group.getAdditionalInfo(), path, group.getGroupname());
}
}
return true;
} catch (JargonException | DataGridException e) {
logger.error("Could not set ownership:", e);
}
return false;
}
use of org.irods.jargon.core.pub.CollectionAO in project metalnx-web by irods-contrib.
the class GroupServiceImpl method updateReadPermissions.
@Override
public boolean updateReadPermissions(DataGridGroup group, Map<String, Boolean> addCollectionsToRead, Map<String, Boolean> removeCollectionsToRead) throws DataGridConnectionRefusedException {
CollectionAO collectionAO = irodsServices.getCollectionAO();
DataObjectAO dataObjectAO = irodsServices.getDataObjectAO();
try {
for (String path : addCollectionsToRead.keySet()) {
if (collectionService.isCollection(path)) {
collectionAO.setAccessPermissionReadAsAdmin(group.getAdditionalInfo(), path, group.getGroupname(), addCollectionsToRead.get(path));
} else {
dataObjectAO.setAccessPermissionReadInAdminMode(group.getAdditionalInfo(), path, group.getGroupname());
}
}
for (String path : removeCollectionsToRead.keySet()) {
if (collectionService.isCollection(path)) {
collectionAO.removeAccessPermissionForUserAsAdmin(group.getAdditionalInfo(), path, group.getGroupname(), removeCollectionsToRead.get(path));
} else {
dataObjectAO.setAccessPermissionReadInAdminMode(group.getAdditionalInfo(), path, group.getGroupname());
}
}
return true;
} catch (JargonException | DataGridException e) {
logger.error("Could not set read permission:", e);
}
return false;
}
use of org.irods.jargon.core.pub.CollectionAO in project metalnx-web by irods-contrib.
the class MetadataServiceImpl method findMetadataValuesByPath.
@Override
public List<DataGridMetadata> findMetadataValuesByPath(String path) throws DataGridConnectionRefusedException {
List<MetaDataAndDomainData> metadataList;
List<DataGridMetadata> dataGridMetadataList = new ArrayList<>();
List<MetaDataAndDomainData> resultingList;
CollectionAndDataObjectListAndSearchAO collectionAndDataObjectListAndSearchAO = irodsServices.getCollectionAndDataObjectListAndSearchAO();
try {
Object obj = collectionAndDataObjectListAndSearchAO.getFullObjectForType(path);
if (obj instanceof DataObject) {
DataObjectAO dataObjectAO = irodsServices.getDataObjectAO();
metadataList = dataObjectAO.findMetadataValuesForDataObject(path);
} else {
CollectionAO collectionAO = irodsServices.getCollectionAO();
metadataList = collectionAO.findMetadataValuesForCollection(path);
}
// TODO2: Making sure all AVUs are unique. Jargon should do that.
resultingList = new ArrayList<>();
Set<Integer> setOfAlreadyListedAVUs = new HashSet<>();
for (MetaDataAndDomainData avuForItem : metadataList) {
int avuId = avuForItem.getAvuId();
if (!setOfAlreadyListedAVUs.contains(avuId)) {
resultingList.add(avuForItem);
setOfAlreadyListedAVUs.add(avuId);
}
}
for (MetaDataAndDomainData metadata : resultingList) {
DataGridMetadata dataGridMetadata = new DataGridMetadata();
dataGridMetadata.setAttribute(metadata.getAvuAttribute());
dataGridMetadata.setValue(metadata.getAvuValue());
dataGridMetadata.setUnit(metadata.getAvuUnit());
dataGridMetadataList.add(dataGridMetadata);
}
Collections.sort(dataGridMetadataList);
} catch (JargonQueryException e) {
logger.error("Error getting metadata info from collection: " + e.toString());
} catch (JargonException e) {
logger.error("Error getting metadata info from dataobject: " + e.toString());
}
return dataGridMetadataList;
}
use of org.irods.jargon.core.pub.CollectionAO in project metalnx-web by irods-contrib.
the class MetadataServiceImpl method delMetadataFromPath.
@Override
public boolean delMetadataFromPath(String path, String attribute, String value, String unit) throws DataGridConnectionRefusedException {
CollectionAndDataObjectListAndSearchAO collectionAndDataObjectListAndSearchAO = irodsServices.getCollectionAndDataObjectListAndSearchAO();
try {
AvuData avuData = new AvuData(attribute, value, unit);
Object obj = collectionAndDataObjectListAndSearchAO.getFullObjectForType(path);
if (obj instanceof DataObject) {
DataObjectAO dataObjectAO = irodsServices.getDataObjectAO();
dataObjectAO.deleteAVUMetadata(path, avuData);
} else {
CollectionAO collectionAO = irodsServices.getCollectionAO();
collectionAO.deleteAVUMetadata(path, avuData);
}
} catch (JargonException e) {
logger.error("Error trying to delete metadata: " + e.toString());
return false;
}
return true;
}
use of org.irods.jargon.core.pub.CollectionAO in project metalnx-web by irods-contrib.
the class CollectionServiceImpl method modifyCollectionAndDataObject.
@Override
public boolean modifyCollectionAndDataObject(String previousPath, String newPath, boolean inheritOption) throws DataGridConnectionRefusedException {
logger.info("modifyCollectionAndDataObject()");
IRODSFileSystemAO irodsFileSystemAO = irodsServices.getIRODSFileSystemAO();
IRODSFileFactory irodsFileFactory = irodsServices.getIRODSFileFactory();
CollectionAO collectionAO = irodsServices.getCollectionAO();
logger.debug("Modify Collection/DataObject {} to {}", previousPath, newPath);
try {
logger.debug("Locating {} in iRODS", previousPath);
IRODSFile previousFile = irodsFileFactory.instanceIRODSFile(previousPath);
logger.info("Creating new IRODSFile instance for {}", newPath);
IRODSFile newFile = irodsFileFactory.instanceIRODSFile(newPath);
boolean isDirectory = irodsFileSystemAO.isDirectory(previousFile);
if (previousPath.compareTo(newPath) != 0) {
// checking if the path given is a collection
if (isDirectory) {
logger.debug("{} is a collection", previousPath);
irodsFileSystemAO.renameDirectory(previousFile, newFile);
} else // the path given is a data object
{
logger.debug("{} is a data object", previousPath);
irodsFileSystemAO.renameFile(previousFile, newFile);
}
}
// Updating inheritance option on the collection, if needed
String zoneName = irodsFileSystemAO.getIRODSServerProperties().getRodsZone();
if (isDirectory) {
boolean isInheritanceSetForNewCollection = collectionAO.isCollectionSetForPermissionInheritance(newPath);
if (inheritOption != isInheritanceSetForNewCollection) {
// enable inheritance for this collection
if (inheritOption) {
logger.debug("Setting inheritance option on {}", newPath);
collectionAO.setAccessPermissionInherit(zoneName, newPath, false);
} else // disable inheritance for this collection
{
logger.debug("Removing inheritance setting on {}", newPath);
collectionAO.setAccessPermissionToNotInherit(zoneName, newPath, false);
}
}
}
return true;
} catch (JargonException e) {
logger.error("Could not edit Collection/DataObject {} to {}: ", previousPath, newPath, e);
}
return false;
}
Aggregations