use of de.catma.project.ProjectReference 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.project.ProjectReference in project catma by forTEXT.
the class GitlabManagerRestricted method unmarshallProjectReference.
private ProjectReference unmarshallProjectReference(String path, String eventuallyMarshalledMetadata) {
String name = "unknown";
String description = "unknown";
try {
JsonObject metaDataJson = JsonParser.parseString(eventuallyMarshalledMetadata).getAsJsonObject();
name = metaDataJson.get(GroupSerializationField.name.name()).getAsString();
description = metaDataJson.get(GroupSerializationField.description.name()).getAsString();
} catch (Exception e) {
logger.log(Level.WARNING, String.format("Error retrieving Project name or description for %1$s from %2$s", path, eventuallyMarshalledMetadata), e);
}
return new ProjectReference(path, name, description);
}
use of de.catma.project.ProjectReference in project catma by forTEXT.
the class ProjectCard method initComponents.
protected void initComponents() {
addStyleName("projectlist__card");
CssLayout preview = new CssLayout();
preview.addStyleName("projectlist__card__preview");
descriptionLabel = new Label(projectReference.getDescription());
descriptionLabel.setWidth("100%");
preview.addComponents(descriptionLabel);
preview.addLayoutClickListener(evt -> handleOpenProjectRequest());
addComponent(preview);
HorizontalFlexLayout descriptionBar = new HorizontalFlexLayout();
descriptionBar.addStyleName("projectlist__card__descriptionbar");
descriptionBar.setAlignItems(FlexLayout.AlignItems.BASELINE);
descriptionBar.setWidth("100%");
nameLabel = new Label(projectReference.getName());
nameLabel.setWidth("100%");
descriptionBar.addComponent(nameLabel);
IconButton btnRemove = new IconButton(VaadinIcons.TRASH);
descriptionBar.addComponents(btnRemove);
btnRemove.addClickListener((event -> {
ConfirmDialog.show(UI.getCurrent(), "Delete Project", "Do you want to delete the whole Project '" + projectReference.getName() + "'?", "OK", "Cancel", (evt) -> {
try {
if (evt.isConfirmed()) {
projectManager.delete(projectReference.getProjectId());
eventBus.post(new ProjectChangedEvent(projectReference.getProjectId()));
}
} catch (Exception e) {
errorLogger.showAndLogError("can't delete Project " + projectReference.getName(), e);
}
});
}));
IconButton btnEdit = new IconButton(VaadinIcons.PENCIL);
btnEdit.addClickListener(click -> {
new EditProjectDialog(projectReference, projectManager, result -> {
try {
projectManager.updateProject(result);
descriptionLabel.setValue(result.getDescription());
nameLabel.setValue(result.getName());
} catch (IOException e) {
errorLogger.showAndLogError("Failed to update Project", e);
eventBus.post(new ProjectChangedEvent());
}
}).show();
});
descriptionBar.addComponent(btnEdit);
IconButton btnLeave = new IconButton(VaadinIcons.EXIT);
btnLeave.addClickListener((event -> {
ConfirmDialog.show(UI.getCurrent(), "Leave Project", "Do you want to leave '" + projectReference.getName() + "'?", "OK", "Cancel", (evt) -> {
try {
if (evt.isConfirmed()) {
projectManager.leaveProject(projectReference.getProjectId());
}
} catch (Exception e) {
errorLogger.showAndLogError("can't leave project " + projectReference.getName(), e);
}
eventBus.post(new ProjectChangedEvent());
});
}));
descriptionBar.addComponent(btnLeave);
rbacEnforcer.register(RBACConstraint.ifNotAuthorized((role) -> (rbacManager.hasPermission(role, RBACPermission.PROJECT_EDIT)), () -> {
btnEdit.setVisible(false);
btnEdit.setEnabled(false);
}));
rbacEnforcer.register(RBACConstraint.ifNotAuthorized((role) -> (rbacManager.hasPermission(role, RBACPermission.PROJECT_DELETE)), () -> {
btnRemove.setVisible(false);
btnRemove.setEnabled(false);
}));
rbacEnforcer.register(RBACConstraint.ifNotAuthorized((role) -> rbacManager.hasPermission(role, RBACPermission.PROJECT_LEAVE) && !rbacManager.hasPermission(role, RBACPermission.PROJECT_DELETE), () -> {
btnLeave.setVisible(false);
btnLeave.setEnabled(false);
}));
// IconButton buttonAction = new IconButton(VaadinIcons.ELLIPSIS_DOTS_V);
// descriptionBar.addComponents(buttonAction);
addComponents(descriptionBar);
}
use of de.catma.project.ProjectReference 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);
}
}
Aggregations