Search in sources :

Example 1 with OpenProjectListener

use of de.catma.project.OpenProjectListener in project catma by forTEXT.

the class ProjectView method reloadProject.

/**
 * @param projectReference
 */
public void reloadProject(ProjectReference projectReference) {
    if (this.project == null) {
        setProjectReference(projectReference);
    } else {
        setEnabled(false);
        setProgressBarVisible(true);
        final UI ui = UI.getCurrent();
        this.project.open(new OpenProjectListener() {

            @Override
            public void progress(String msg, Object... params) {
                ui.access(() -> {
                    if (params != null) {
                        progressBar.setCaption(String.format(msg, params));
                    } else {
                        progressBar.setCaption(msg);
                    }
                    ui.push();
                });
            }

            @Override
            public void ready(Project project) {
                setProgressBarVisible(false);
                ProjectView.this.project = project;
                ProjectView.this.project.addPropertyChangeListener(RepositoryChangeEvent.exceptionOccurred, projectExceptionListener);
                ProjectView.this.project.getTagManager().addPropertyChangeListener(TagManagerEvent.tagsetDefinitionChanged, tagsetChangeListener);
                ProjectView.this.project.addPropertyChangeListener(RepositoryChangeEvent.tagReferencesChanged, tagReferencesChangedListener);
                setEnabled(true);
                reloadAll();
                checkForUnsynchronizedCommits();
            }

            @Override
            public void conflictResolutionNeeded(ConflictedProject conflictedProject) {
                setProgressBarVisible(false);
                setEnabled(true);
                eventBus.post(new RouteToConflictedProjectEvent(conflictedProject));
            }

            @Override
            public void failure(Throwable t) {
                setProgressBarVisible(false);
                setEnabled(true);
                errorHandler.showAndLogError("error opening project", t);
            }
        });
    }
}
Also used : IndexedProject(de.catma.indexer.IndexedProject) Project(de.catma.project.Project) ConflictedProject(de.catma.project.conflict.ConflictedProject) UI(com.vaadin.ui.UI) OpenProjectListener(de.catma.project.OpenProjectListener) ConflictedProject(de.catma.project.conflict.ConflictedProject) RouteToConflictedProjectEvent(de.catma.ui.events.routing.RouteToConflictedProjectEvent)

Example 2 with OpenProjectListener

use of de.catma.project.OpenProjectListener in project catma by forTEXT.

the class ProjectView method synchronizeProject.

private void synchronizeProject() throws Exception {
    setProgressBarVisible(true);
    final UI ui = UI.getCurrent();
    project.synchronizeWithRemote(new OpenProjectListener() {

        @Override
        public void progress(String msg, Object... params) {
            ui.access(() -> {
                if (params != null) {
                    progressBar.setCaption(String.format(msg, params));
                } else {
                    progressBar.setCaption(msg);
                }
                ui.push();
            });
        }

        @Override
        public void ready(Project project) {
            setProgressBarVisible(false);
            reloadAll();
            setEnabled(true);
            Notification.show("Info", "Your Project has been synchronized!", Type.HUMANIZED_MESSAGE);
            checkForUnsynchronizedCommits();
        }

        @Override
        public void conflictResolutionNeeded(ConflictedProject conflictedProject) {
            setProgressBarVisible(false);
            setEnabled(true);
            eventBus.post(new RouteToConflictedProjectEvent(conflictedProject));
        }

        @Override
        public void failure(Throwable t) {
            setProgressBarVisible(false);
            setEnabled(true);
            errorHandler.showAndLogError("error opening project", t);
        }
    });
}
Also used : IndexedProject(de.catma.indexer.IndexedProject) Project(de.catma.project.Project) ConflictedProject(de.catma.project.conflict.ConflictedProject) UI(com.vaadin.ui.UI) OpenProjectListener(de.catma.project.OpenProjectListener) ConflictedProject(de.catma.project.conflict.ConflictedProject) RouteToConflictedProjectEvent(de.catma.ui.events.routing.RouteToConflictedProjectEvent)

Example 3 with OpenProjectListener

use of de.catma.project.OpenProjectListener 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);
    }
}
Also used : ArrayListMultimap(com.google.common.collect.ArrayListMultimap) Reply(de.catma.document.comment.Reply) LoadingCache(com.google.common.cache.LoadingCache) Status(org.eclipse.jgit.api.Status) UI(com.vaadin.ui.UI) IndexedProject(de.catma.indexer.IndexedProject) TermExtractor(de.catma.indexer.TermExtractor) ByteArrayInputStream(java.io.ByteArrayInputStream) FileInfoProvider(de.catma.repository.git.graph.FileInfoProvider) ErrorHandler(de.catma.ui.module.main.ErrorHandler) Locale(java.util.Locale) Map(java.util.Map) DocumentChangeEvent(de.catma.project.event.DocumentChangeEvent) URI(java.net.URI) Path(java.nio.file.Path) CommitInfo(de.catma.project.CommitInfo) CATMAPropertyKey(de.catma.properties.CATMAPropertyKey) ExecutionListener(de.catma.backgroundservice.ExecutionListener) Collection(java.util.Collection) Set(java.util.Set) TagInstance(de.catma.tag.TagInstance) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) ProjectReference(de.catma.project.ProjectReference) TagReference(de.catma.document.annotation.TagReference) CacheLoader(com.google.common.cache.CacheLoader) List(java.util.List) PropertyChangeListener(java.beans.PropertyChangeListener) TPGraphProjectHandler(de.catma.repository.git.graph.tp.TPGraphProjectHandler) TagDefinition(de.catma.tag.TagDefinition) CacheBuilder(com.google.common.cache.CacheBuilder) ContentInfoSet(de.catma.document.source.ContentInfoSet) CollectionChangeEvent(de.catma.project.event.CollectionChangeEvent) RBACPermission(de.catma.rbac.RBACPermission) StatusPrinter(de.catma.repository.git.managers.StatusPrinter) PropertyDefinition(de.catma.tag.PropertyDefinition) TagManager(de.catma.tag.TagManager) CommentProvider(de.catma.repository.git.graph.CommentProvider) RBACRole(de.catma.rbac.RBACRole) MediaType(org.apache.tika.mime.MediaType) Multimap(com.google.common.collect.Multimap) Function(java.util.function.Function) User(de.catma.user.User) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) HashSet(java.util.HashSet) EventBus(com.google.common.eventbus.EventBus) CommentChangeEvent(de.catma.project.event.CommentChangeEvent) Comment(de.catma.document.comment.Comment) Charset(java.nio.charset.Charset) TeiTagLibrarySerializationHandler(de.catma.serialization.tei.TeiTagLibrarySerializationHandler) Member(de.catma.user.Member) StandardContentHandler(de.catma.document.source.contenthandler.StandardContentHandler) TagsetDefinition(de.catma.tag.TagsetDefinition) Pair(de.catma.util.Pair) IDGenerator(de.catma.util.IDGenerator) RBACSubject(de.catma.rbac.RBACSubject) TagLibrary(de.catma.tag.TagLibrary) PropertyChangeEvent(java.beans.PropertyChangeEvent) OpenProjectListener(de.catma.project.OpenProjectListener) TeiSerializationHandlerFactory(de.catma.serialization.tei.TeiSerializationHandlerFactory) RemovalNotification(com.google.common.cache.RemovalNotification) ProgressListener(de.catma.backgroundservice.ProgressListener) Property(de.catma.tag.Property) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) TermInfo(de.catma.indexer.TermInfo) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) SourceDocument(de.catma.document.source.SourceDocument) AnnotationCollection(de.catma.document.annotation.AnnotationCollection) File(java.io.File) TagsetDefinitionImportStatus(de.catma.serialization.TagsetDefinitionImportStatus) TagManagerEvent(de.catma.tag.TagManager.TagManagerEvent) TagLibrarySerializationHandler(de.catma.serialization.TagLibrarySerializationHandler) Indexer(de.catma.indexer.Indexer) ChangeType(de.catma.project.event.ChangeType) GraphProjectHandler(de.catma.repository.git.graph.GraphProjectHandler) ReplyChangeEvent(de.catma.project.event.ReplyChangeEvent) Paths(java.nio.file.Paths) PropertyChangeSupport(java.beans.PropertyChangeSupport) RemovalListener(com.google.common.cache.RemovalListener) BackgroundService(de.catma.backgroundservice.BackgroundService) InputStream(java.io.InputStream) TeiUserMarkupCollectionDeserializer(de.catma.serialization.tei.TeiUserMarkupCollectionDeserializer) SourceDocument(de.catma.document.source.SourceDocument) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) TagsetDefinition(de.catma.tag.TagsetDefinition) TagManager(de.catma.tag.TagManager) ProgressListener(de.catma.backgroundservice.ProgressListener)

Example 4 with OpenProjectListener

use of de.catma.project.OpenProjectListener in project catma by forTEXT.

the class ProjectView method initProject.

/**
 * @param projectReference
 */
private void initProject(ProjectReference projectReference) {
    setEnabled(false);
    setProgressBarVisible(true);
    final UI ui = UI.getCurrent();
    projectManager.openProject(tagManager, projectReference, new OpenProjectListener() {

        @Override
        public void progress(String msg, Object... params) {
            ui.access(() -> {
                if (params != null) {
                    progressBar.setCaption(String.format(msg, params));
                } else {
                    progressBar.setCaption(msg);
                }
                ui.push();
            });
        }

        @Override
        public void ready(Project project) {
            setProgressBarVisible(false);
            ProjectView.this.project = project;
            ProjectView.this.project.addPropertyChangeListener(RepositoryChangeEvent.exceptionOccurred, projectExceptionListener);
            ProjectView.this.project.getTagManager().addPropertyChangeListener(TagManagerEvent.tagsetDefinitionChanged, tagsetChangeListener);
            ProjectView.this.project.addPropertyChangeListener(RepositoryChangeEvent.tagReferencesChanged, tagReferencesChangedListener);
            setEnabled(true);
            reloadAll();
            checkForUnsynchronizedCommits();
        }

        @Override
        public void conflictResolutionNeeded(ConflictedProject conflictedProject) {
            setProgressBarVisible(false);
            setEnabled(true);
            eventBus.post(new RouteToConflictedProjectEvent(conflictedProject));
        }

        @Override
        public void failure(Throwable t) {
            setProgressBarVisible(false);
            setEnabled(true);
            errorHandler.showAndLogError("error opening project", t);
        }
    });
}
Also used : IndexedProject(de.catma.indexer.IndexedProject) Project(de.catma.project.Project) ConflictedProject(de.catma.project.conflict.ConflictedProject) UI(com.vaadin.ui.UI) OpenProjectListener(de.catma.project.OpenProjectListener) ConflictedProject(de.catma.project.conflict.ConflictedProject) RouteToConflictedProjectEvent(de.catma.ui.events.routing.RouteToConflictedProjectEvent)

Example 5 with OpenProjectListener

use of de.catma.project.OpenProjectListener 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);
    }
}
Also used : ArrayListMultimap(com.google.common.collect.ArrayListMultimap) Reply(de.catma.document.comment.Reply) LoadingCache(com.google.common.cache.LoadingCache) Status(org.eclipse.jgit.api.Status) UI(com.vaadin.ui.UI) IndexedProject(de.catma.indexer.IndexedProject) TermExtractor(de.catma.indexer.TermExtractor) ByteArrayInputStream(java.io.ByteArrayInputStream) FileInfoProvider(de.catma.repository.git.graph.FileInfoProvider) ErrorHandler(de.catma.ui.module.main.ErrorHandler) Locale(java.util.Locale) Map(java.util.Map) DocumentChangeEvent(de.catma.project.event.DocumentChangeEvent) URI(java.net.URI) Path(java.nio.file.Path) CommitInfo(de.catma.project.CommitInfo) CATMAPropertyKey(de.catma.properties.CATMAPropertyKey) ExecutionListener(de.catma.backgroundservice.ExecutionListener) Collection(java.util.Collection) Set(java.util.Set) TagInstance(de.catma.tag.TagInstance) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) ProjectReference(de.catma.project.ProjectReference) TagReference(de.catma.document.annotation.TagReference) CacheLoader(com.google.common.cache.CacheLoader) List(java.util.List) PropertyChangeListener(java.beans.PropertyChangeListener) TPGraphProjectHandler(de.catma.repository.git.graph.tp.TPGraphProjectHandler) TagDefinition(de.catma.tag.TagDefinition) CacheBuilder(com.google.common.cache.CacheBuilder) ContentInfoSet(de.catma.document.source.ContentInfoSet) CollectionChangeEvent(de.catma.project.event.CollectionChangeEvent) RBACPermission(de.catma.rbac.RBACPermission) StatusPrinter(de.catma.repository.git.managers.StatusPrinter) PropertyDefinition(de.catma.tag.PropertyDefinition) TagManager(de.catma.tag.TagManager) CommentProvider(de.catma.repository.git.graph.CommentProvider) RBACRole(de.catma.rbac.RBACRole) MediaType(org.apache.tika.mime.MediaType) Multimap(com.google.common.collect.Multimap) Function(java.util.function.Function) User(de.catma.user.User) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) HashSet(java.util.HashSet) EventBus(com.google.common.eventbus.EventBus) CommentChangeEvent(de.catma.project.event.CommentChangeEvent) Comment(de.catma.document.comment.Comment) Charset(java.nio.charset.Charset) TeiTagLibrarySerializationHandler(de.catma.serialization.tei.TeiTagLibrarySerializationHandler) Member(de.catma.user.Member) StandardContentHandler(de.catma.document.source.contenthandler.StandardContentHandler) TagsetDefinition(de.catma.tag.TagsetDefinition) Pair(de.catma.util.Pair) IDGenerator(de.catma.util.IDGenerator) RBACSubject(de.catma.rbac.RBACSubject) TagLibrary(de.catma.tag.TagLibrary) PropertyChangeEvent(java.beans.PropertyChangeEvent) OpenProjectListener(de.catma.project.OpenProjectListener) TeiSerializationHandlerFactory(de.catma.serialization.tei.TeiSerializationHandlerFactory) RemovalNotification(com.google.common.cache.RemovalNotification) ProgressListener(de.catma.backgroundservice.ProgressListener) Property(de.catma.tag.Property) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) TermInfo(de.catma.indexer.TermInfo) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) SourceDocument(de.catma.document.source.SourceDocument) AnnotationCollection(de.catma.document.annotation.AnnotationCollection) File(java.io.File) TagsetDefinitionImportStatus(de.catma.serialization.TagsetDefinitionImportStatus) TagManagerEvent(de.catma.tag.TagManager.TagManagerEvent) TagLibrarySerializationHandler(de.catma.serialization.TagLibrarySerializationHandler) Indexer(de.catma.indexer.Indexer) ChangeType(de.catma.project.event.ChangeType) GraphProjectHandler(de.catma.repository.git.graph.GraphProjectHandler) ReplyChangeEvent(de.catma.project.event.ReplyChangeEvent) Paths(java.nio.file.Paths) PropertyChangeSupport(java.beans.PropertyChangeSupport) RemovalListener(com.google.common.cache.RemovalListener) BackgroundService(de.catma.backgroundservice.BackgroundService) InputStream(java.io.InputStream) TeiUserMarkupCollectionDeserializer(de.catma.serialization.tei.TeiUserMarkupCollectionDeserializer) TagManager(de.catma.tag.TagManager) ProgressListener(de.catma.backgroundservice.ProgressListener) IOException(java.io.IOException)

Aggregations

OpenProjectListener (de.catma.project.OpenProjectListener)6 UI (com.vaadin.ui.UI)5 IndexedProject (de.catma.indexer.IndexedProject)5 Project (de.catma.project.Project)4 ConflictedProject (de.catma.project.conflict.ConflictedProject)4 CacheBuilder (com.google.common.cache.CacheBuilder)2 CacheLoader (com.google.common.cache.CacheLoader)2 LoadingCache (com.google.common.cache.LoadingCache)2 RemovalListener (com.google.common.cache.RemovalListener)2 RemovalNotification (com.google.common.cache.RemovalNotification)2 ArrayListMultimap (com.google.common.collect.ArrayListMultimap)2 Multimap (com.google.common.collect.Multimap)2 EventBus (com.google.common.eventbus.EventBus)2 BackgroundService (de.catma.backgroundservice.BackgroundService)2 ExecutionListener (de.catma.backgroundservice.ExecutionListener)2 ProgressListener (de.catma.backgroundservice.ProgressListener)2 AnnotationCollection (de.catma.document.annotation.AnnotationCollection)2 AnnotationCollectionReference (de.catma.document.annotation.AnnotationCollectionReference)2 TagReference (de.catma.document.annotation.TagReference)2 Comment (de.catma.document.comment.Comment)2