use of org.swordapp.server.SwordCollection in project mycore by MyCoRe-Org.
the class MCRSwordServiceDocumentManager method buildSwordCollectionList.
private List<SwordCollection> buildSwordCollectionList(String workspaceName, AuthCredentials auth) {
String baseURL = MCRFrontendUtil.getBaseURL();
List<SwordCollection> swordCollections = new ArrayList<>();
MCRSword.getCollectionsOfWorkspace(workspaceName).stream().map(collection -> new AbstractMap.SimpleEntry<>(collection, MCRSword.getCollection(collection))).filter(collectionEntry -> collectionEntry.getValue().isVisible()).forEach(collection -> {
SwordCollection swordCollection = new SwordCollection();
final String collectionTitle = collection.getKey();
swordCollection.setTitle(collectionTitle);
// add the supported packaging to the collection Provider
final MCRSwordCollectionProvider collectionProvider = collection.getValue();
collectionProvider.getSupportedPagacking().forEach(swordCollection::addAcceptPackaging);
swordCollection.setHref(baseURL + MCRSwordConstants.SWORD2_COL_IRI + collectionTitle + "/");
swordCollections.add(swordCollection);
});
return swordCollections;
}
use of org.swordapp.server.SwordCollection in project dataverse by IQSS.
the class ServiceDocumentManagerImpl method getServiceDocument.
@Override
public ServiceDocument getServiceDocument(String sdUri, AuthCredentials authCredentials, SwordConfiguration config) throws SwordError, SwordServerException, SwordAuthException {
AuthenticatedUser user = swordAuth.auth(authCredentials);
String warning = urlManager.processUrl(sdUri);
ServiceDocument service = new ServiceDocument();
SwordWorkspace swordWorkspace = new SwordWorkspace();
Dataverse rootDataverse = dataverseService.findRootDataverse();
if (rootDataverse != null) {
String name = rootDataverse.getName();
if (name != null) {
swordWorkspace.setTitle(name);
}
}
if (warning != null) {
swordWorkspace.getWrappedWorkspace().setAttributeValue("warning", warning);
}
service.setMaxUploadSize(config.getMaxUploadSize());
String hostnamePlusBaseUrl = urlManager.getHostnamePlusBaseUrlPath(sdUri);
if (hostnamePlusBaseUrl == null) {
ServiceDocument serviceDocument = new ServiceDocument();
return serviceDocument;
}
/**
* We don't expect this to support Shibboleth groups because even though
* a Shibboleth user can have an API token the transient
* shibIdentityProvider String on AuthenticatedUser is only set when a
* SAML assertion is made at runtime via the browser.
*/
List<Dataverse> dataverses = permissionService.getDataversesUserHasPermissionOn(user, Permission.AddDataset);
for (Dataverse dataverse : dataverses) {
String dvAlias = dataverse.getAlias();
if (dvAlias != null && !dvAlias.isEmpty()) {
SwordCollection swordCollection = new SwordCollection();
swordCollection.setTitle(dataverse.getName());
swordCollection.setHref(hostnamePlusBaseUrl + "/collection/dataverse/" + dvAlias);
swordCollection.addAcceptPackaging(UriRegistry.PACKAGE_SIMPLE_ZIP);
swordCollection.setCollectionPolicy(systemConfig.getApiTermsOfUse());
swordWorkspace.addCollection(swordCollection);
}
}
service.addWorkspace(swordWorkspace);
return service;
}
Aggregations