use of de.catma.backgroundservice.ProgressListener in project catma by forTEXT.
the class GraphWorktreeProject method synchronizeWithRemote.
@Override
public void synchronizeWithRemote(OpenProjectListener openProjectListener) throws Exception {
if (hasUncommittedChanges()) {
throw new IllegalStateException("There are uncommitted changes that need to be committed first!");
}
for (TagsetDefinition tagset : getTagsets()) {
gitProjectHandler.synchronizeTagsetWithRemote(tagset.getUuid());
}
for (SourceDocument document : getSourceDocuments()) {
gitProjectHandler.synchronizeSourceDocumentWithRemote(document.getUuid());
for (AnnotationCollectionReference collectionReference : document.getUserMarkupCollectionRefs()) {
gitProjectHandler.synchronizeCollectionWithRemote(collectionReference.getId());
}
}
gitProjectHandler.synchronizeWithRemote();
if (gitProjectHandler.hasConflicts()) {
gitProjectHandler.initAndUpdateSubmodules();
openProjectListener.conflictResolutionNeeded(new GitConflictedProject(projectReference, gitProjectHandler, documentId -> getSourceDocumentURI(documentId)));
} else {
boolean forceGraphReload = gitProjectHandler.loadRolesPerResource();
gitProjectHandler.initAndUpdateSubmodules();
gitProjectHandler.removeStaleSubmoduleDirectories();
gitProjectHandler.ensureDevBranches();
rootRevisionHash = gitProjectHandler.getRootRevisionHash();
ProgressListener progressListener = new ProgressListener() {
@Override
public void setProgress(String value, Object... args) {
openProjectListener.progress(value, args);
}
};
graphProjectHandler.ensureProjectRevisionIsLoaded(new ExecutionListener<TagManager>() {
@Override
public void error(Throwable t) {
openProjectListener.failure(t);
}
@Override
public void done(TagManager result) {
tagManager.load(result.getTagLibrary());
openProjectListener.ready(GraphWorktreeProject.this);
}
}, progressListener, rootRevisionHash, tagManager, () -> gitProjectHandler.getTagsets(), () -> gitProjectHandler.getDocuments(), (tagLibrary) -> gitProjectHandler.getCollections(tagLibrary, progressListener), forceGraphReload, backgroundService);
}
}
use of de.catma.backgroundservice.ProgressListener in project catma by forTEXT.
the class CorpusImporter method importCorpus.
/**
* !BACKGROUND THREAD! No direct UI code here!
*
* @param progressListener
* @param corpusFile
* @param documentMetadataList
* @param tempDir
* @param ui
* @param project
* @return
* @throws Exception
*/
public Void importCorpus(final ProgressListener progressListener, final File corpusFile, final List<CorpusImportDocumentMetadata> documentMetadataList, final String tempDir, final UI ui, final Project project) throws Exception {
progressListener.setProgress("Importing Corpus");
GZIPInputStream gzipIs = new GZIPInputStream(new FileInputStream(corpusFile));
try (TarArchiveInputStream taIs = new TarArchiveInputStream(gzipIs)) {
TarArchiveEntry entry = taIs.getNextTarEntry();
while (entry != null) {
final String entryName = entry.getName();
final String[] pathParts = entry.getName().split(Pattern.quote("/"));
final String documentIdPart = pathParts[2];
final String documentId = documentIdPart.substring(documentIdPart.indexOf("__") + 3);
final String idUri = "catma://" + documentId;
if (pathParts[3].equals("annotationcollections")) {
progressListener.setProgress("Importing Collection %1$s", pathParts[4]);
ui.accessSynchronously(() -> {
try {
final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
IOUtils.copy(taIs, buffer);
SourceDocument document = project.getSourceDocument(documentId);
Pair<AnnotationCollection, List<TagsetDefinitionImportStatus>> loadResult = project.loadAnnotationCollection(new ByteArrayInputStream(buffer.toByteArray()), document);
List<TagsetDefinitionImportStatus> tagsetDefinitionImportStatusList = loadResult.getSecond();
final AnnotationCollection annotationCollection = loadResult.getFirst();
Optional<TagsetDefinition> optIntrinsicTagset = annotationCollection.getTagLibrary().getTagsetDefinitions().stream().filter(tagsetDef -> tagsetDef.getName().equals("Intrinsic Markup")).findFirst();
if (optIntrinsicTagset.isPresent()) {
TagsetDefinition intrinsicTagset = optIntrinsicTagset.get();
List<TagReference> intrinsicAnnotations = annotationCollection.getTagReferences(intrinsicTagset);
if (!intrinsicAnnotations.isEmpty()) {
annotationCollection.removeTagReferences(intrinsicAnnotations);
}
annotationCollection.getTagLibrary().remove(intrinsicTagset);
tagsetDefinitionImportStatusList.stream().filter(status -> status.getTagset().equals(intrinsicTagset)).findFirst().ifPresent(status -> status.setDoImport(false));
}
tagsetDefinitionImportStatusList.stream().filter(status -> status.getTagset().isEmpty()).forEach(status -> status.setDoImport(false));
if (!annotationCollection.isEmpty()) {
project.importCollection(tagsetDefinitionImportStatusList, annotationCollection);
}
} catch (Exception e) {
Logger.getLogger(ProjectView.class.getName()).log(Level.SEVERE, "Error importing the CATMA 5 Corpus: " + entryName, e);
String errorMsg = e.getMessage();
if ((errorMsg == null) || (errorMsg.trim().isEmpty())) {
errorMsg = "";
}
Notification.show("Error", String.format("Error importing the CATMA 5 Corpus! " + "This Collection will be skipped!\n The underlying error message was:\n%1$s", errorMsg), Type.ERROR_MESSAGE);
}
});
} else {
final CorpusImportDocumentMetadata documentMetadata = documentMetadataList.stream().filter(metadata -> metadata.getSourceDocID().equals(idUri)).findFirst().orElse(null);
final Locale locale = LocaleUtils.toLocale(documentMetadata.getSourceDocLocale());
final boolean useApostrophe = Arrays.asList(documentMetadata.getSourceDocSepChars()).contains(String.valueOf(UploadFile.APOSTROPHE));
final String title = (documentMetadata.getSourceDocName() == null || documentMetadata.getSourceDocName().isEmpty()) ? documentId : documentMetadata.getSourceDocName();
progressListener.setProgress("Importing Document %1$s", title);
final File tempFile = new File(new File(tempDir), documentId);
if (tempFile.exists()) {
tempFile.delete();
}
try (FileOutputStream fos = new FileOutputStream(tempFile)) {
IOUtils.copy(taIs, fos);
}
ui.accessSynchronously(() -> {
IDGenerator idGenerator = new IDGenerator();
IndexInfoSet indexInfoSet = new IndexInfoSet(Collections.emptyList(), useApostrophe ? Lists.newArrayList(UploadFile.APOSTROPHE) : Collections.emptyList(), locale);
TechInfoSet techInfoSet = new TechInfoSet(documentId, FileType.TEXT.getMimeType(), tempFile.toURI());
ContentInfoSet contentInfoSet = new ContentInfoSet(documentMetadata.getSourceDocAuthor(), documentMetadata.getSourceDocDescription(), documentMetadata.getSourceDocPublisher(), title);
techInfoSet.setCharset(Charset.forName("UTF-8"));
SourceDocumentInfo documentInfo = new SourceDocumentInfo(indexInfoSet, contentInfoSet, techInfoSet);
AbstractSourceContentHandler handler = null;
boolean loadIntrinsicMarkup = false;
if (entryName.endsWith("xml2")) {
handler = new XML2ContentHandler();
loadIntrinsicMarkup = true;
} else if (entryName.endsWith("xml")) {
handler = new OldXMLContentHandler();
loadIntrinsicMarkup = true;
} else {
handler = new StandardContentHandler();
}
handler.setSourceDocumentInfo(documentInfo);
SourceDocument document = new SourceDocument(documentId, handler);
try {
project.insert(document, false);
if (loadIntrinsicMarkup) {
final TagManager tagmanager = new TagManager(new TagLibrary());
XmlMarkupCollectionSerializationHandler markupHandler = new XmlMarkupCollectionSerializationHandler(tagmanager, (XML2ContentHandler) handler, project.getUser().getIdentifier());
try (FileInputStream fis = new FileInputStream(tempFile)) {
AnnotationCollection intrinsicMarkupCollection = markupHandler.deserialize(document, idGenerator.generateCollectionId(), fis);
Collection<TagsetImport> tagsetImports = new ArrayList<TagsetImport>();
String defaultIntrinsicXMLElmentsName = "Default Intrinsic XML Elements";
for (TagsetDefinition tagset : tagmanager.getTagLibrary()) {
if (!tagset.isEmpty()) {
TagsetDefinition targetTagset = project.getTagManager().getTagLibrary().getTagsetDefinition(tagset.getUuid());
boolean inProject = false;
if (targetTagset == null) {
targetTagset = tagset;
} else {
inProject = true;
}
String namespace = tagset.getName() == null ? "none" : tagset.getName();
if (tagset.getName() == null) {
tagset.setName(defaultIntrinsicXMLElmentsName);
}
TagsetImport tagsetImport = new TagsetImport(namespace, tagset, targetTagset, inProject ? TagsetImportState.WILL_BE_MERGED : TagsetImportState.WILL_BE_CREATED);
tagsetImports.add(tagsetImport);
}
}
// Creating Tagsets
tagsetImports.stream().filter(ti -> ti.getImportState().equals(TagsetImportState.WILL_BE_CREATED)).forEach(tagsetImport -> {
if (project.getTagManager().getTagLibrary().getTagsetDefinition(tagsetImport.getTargetTagset().getUuid()) != null) {
// already imported, so it will be a merge
tagsetImport.setImportState(TagsetImportState.WILL_BE_MERGED);
} else {
TagsetDefinition extractedTagset = tagsetImport.getExtractedTagset();
try {
project.importTagsets(Collections.singletonList(new TagsetDefinitionImportStatus(extractedTagset, project.inProjectHistory(extractedTagset.getUuid()), project.getTagManager().getTagLibrary().getTagsetDefinition(extractedTagset.getUuid()) != null)));
} catch (Exception e) {
Logger.getLogger(ProjectView.class.getName()).log(Level.SEVERE, String.format("Error importing tagset %1$s with ID %2$s", extractedTagset.getName(), extractedTagset.getUuid()), e);
String errorMsg = e.getMessage();
if ((errorMsg == null) || (errorMsg.trim().isEmpty())) {
errorMsg = "";
}
Notification.show("Error", String.format("Error importing tagset %1$s! " + "This tagset will be skipped!\n The underlying error message was:\n%2$s", extractedTagset.getName(), errorMsg), Type.ERROR_MESSAGE);
}
}
});
// Merging Tagsets
tagsetImports.stream().filter(ti -> ti.getImportState().equals(TagsetImportState.WILL_BE_MERGED)).forEach(tagsetImport -> {
TagsetDefinition targetTagset = project.getTagManager().getTagLibrary().getTagsetDefinition(tagsetImport.getTargetTagset().getUuid());
for (TagDefinition tag : tagsetImport.getExtractedTagset()) {
Optional<TagDefinition> optionalTag = targetTagset.getTagDefinitionsByName(tag.getName()).findFirst();
if (optionalTag.isPresent()) {
TagDefinition existingTag = optionalTag.get();
tag.getUserDefinedPropertyDefinitions().forEach(pd -> {
if (existingTag.getPropertyDefinition(pd.getName()) == null) {
project.getTagManager().addUserDefinedPropertyDefinition(existingTag, new PropertyDefinition(pd));
}
});
List<TagReference> tagReferences = intrinsicMarkupCollection.getTagReferences(tag);
intrinsicMarkupCollection.removeTagReferences(tagReferences);
Multimap<TagInstance, TagReference> referencesByInstance = ArrayListMultimap.create();
tagReferences.forEach(tr -> referencesByInstance.put(tr.getTagInstance(), tr));
for (TagInstance incomingTagInstance : referencesByInstance.keySet()) {
TagInstance newTagInstance = new TagInstance(idGenerator.generate(), existingTag.getUuid(), incomingTagInstance.getAuthor(), incomingTagInstance.getTimestamp(), existingTag.getUserDefinedPropertyDefinitions(), targetTagset.getUuid());
for (Property oldProp : incomingTagInstance.getUserDefinedProperties()) {
String oldPropDefId = oldProp.getPropertyDefinitionId();
PropertyDefinition oldPropDef = tag.getPropertyDefinitionByUuid(oldPropDefId);
PropertyDefinition existingPropDef = existingTag.getPropertyDefinition(oldPropDef.getName());
newTagInstance.addUserDefinedProperty(new Property(existingPropDef.getUuid(), oldProp.getPropertyValueList()));
}
ArrayList<TagReference> newReferences = new ArrayList<>();
referencesByInstance.get(incomingTagInstance).forEach(tr -> {
try {
newReferences.add(new TagReference(newTagInstance, tr.getTarget().toString(), tr.getRange(), tr.getUserMarkupCollectionUuid()));
} catch (URISyntaxException e) {
e.printStackTrace();
}
});
intrinsicMarkupCollection.addTagReferences(newReferences);
}
} else {
tag.setTagsetDefinitionUuid(targetTagset.getUuid());
project.getTagManager().addTagDefinition(targetTagset, tag);
}
}
});
project.importCollection(Collections.emptyList(), intrinsicMarkupCollection);
}
if (tempFile.exists()) {
tempFile.delete();
}
}
} catch (Exception e) {
Logger.getLogger(ProjectView.class.getName()).log(Level.SEVERE, "Error importing the CATMA 5 Corpus: " + entryName, e);
String errorMsg = e.getMessage();
if ((errorMsg == null) || (errorMsg.trim().isEmpty())) {
errorMsg = "";
}
Notification.show("Error", String.format("Error importing the CATMA 5 Corpus! " + "This Document will be skipped!\n The underlying error message was:\n%1$s", errorMsg), Type.ERROR_MESSAGE);
}
});
}
entry = taIs.getNextTarEntry();
}
}
return null;
}
use of de.catma.backgroundservice.ProgressListener in project catma by forTEXT.
the class ProjectView method handleSaveDocumentWizardContext.
private void handleSaveDocumentWizardContext(final WizardContext result) {
setEnabled(false);
setProgressBarVisible(true);
final UI ui = UI.getCurrent();
BackgroundServiceProvider backgroundServiceProvider = (BackgroundServiceProvider) UI.getCurrent();
BackgroundService backgroundService = backgroundServiceProvider.accuireBackgroundService();
backgroundService.submit(new DefaultProgressCallable<Void>() {
@SuppressWarnings("unchecked")
@Override
public Void call() throws Exception {
IDGenerator idGenerator = new IDGenerator();
boolean useApostropheAsSeparator = (Boolean) result.get(DocumentWizard.WizardContextKey.APOSTROPHE_AS_SEPARATOR);
String collectionNamePattern = (String) result.get(DocumentWizard.WizardContextKey.COLLECTION_NAME_PATTERN);
Collection<TagsetImport> tagsetImports = (Collection<TagsetImport>) result.get(DocumentWizard.WizardContextKey.TAGSET_IMPORT_LIST);
Collection<UploadFile> uploadFiles = (Collection<UploadFile>) result.get(DocumentWizard.WizardContextKey.UPLOAD_FILE_LIST);
if (tagsetImports == null) {
tagsetImports = Collections.emptyList();
}
// Ignoring Tagsets
tagsetImports.stream().filter(ti -> ti.getImportState().equals(TagsetImportState.WILL_BE_IGNORED)).forEach(tagsetImport -> {
for (TagDefinition tag : tagsetImport.getExtractedTagset()) {
for (UploadFile uploadFile : uploadFiles) {
if (uploadFile.getIntrinsicMarkupCollection() != null) {
AnnotationCollection intrinsicMarkupCollection = uploadFile.getIntrinsicMarkupCollection();
intrinsicMarkupCollection.removeTagReferences(intrinsicMarkupCollection.getTagReferences(tag));
}
}
}
});
getProgressListener().setProgress("Creating imported Tagsets");
// Creating Tagsets
tagsetImports.stream().filter(ti -> ti.getImportState().equals(TagsetImportState.WILL_BE_CREATED)).forEach(tagsetImport -> {
getProgressListener().setProgress("Creating Tagset %1$s", tagsetImport.getTargetTagset().getName());
ui.accessSynchronously(() -> {
if (project.getTagManager().getTagLibrary().getTagsetDefinition(tagsetImport.getTargetTagset().getUuid()) != null) {
// already imported, so it will be a merge
tagsetImport.setImportState(TagsetImportState.WILL_BE_MERGED);
} else {
TagsetDefinition extractedTagset = tagsetImport.getExtractedTagset();
try {
project.importTagsets(Collections.singletonList(new TagsetDefinitionImportStatus(extractedTagset, project.inProjectHistory(extractedTagset.getUuid()), project.getTagManager().getTagLibrary().getTagsetDefinition(extractedTagset.getUuid()) != null)));
} catch (Exception e) {
Logger.getLogger(ProjectView.class.getName()).log(Level.SEVERE, String.format("Error importing tagset %1$s with ID %2$s", extractedTagset.getName(), extractedTagset.getUuid()), e);
String errorMsg = e.getMessage();
if ((errorMsg == null) || (errorMsg.trim().isEmpty())) {
errorMsg = "";
}
Notification.show("Error", String.format("Error importing tagset %1$s! " + "This tagset will be skipped!\n The underlying error message was:\n%2$s", extractedTagset.getName(), errorMsg), Type.ERROR_MESSAGE);
}
}
ui.push();
});
});
// Merging Tagsets
tagsetImports.stream().filter(ti -> ti.getImportState().equals(TagsetImportState.WILL_BE_MERGED)).forEach(tagsetImport -> {
getProgressListener().setProgress("Merging Tagset %1$s", tagsetImport.getTargetTagset().getName());
ui.accessSynchronously(() -> {
TagsetDefinition targetTagset = project.getTagManager().getTagLibrary().getTagsetDefinition(tagsetImport.getTargetTagset().getUuid());
for (TagDefinition tag : tagsetImport.getExtractedTagset()) {
Optional<TagDefinition> optionalTag = targetTagset.getTagDefinitionsByName(tag.getName()).findFirst();
if (optionalTag.isPresent()) {
TagDefinition existingTag = optionalTag.get();
tag.getUserDefinedPropertyDefinitions().forEach(pd -> {
if (existingTag.getPropertyDefinition(pd.getName()) == null) {
project.getTagManager().addUserDefinedPropertyDefinition(existingTag, new PropertyDefinition(pd));
}
});
for (UploadFile uploadFile : uploadFiles) {
if (uploadFile.getIntrinsicMarkupCollection() != null) {
AnnotationCollection intrinsicMarkupCollection = uploadFile.getIntrinsicMarkupCollection();
List<TagReference> tagReferences = intrinsicMarkupCollection.getTagReferences(tag);
intrinsicMarkupCollection.removeTagReferences(tagReferences);
Multimap<TagInstance, TagReference> referencesByInstance = ArrayListMultimap.create();
tagReferences.forEach(tr -> referencesByInstance.put(tr.getTagInstance(), tr));
for (TagInstance incomingTagInstance : referencesByInstance.keySet()) {
TagInstance newTagInstance = new TagInstance(idGenerator.generate(), existingTag.getUuid(), incomingTagInstance.getAuthor(), incomingTagInstance.getTimestamp(), existingTag.getUserDefinedPropertyDefinitions(), targetTagset.getUuid());
for (Property oldProp : incomingTagInstance.getUserDefinedProperties()) {
String oldPropDefId = oldProp.getPropertyDefinitionId();
PropertyDefinition oldPropDef = tag.getPropertyDefinitionByUuid(oldPropDefId);
PropertyDefinition existingPropDef = existingTag.getPropertyDefinition(oldPropDef.getName());
newTagInstance.addUserDefinedProperty(new Property(existingPropDef.getUuid(), oldProp.getPropertyValueList()));
}
ArrayList<TagReference> newReferences = new ArrayList<>();
referencesByInstance.get(incomingTagInstance).forEach(tr -> {
try {
newReferences.add(new TagReference(newTagInstance, tr.getTarget().toString(), tr.getRange(), tr.getUserMarkupCollectionUuid()));
} catch (URISyntaxException e) {
e.printStackTrace();
}
});
intrinsicMarkupCollection.addTagReferences(newReferences);
}
}
}
} else {
tag.setTagsetDefinitionUuid(targetTagset.getUuid());
project.getTagManager().addTagDefinition(targetTagset, tag);
}
}
ui.push();
});
});
// Importing docs and collections
for (UploadFile uploadFile : uploadFiles) {
getProgressListener().setProgress("Importing Document %1$s", uploadFile.getTitle());
ui.accessSynchronously(() -> {
addUploadFile(uploadFile, useApostropheAsSeparator, collectionNamePattern);
ui.push();
});
}
return null;
}
}, new ExecutionListener<Void>() {
@Override
public void done(Void result) {
setProgressBarVisible(false);
setEnabled(true);
}
@Override
public void error(Throwable t) {
setProgressBarVisible(false);
setEnabled(true);
errorHandler.showAndLogError("Error adding Documents", t);
}
}, progressListener);
}
use of de.catma.backgroundservice.ProgressListener in project catma by forTEXT.
the class GraphWorktreeProject method open.
@Override
public void open(OpenProjectListener openProjectListener) {
try {
logger.info(String.format("Opening Project %1$s with ID %2$s", projectReference.getName(), projectReference.getProjectId()));
this.rootRevisionHash = gitProjectHandler.getRootRevisionHash();
logger.info(String.format("Revision Hash for Project %1$s is %2$s", projectReference.getProjectId(), this.rootRevisionHash));
this.gitProjectHandler.loadRolesPerResource();
logger.info(String.format("Checking for conflicts in Project %1$s", projectReference.getProjectId()));
if (gitProjectHandler.hasConflicts()) {
gitProjectHandler.initAndUpdateSubmodules();
openProjectListener.conflictResolutionNeeded(new GitConflictedProject(projectReference, gitProjectHandler, documentId -> getSourceDocumentURI(documentId)));
} else {
gitProjectHandler.initAndUpdateSubmodules();
gitProjectHandler.removeStaleSubmoduleDirectories();
gitProjectHandler.ensureDevBranches();
gitProjectHandler.verifyCollections();
ProgressListener progressListener = new ProgressListener() {
@Override
public void setProgress(String value, Object... args) {
logger.info(String.format(value, args));
openProjectListener.progress(value, args);
}
};
graphProjectHandler.ensureProjectRevisionIsLoaded(new ExecutionListener<TagManager>() {
@Override
public void error(Throwable t) {
openProjectListener.failure(t);
}
@Override
public void done(TagManager result) {
logger.info(String.format("Loading Tag library for Project %1$s", projectReference.getProjectId()));
tagManager.load(result.getTagLibrary());
initTagManagerListeners();
logger.info(String.format("Project %1$s is loaded.", projectReference.getProjectId()));
openProjectListener.ready(GraphWorktreeProject.this);
}
}, progressListener, rootRevisionHash, tagManager, () -> gitProjectHandler.getTagsets(), () -> gitProjectHandler.getDocuments(), (tagLibrary) -> gitProjectHandler.getCollections(tagLibrary, progressListener), // forceGraphReload
false, backgroundService);
}
} catch (Exception e) {
openProjectListener.failure(e);
}
}
use of de.catma.backgroundservice.ProgressListener in project catma by forTEXT.
the class GitProjectHandler method getCollections.
public List<AnnotationCollection> getCollections(TagLibrary tagLibrary, ProgressListener progressListener) {
ArrayList<AnnotationCollection> collections = new ArrayList<>();
try (ILocalGitRepositoryManager localRepoManager = this.localGitRepositoryManager) {
try {
localRepoManager.open(projectId, GitProjectManager.getProjectRootRepositoryName(projectId));
Path collectionDirPath = Paths.get(localRepoManager.getRepositoryWorkTree().toURI()).resolve(ANNOTATION_COLLECTION_SUBMODULES_DIRECTORY_NAME);
if (!collectionDirPath.toFile().exists()) {
return collections;
}
List<Path> paths = localRepoManager.getSubmodulePaths().stream().filter(path -> path != null && path.startsWith(ANNOTATION_COLLECTION_SUBMODULES_DIRECTORY_NAME)).map(path -> Paths.get(localRepoManager.getRepositoryWorkTree().toURI()).resolve(ANNOTATION_COLLECTION_SUBMODULES_DIRECTORY_NAME).resolve(path)).collect(Collectors.toList());
localRepoManager.detach();
GitMarkupCollectionHandler gitMarkupCollectionHandler = new GitMarkupCollectionHandler(localRepoManager, this.remoteGitServerManager, this.credentialsProvider);
for (Path collectionPath : paths) {
String collectionId = collectionPath.getFileName().toString();
RBACRole resourceRole = rolesPerResource.get(collectionId);
if ((resourceRole != null) && hasPermission(resourceRole, RBACPermission.COLLECTION_READ)) {
try {
collections.add(gitMarkupCollectionHandler.getCollection(projectId, collectionId, tagLibrary, progressListener, hasPermission(resourceRole, RBACPermission.COLLECTION_WRITE), (tagsetId) -> {
RBACRole tagsetResourceRole = rolesPerResource.get(tagsetId);
return ((tagsetResourceRole != null) && hasPermission(tagsetResourceRole, RBACPermission.TAGSET_READ));
}));
} catch (Exception e) {
logger.log(Level.SEVERE, String.format("error loading Collection reference %1$s for project %2$s", collectionPath, projectId), e);
}
}
}
} catch (Exception e) {
logger.log(Level.SEVERE, String.format("error loading Collection references for project %1$s", projectId), e);
}
}
return collections;
}
Aggregations