Search in sources :

Example 16 with Project

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

the class TaggerView method initComponents.

private void initComponents() {
    setSizeFull();
    VerticalLayout taggerPanel = new VerticalLayout();
    taggerPanel.setSizeFull();
    taggerPanel.setSpacing(true);
    taggerPanel.setMargin(new MarginInfo(true, true, true, false));
    boolean isRtl = sourceDocument == null ? false : sourceDocument.getSourceContentHandler().getSourceDocumentInfo().getIndexInfoSet().isRightToLeftWriting();
    pager = new Pager(taggerID, approxMaxLineLength, maxPageLengthInLines, isRtl);
    tagger = new Tagger(taggerID, pager, this, project);
    // $NON-NLS-1$
    tagger.addStyleName("tagger");
    // $NON-NLS-1$
    tagger.setWidth("100%");
    taggerPanel.addComponent(tagger);
    taggerPanel.setExpandRatio(tagger, 1.0f);
    HorizontalLayout actionPanel = new HorizontalLayout();
    actionPanel.setSpacing(false);
    taggerPanel.addComponent(actionPanel);
    pagerComponent = new PagerComponent(pager, new PageChangeListener() {

        public void pageChanged(int number) {
            tagger.setPage(number);
        }
    });
    actionPanel.addComponent(pagerComponent);
    linesPerPageSlider = new Slider(1, 100, 0);
    // $NON-NLS-1$
    linesPerPageSlider.setWidth("100px");
    actionPanel.addComponent(linesPerPageSlider);
    cbTraceSelection = new IconButton(VaadinIcons.TWIN_COL_SELECT);
    // state
    cbTraceSelection.setData(false);
    cbTraceSelection.setDescription("Allow multiple discontinuous selections");
    actionPanel.addComponent(cbTraceSelection);
    btClearSearchHighlights = new IconButton(VaadinIcons.ERASER);
    btClearSearchHighlights.setDescription("Clear all search highlights");
    actionPanel.addComponent(btClearSearchHighlights);
    cbAutoShowComments = new IconButton(VaadinIcons.COMMENT);
    cbAutoShowComments.setDescription("Toggle live Comments");
    // state
    cbAutoShowComments.setData(true);
    actionPanel.addComponent(cbAutoShowComments);
    btAnalyze = new Button("Analyze");
    // $NON-NLS-1$
    btAnalyze.addStyleName("primary-button");
    btAnalyze.setEnabled(project instanceof IndexedProject);
    actionPanel.addComponent(btAnalyze);
    rightSplitPanel = new VerticalSplitPanel();
    rightSplitPanel.setSizeFull();
    kwicPanel = new KwicPanel(eventBus, project, KwicProvider.buildKwicProviderByDocumentIdCache(project));
    kwicPanel.setExpandResource(VaadinIcons.CLOSE);
    kwicPanel.setCompressResource(VaadinIcons.CLOSE);
    rightSplitPanel.addComponent(kwicPanel);
    hideKwicPanel();
    annotationPanel = new AnnotationPanel(project, userMarkupCollectionManager, selectedAnnotationId -> tagger.setTagInstanceSelected(selectedAnnotationId), collection -> handleCollectionValueChange(collection), tag -> tagger.addTagInstanceWith(tag), () -> sourceDocument, eventBus);
    rightSplitPanel.addComponent(annotationPanel);
    splitPanel = new TaggerSplitPanel();
    splitPanel.addComponent(taggerPanel);
    splitPanel.addComponent(rightSplitPanel);
    splitPanel.setSplitPosition(initialSplitterPositionInPixels, Unit.PIXELS);
    // $NON-NLS-1$
    splitPanel.addStyleName("catma-tab-spacing");
    SplitterPositionChangedListener listener = new SplitterPositionChangedListener() {

        @Override
        public void positionChanged(SplitterPositionChangedEvent event) {
            float width = event.getPosition();
            // TODO: if it is PERCENTAGE, work out the splitter position in pixels
            if (event.getPositionUnit() != Unit.PIXELS) {
                // $NON-NLS-1$
                String message = "Must use PIXELS Unit for split position";
                errorHandler.showAndLogError(message, new IllegalArgumentException(message));
            }
            int approxMaxLineLength = getApproximateMaxLineLengthForSplitterPanel(width);
            List<ClientTagInstance> absoluteTagInstances = pager.getAbsoluteTagInstances();
            Page currentPage = null;
            if (pager.hasPages()) {
                currentPage = pager.getCurrentPage();
            }
            pager.setApproxMaxLineLength(approxMaxLineLength);
            if (pager.hasPages()) {
                // recalculate pages
                try {
                    pager.setText(sourceDocument.getContent(), comments);
                    int previousPageNumber = pager.getPageNumberFor(currentPage.getPageStart());
                    tagger.setPage(previousPageNumber);
                    tagger.setTagInstancesVisible(absoluteTagInstances, true);
                    pagerComponent.setPage(previousPageNumber);
                } catch (IOException e) {
                    // $NON-NLS-1$
                    errorHandler.showAndLogError("Error showing the Document!", e);
                }
            }
        }
    };
    splitPanel.addListener(SplitterPositionChangedEvent.class, listener, SplitterPositionChangedListener.positionChangedMethod);
    resourcePanel = new AnnotateResourcePanel(project, sourceDocument, eventBus);
    drawer = new SliderPanelBuilder(resourcePanel).mode(SliderMode.LEFT).expanded(sourceDocument == null).build();
    addComponent(drawer);
    addComponent(splitPanel);
    setExpandRatio(splitPanel, 1.0f);
}
Also used : BackgroundServiceProvider(de.catma.backgroundservice.BackgroundServiceProvider) ZonedDateTime(java.time.ZonedDateTime) VerticalSplitPanel(com.vaadin.ui.VerticalSplitPanel) EditAnnotationPropertiesDialog(de.catma.ui.module.annotate.annotationpanel.EditAnnotationPropertiesDialog) IndexedProject(de.catma.indexer.IndexedProject) ClientCommentReply(de.catma.ui.client.ui.tagger.shared.ClientCommentReply) KwicProvider(de.catma.indexer.KwicProvider) ValueOutOfBoundsException(com.vaadin.ui.Slider.ValueOutOfBoundsException) ExpansionListener(de.catma.ui.module.analyze.visualization.ExpansionListener) ExecutionListener(de.catma.backgroundservice.ExecutionListener) Slider(com.vaadin.ui.Slider) Set(java.util.Set) TagInstance(de.catma.tag.TagInstance) ClosableTab(de.catma.ui.component.tabbedview.ClosableTab) Pager(de.catma.ui.module.annotate.pager.Pager) Type(com.vaadin.ui.Notification.Type) PropertyChangeListener(java.beans.PropertyChangeListener) SliderMode(org.vaadin.sliderpanel.client.SliderMode) DefaultProgressCallable(de.catma.backgroundservice.DefaultProgressCallable) Range(de.catma.document.Range) TagManager(de.catma.tag.TagManager) VerticalLayout(com.vaadin.ui.VerticalLayout) SplitterPositionChangedListener(de.catma.ui.module.annotate.TaggerSplitPanel.SplitterPositionChangedListener) CommentMessage(de.catma.ui.events.CommentMessage) ArrayList(java.util.ArrayList) Pair(de.catma.util.Pair) SaveCancelListener(de.catma.ui.dialog.SaveCancelListener) ResourceSelectionListener(de.catma.ui.module.annotate.resourcepanel.ResourceSelectionListener) Property(de.catma.tag.Property) QueryResultRow(de.catma.queryengine.result.QueryResultRow) IOException(java.io.IOException) SourceDocument(de.catma.document.source.SourceDocument) AnnotationCollection(de.catma.document.annotation.AnnotationCollection) ValueChangeListener(com.vaadin.data.HasValue.ValueChangeListener) Annotation(de.catma.document.annotation.Annotation) TagManagerEvent(de.catma.tag.TagManager.TagManagerEvent) ClientTagInstance(de.catma.ui.client.ui.tagger.shared.ClientTagInstance) Button(com.vaadin.ui.Button) ChangeType(de.catma.project.event.ChangeType) TextRange(de.catma.ui.client.ui.tagger.shared.TextRange) HorizontalLayout(com.vaadin.ui.HorizontalLayout) AnnotateResourcePanel(de.catma.ui.module.annotate.resourcepanel.AnnotateResourcePanel) SplitterPositionChangedEvent(de.catma.ui.module.annotate.TaggerSplitPanel.SplitterPositionChangedEvent) Reply(de.catma.document.comment.Reply) ClientComment(de.catma.ui.client.ui.tagger.shared.ClientComment) URISyntaxException(java.net.URISyntaxException) UI(com.vaadin.ui.UI) ConfirmDialog(org.vaadin.dialogs.ConfirmDialog) RouteToAnalyzeEvent(de.catma.ui.events.routing.RouteToAnalyzeEvent) TaggerContextMenu(de.catma.ui.module.annotate.contextmenu.TaggerContextMenu) ErrorHandler(de.catma.ui.module.main.ErrorHandler) CatmaApplication(de.catma.ui.CatmaApplication) SliderPanel(org.vaadin.sliderpanel.SliderPanel) VaadinIcons(com.vaadin.icons.VaadinIcons) Version(de.catma.tag.Version) IconButton(de.catma.ui.component.IconButton) Collection(java.util.Collection) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) MarginInfo(com.vaadin.shared.ui.MarginInfo) TagReference(de.catma.document.annotation.TagReference) List(java.util.List) TaggerListener(de.catma.ui.module.annotate.Tagger.TaggerListener) Corpus(de.catma.document.corpus.Corpus) TagDefinition(de.catma.tag.TagDefinition) Optional(java.util.Optional) HazelCastService(de.catma.hazelcast.HazelCastService) SliderPanelBuilder(org.vaadin.sliderpanel.SliderPanelBuilder) ValueChangeEvent(com.vaadin.data.HasValue.ValueChangeEvent) KwicPanel(de.catma.ui.module.analyze.visualization.kwic.KwicPanel) ClickListener(com.vaadin.ui.Button.ClickListener) PagerComponent(de.catma.ui.module.annotate.pager.PagerComponent) AnnotationPanel(de.catma.ui.module.annotate.annotationpanel.AnnotationPanel) AnnotationCollectionManager(de.catma.document.annotation.AnnotationCollectionManager) PageChangeListener(de.catma.ui.module.annotate.pager.PagerComponent.PageChangeListener) UIMessageListener(de.catma.ui.UIMessageListener) User(de.catma.user.User) 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) Notification(com.vaadin.ui.Notification) Page(de.catma.ui.module.annotate.pager.Page) HazelcastConfiguration(de.catma.hazelcast.HazelcastConfiguration) TagsetDefinition(de.catma.tag.TagsetDefinition) IDGenerator(de.catma.util.IDGenerator) Subscribe(com.google.common.eventbus.Subscribe) TagLibrary(de.catma.tag.TagLibrary) PropertyChangeEvent(java.beans.PropertyChangeEvent) ClickEvent(com.vaadin.ui.Button.ClickEvent) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) Project(de.catma.project.Project) RepositoryChangeEvent(de.catma.project.Project.RepositoryChangeEvent) ReplyChangeEvent(de.catma.project.event.ReplyChangeEvent) TabCaptionChangeListener(de.catma.ui.component.tabbedview.TabCaptionChangeListener) DateTimeFormatter(java.time.format.DateTimeFormatter) ITopic(com.hazelcast.core.ITopic) PagerComponent(de.catma.ui.module.annotate.pager.PagerComponent) Slider(com.vaadin.ui.Slider) ClientTagInstance(de.catma.ui.client.ui.tagger.shared.ClientTagInstance) VerticalSplitPanel(com.vaadin.ui.VerticalSplitPanel) Page(de.catma.ui.module.annotate.pager.Page) HorizontalLayout(com.vaadin.ui.HorizontalLayout) IconButton(de.catma.ui.component.IconButton) SplitterPositionChangedListener(de.catma.ui.module.annotate.TaggerSplitPanel.SplitterPositionChangedListener) Button(com.vaadin.ui.Button) IconButton(de.catma.ui.component.IconButton) KwicPanel(de.catma.ui.module.analyze.visualization.kwic.KwicPanel) MarginInfo(com.vaadin.shared.ui.MarginInfo) SliderPanelBuilder(org.vaadin.sliderpanel.SliderPanelBuilder) VerticalLayout(com.vaadin.ui.VerticalLayout) IndexedProject(de.catma.indexer.IndexedProject) PageChangeListener(de.catma.ui.module.annotate.pager.PagerComponent.PageChangeListener) AnnotateResourcePanel(de.catma.ui.module.annotate.resourcepanel.AnnotateResourcePanel) IOException(java.io.IOException) SplitterPositionChangedEvent(de.catma.ui.module.annotate.TaggerSplitPanel.SplitterPositionChangedEvent) AnnotationPanel(de.catma.ui.module.annotate.annotationpanel.AnnotationPanel) Pager(de.catma.ui.module.annotate.pager.Pager)

Example 17 with Project

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

the class PropertyQuery method execute.

@Override
protected QueryResult execute() throws Exception {
    QueryOptions queryOptions = getQueryOptions();
    Project repository = queryOptions.getRepository();
    Indexer indexer = queryOptions.getIndexer();
    List<String> relevantUserMarkupCollIDs = queryOptions.getRelevantUserMarkupCollIDs();
    if (relevantUserMarkupCollIDs.isEmpty() && !queryOptions.getRelevantSourceDocumentIDs().isEmpty()) {
        relevantUserMarkupCollIDs = new ArrayList<String>();
        for (String sourceDocumentId : queryOptions.getRelevantSourceDocumentIDs()) {
            for (AnnotationCollectionReference umcRef : repository.getSourceDocument(sourceDocumentId).getUserMarkupCollectionRefs()) {
                relevantUserMarkupCollIDs.add(umcRef.getId());
            }
        }
        if (relevantUserMarkupCollIDs.isEmpty()) {
            return new QueryResultRowArray();
        }
    }
    QueryResult result = indexer.searchProperty(queryOptions.getQueryId(), relevantUserMarkupCollIDs, propertyName, propertyValue, tagPhrase);
    for (QueryResultRow row : result) {
        SourceDocument sd = repository.getSourceDocument(row.getSourceDocumentId());
        TagQueryResultRow tRow = (TagQueryResultRow) row;
        if (tRow.getRanges().size() > 1) {
            StringBuilder builder = new StringBuilder();
            String conc = "";
            for (Range range : tRow.getRanges()) {
                builder.append(conc);
                builder.append(sd.getContent(range));
                conc = "[...]";
            }
            row.setPhrase(builder.toString());
        } else {
            row.setPhrase(sd.getContent(row.getRange()));
        }
    }
    return result;
}
Also used : QueryResultRow(de.catma.queryengine.result.QueryResultRow) TagQueryResultRow(de.catma.queryengine.result.TagQueryResultRow) SourceDocument(de.catma.document.source.SourceDocument) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) Range(de.catma.document.Range) Project(de.catma.project.Project) QueryResult(de.catma.queryengine.result.QueryResult) Indexer(de.catma.indexer.Indexer) TagQueryResultRow(de.catma.queryengine.result.TagQueryResultRow) QueryResultRowArray(de.catma.queryengine.result.QueryResultRowArray)

Example 18 with Project

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

the class RegQuery method execute.

@Override
protected QueryResult execute() throws Exception {
    QueryResultRowArray result = new QueryResultRowArray();
    QueryOptions queryOptions = getQueryOptions();
    Project repository = queryOptions.getRepository();
    List<String> relevantSourceDocIDs = queryOptions.getRelevantSourceDocumentIDs();
    Collection<SourceDocument> relevantSourceDocuments = null;
    if ((relevantSourceDocIDs != null) && !relevantSourceDocIDs.isEmpty()) {
        relevantSourceDocuments = new ArrayList<SourceDocument>();
        for (String sourceDocumentID : relevantSourceDocIDs) {
            relevantSourceDocuments.add(repository.getSourceDocument(sourceDocumentID));
        }
    } else {
        relevantSourceDocuments = repository.getSourceDocuments();
    }
    for (SourceDocument sourceDoc : relevantSourceDocuments) {
        boolean sourceDocWasLoaded = sourceDoc.isLoaded();
        int flags = Pattern.DOTALL;
        if (caseInsensitive) {
            flags |= Pattern.CASE_INSENSITIVE;
        }
        Pattern pattern = Pattern.compile(phrase.getPhrase(), flags);
        Matcher matcher = pattern.matcher(sourceDoc.getContent());
        while (matcher.find()) {
            result.add(new QueryResultRow(queryOptions.getQueryId(), sourceDoc.getUuid(), new Range(matcher.start(), matcher.end()), matcher.group()));
        }
        if (!sourceDocWasLoaded) {
            sourceDoc.unload();
        }
    }
    return result;
}
Also used : Pattern(java.util.regex.Pattern) Matcher(java.util.regex.Matcher) QueryResultRow(de.catma.queryengine.result.QueryResultRow) SourceDocument(de.catma.document.source.SourceDocument) Range(de.catma.document.Range) Project(de.catma.project.Project) QueryResultRowArray(de.catma.queryengine.result.QueryResultRowArray)

Example 19 with Project

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

the class TagQuery method execute.

@Override
protected QueryResult execute() throws Exception {
    QueryOptions queryOptions = getQueryOptions();
    Project repository = queryOptions.getRepository();
    Indexer indexer = queryOptions.getIndexer();
    List<String> relevantUserMarkupCollIDs = queryOptions.getRelevantUserMarkupCollIDs();
    if (relevantUserMarkupCollIDs.isEmpty()) {
        return new QueryResultRowArray();
    }
    QueryResult result = indexer.searchTagDefinitionPath(queryOptions.getQueryId(), relevantUserMarkupCollIDs, tagPhrase);
    for (QueryResultRow row : result) {
        SourceDocument sd = repository.getSourceDocument(row.getSourceDocumentId());
        TagQueryResultRow tRow = (TagQueryResultRow) row;
        if (tRow.getRanges().size() > 1) {
            StringBuilder builder = new StringBuilder();
            String conc = "";
            for (Range range : tRow.getRanges()) {
                builder.append(conc);
                builder.append(sd.getContent(range));
                conc = "[...]";
            }
            row.setPhrase(builder.toString());
        } else {
            row.setPhrase(sd.getContent(row.getRange()));
        }
    }
    return result;
}
Also used : Project(de.catma.project.Project) QueryResult(de.catma.queryengine.result.QueryResult) Indexer(de.catma.indexer.Indexer) QueryResultRow(de.catma.queryengine.result.QueryResultRow) TagQueryResultRow(de.catma.queryengine.result.TagQueryResultRow) TagQueryResultRow(de.catma.queryengine.result.TagQueryResultRow) SourceDocument(de.catma.document.source.SourceDocument) QueryResultRowArray(de.catma.queryengine.result.QueryResultRowArray) Range(de.catma.document.Range)

Example 20 with Project

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

the class CommentQuery method execute.

@Override
protected QueryResult execute() throws Exception {
    QueryOptions queryOptions = getQueryOptions();
    WildcardTermExtractor termExtractor = new WildcardTermExtractor(commentPhrase, queryOptions.getUnseparableCharacterSequences(), queryOptions.getUserDefinedSeparatingCharacters(), queryOptions.getLocale());
    List<String> termList = termExtractor.getOrderedTerms();
    Indexer indexer = queryOptions.getIndexer();
    QueryResult result = indexer.searchCommentPhrase(queryOptions.getQueryId(), queryOptions.getRelevantSourceDocumentIDs(), termList, queryOptions.getLimit(), queryOptions.getUnseparableCharacterSequences(), queryOptions.getUserDefinedSeparatingCharacters(), queryOptions.getLocale());
    Project repository = queryOptions.getRepository();
    for (QueryResultRow row : result) {
        SourceDocument sd = repository.getSourceDocument(row.getSourceDocumentId());
        row.setPhrase(sd.getContent(row.getRange()));
    }
    return result;
}
Also used : Project(de.catma.project.Project) QueryResult(de.catma.queryengine.result.QueryResult) Indexer(de.catma.indexer.Indexer) QueryResultRow(de.catma.queryengine.result.QueryResultRow) WildcardTermExtractor(de.catma.indexer.WildcardTermExtractor) SourceDocument(de.catma.document.source.SourceDocument)

Aggregations

Project (de.catma.project.Project)36 UI (com.vaadin.ui.UI)26 SourceDocument (de.catma.document.source.SourceDocument)23 IDGenerator (de.catma.util.IDGenerator)22 Collectors (java.util.stream.Collectors)22 TagDefinition (de.catma.tag.TagDefinition)21 ErrorHandler (de.catma.ui.module.main.ErrorHandler)21 List (java.util.List)21 Notification (com.vaadin.ui.Notification)20 Type (com.vaadin.ui.Notification.Type)20 ArrayList (java.util.ArrayList)20 Set (java.util.Set)20 Collection (java.util.Collection)19 HtmlRenderer (com.vaadin.ui.renderers.HtmlRenderer)18 AnnotationCollectionReference (de.catma.document.annotation.AnnotationCollectionReference)18 EventBus (com.google.common.eventbus.EventBus)17 ContextMenu (com.vaadin.contextmenu.ContextMenu)17 Label (com.vaadin.ui.Label)17 RBACPermission (de.catma.rbac.RBACPermission)17 ActionGridComponent (de.catma.ui.component.actiongrid.ActionGridComponent)17