Search in sources :

Example 1 with CURATION

use of de.tudarmstadt.ukp.clarin.webanno.model.Mode.CURATION in project webanno by webanno.

the class AnnotationPreferencesDialogContent method loadModel.

private Preferences loadModel(AnnotatorState state) {
    AnnotationPreference prefs = state.getPreferences();
    // Import current settings from the annotator
    Preferences model = new Preferences();
    model.windowSize = Math.max(prefs.getWindowSize(), 1);
    model.sidebarSize = prefs.getSidebarSize();
    model.fontZoom = prefs.getFontZoom();
    model.scrollPage = prefs.isScrollPage();
    model.colorPerLayer = prefs.getColorPerLayer();
    model.readonlyLayerColoringBehaviour = prefs.getReadonlyLayerColoringBehaviour();
    model.rememberLayer = prefs.isRememberLayer();
    model.collapseArcs = prefs.isCollapseArcs();
    AnnotationEditorFactory editorFactory = annotationEditorRegistry.getEditorFactory(state.getPreferences().getEditor());
    if (editorFactory == null) {
        editorFactory = annotationEditorRegistry.getDefaultEditorFactory();
    }
    model.editor = Pair.of(editorFactory.getBeanName(), editorFactory.getDisplayName());
    model.annotationLayers = annotationService.listAnnotationLayer(state.getProject()).stream().filter(layer -> layer.isEnabled()).filter(layer -> !Token.class.getName().equals(layer.getName())).filter(layer -> !(layer.getType().equals(CHAIN_TYPE) && (state.getMode().equals(CORRECTION) || // disable coreference annotation for correction/curation pages
    state.getMode().equals(CURATION)))).collect(Collectors.toList());
    return model;
}
Also used : Form(org.apache.wicket.markup.html.form.Form) SpringBean(org.apache.wicket.spring.injection.annot.SpringBean) ProjectService(de.tudarmstadt.ukp.clarin.webanno.api.ProjectService) AnnotatorState(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState) ColoringStrategyType(de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringStrategyType) LoggerFactory(org.slf4j.LoggerFactory) CheckBox(org.apache.wicket.markup.html.form.CheckBox) CompoundPropertyModel(org.apache.wicket.model.CompoundPropertyModel) ANNOTATION(de.tudarmstadt.ukp.clarin.webanno.model.Mode.ANNOTATION) AnnotationSchemaService(de.tudarmstadt.ukp.clarin.webanno.api.AnnotationSchemaService) Token(de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token) BootstrapSelect(de.agilecoders.wicket.extensions.markup.html.bootstrap.form.select.BootstrapSelect) LambdaBehavior.visibleWhen(de.tudarmstadt.ukp.clarin.webanno.support.lambda.LambdaBehavior.visibleWhen) Pair(org.apache.commons.lang3.tuple.Pair) AnnotationPreference(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotationPreference) Arrays.asList(java.util.Arrays.asList) Map(java.util.Map) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) ChoiceRenderer(org.apache.wicket.markup.html.form.ChoiceRenderer) IModel(org.apache.wicket.model.IModel) ListView(org.apache.wicket.markup.html.list.ListView) Label(org.apache.wicket.markup.html.basic.Label) NumberTextField(org.apache.wicket.markup.html.form.NumberTextField) CURATION(de.tudarmstadt.ukp.clarin.webanno.model.Mode.CURATION) Logger(org.slf4j.Logger) ListItem(org.apache.wicket.markup.html.list.ListItem) LambdaAjaxFormComponentUpdatingBehavior(de.tudarmstadt.ukp.clarin.webanno.support.lambda.LambdaAjaxFormComponentUpdatingBehavior) Model(org.apache.wicket.model.Model) UserDao(de.tudarmstadt.ukp.clarin.webanno.security.UserDao) Set(java.util.Set) ModalWindow(org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow) ReadonlyColoringBehaviour(de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ReadonlyColoringBehaviour) IOException(java.io.IOException) LambdaAjaxButton(de.tudarmstadt.ukp.clarin.webanno.support.lambda.LambdaAjaxButton) Collectors(java.util.stream.Collectors) DropDownChoice(org.apache.wicket.markup.html.form.DropDownChoice) Serializable(java.io.Serializable) CORRECTION(de.tudarmstadt.ukp.clarin.webanno.model.Mode.CORRECTION) Panel(org.apache.wicket.markup.html.panel.Panel) List(java.util.List) AnnotationEditorFactory(de.tudarmstadt.ukp.clarin.webanno.api.annotation.AnnotationEditorFactory) PreferencesUtil(de.tudarmstadt.ukp.clarin.webanno.api.annotation.page.PreferencesUtil) LambdaAjaxLink(de.tudarmstadt.ukp.clarin.webanno.support.lambda.LambdaAjaxLink) AnnotationLayer(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationLayer) CHAIN_TYPE(de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.CHAIN_TYPE) AnnotationEditorRegistry(de.tudarmstadt.ukp.clarin.webanno.api.annotation.AnnotationEditorRegistry) AnnotationEditorFactory(de.tudarmstadt.ukp.clarin.webanno.api.annotation.AnnotationEditorFactory) AnnotationPreference(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotationPreference)

Example 2 with CURATION

use of de.tudarmstadt.ukp.clarin.webanno.model.Mode.CURATION in project webanno by webanno.

the class SuggestionViewPanel method onClientEvent.

/**
 * Method is called, if user has clicked on a span or an arc in the sentence panel. The span or
 * arc respectively is identified and copied to the merge CAS.
 */
protected void onClientEvent(AjaxRequestTarget aTarget, UserAnnotationSegment aSegment) throws UIMAException, IOException, AnnotationException {
    if (isDocumentFinished(documentService, aSegment.getAnnotatorState())) {
        error("This document is already closed. Please ask the project manager to re-open it.");
        aTarget.addChildren(getPage(), IFeedback.class);
        return;
    }
    IRequestParameters request = getRequest().getPostParameters();
    StringValue action = request.getParameterValue(PARAM_ACTION);
    if (!action.isEmpty()) {
        String type = removePrefix(request.getParameterValue(PARAM_TYPE).toString());
        AnnotationLayer layer = schemaService.getLayer(TypeUtil.getLayerId(type));
        VID sourceVid = VID.parse(request.getParameterValue(PARAM_ID).toString());
        CAS targetCas = readEditorCas(aSegment.getAnnotatorState());
        CAS sourceCas = readAnnotatorCas(aSegment);
        AnnotatorState sourceState = aSegment.getAnnotatorState();
        if (CHAIN_TYPE.equals(layer.getType())) {
            error("Coreference annotations are not supported in curation");
            aTarget.addChildren(getPage(), IFeedback.class);
            return;
        }
        if (ACTION_CONTEXT_MENU.equals(action.toString())) {
            // No bulk actions supports for slots at the moment.
            if (sourceVid.isSlotSet()) {
                return;
            }
            List<IMenuItem> items = contextMenu.getItemList();
            items.clear();
            items.add(new LambdaMenuItem(String.format("Merge all %s", layer.getUiName()), _target -> actionAcceptAll(_target, aSegment, layer)));
            contextMenu.onOpen(aTarget);
            return;
        }
        // check if clicked on a span
        CasMerge casMerge = new CasMerge(schemaService);
        if (ACTION_SELECT_SPAN_FOR_MERGE.equals(action.toString())) {
            mergeSpan(casMerge, targetCas, sourceCas, sourceVid, sourceState.getDocument(), sourceState.getUser().getUsername(), layer);
        } else // check if clicked on an arc (relation or slot)
        if (ACTION_SELECT_ARC_FOR_MERGE.equals(action.toString())) {
            // this is a slot arc
            if (sourceVid.isSlotSet()) {
                mergeSlot(casMerge, targetCas, sourceCas, sourceVid, sourceState.getDocument(), sourceState.getUser().getUsername(), layer);
            } else // normal relation annotation arc is clicked
            {
                mergeRelation(casMerge, targetCas, sourceCas, sourceVid, sourceState.getDocument(), sourceState.getUser().getUsername(), layer);
            }
        }
        writeEditorCas(sourceState, targetCas);
        // Update timestamp
        AnnotationFS sourceAnnotation = selectAnnotationByAddr(sourceCas, sourceVid.getId());
        int sentenceNumber = getSentenceNumber(sourceAnnotation.getCAS(), sourceAnnotation.getBegin());
        sourceState.getDocument().setSentenceAccessed(sentenceNumber);
        if (sourceState.getPreferences().isScrollPage()) {
            sourceState.getPagingStrategy().moveToOffset(sourceState, targetCas, sourceAnnotation.getBegin(), CENTERED);
        }
        onChange(aTarget);
    }
}
Also used : TypeAdapter(de.tudarmstadt.ukp.clarin.webanno.api.annotation.adapter.TypeAdapter) SpringBean(org.apache.wicket.spring.injection.annot.SpringBean) Configuration(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.Configuration) ConfigurationSet(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.ConfigurationSet) LoggerFactory(org.slf4j.LoggerFactory) IMenuItem(com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem) WebAnnoCasUtil(de.tudarmstadt.ukp.clarin.webanno.api.annotation.util.WebAnnoCasUtil) Sentence(de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Sentence) AnnotationException(de.tudarmstadt.ukp.clarin.webanno.api.annotation.exception.AnnotationException) CasMergeOperationResult(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.CasMergeOperationResult) CorrectionDocumentService(de.tudarmstadt.ukp.clarin.webanno.api.CorrectionDocumentService) VObject(de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.model.VObject) Map(java.util.Map) AlreadyMergedException(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.AlreadyMergedException) ColoringRules(de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringRules) AnnotatorStateUtils.updateDocumentTimestampAfterWrite(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorStateUtils.updateDocumentTimestampAfterWrite) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) ColoringService(de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringService) CurationContainer(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.CurationContainer) LambdaMenuItem(de.tudarmstadt.ukp.clarin.webanno.support.lambda.LambdaMenuItem) WebAnnoCasUtil.selectAnnotationByAddr(de.tudarmstadt.ukp.clarin.webanno.api.annotation.util.WebAnnoCasUtil.selectAnnotationByAddr) FeatureStructure(org.apache.uima.cas.FeatureStructure) CasMerge(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.CasMerge) IModel(org.apache.wicket.model.IModel) StringValue(org.apache.wicket.util.string.StringValue) ListView(org.apache.wicket.markup.html.list.ListView) WebAnnoCasUtil.getSentenceNumber(de.tudarmstadt.ukp.clarin.webanno.api.annotation.util.WebAnnoCasUtil.getSentenceNumber) UIMAException(org.apache.uima.UIMAException) GetCollectionInformationResponse(de.tudarmstadt.ukp.clarin.webanno.brat.message.GetCollectionInformationResponse) DiffResult(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.DiffResult) AnnotationSelection(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationSelection) ListItem(org.apache.wicket.markup.html.list.ListItem) Collection(java.util.Collection) CENTERED(de.tudarmstadt.ukp.clarin.webanno.api.annotation.paging.FocusPosition.CENTERED) Model(org.apache.wicket.model.Model) UserDao(de.tudarmstadt.ukp.clarin.webanno.security.UserDao) Set(java.util.Set) MarkupContainer(org.apache.wicket.MarkupContainer) UserAnnotationSegment(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.UserAnnotationSegment) AnnotationDocument(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationDocument) AnnotationDocumentState(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationDocumentState) IFeedback(org.apache.wicket.feedback.IFeedback) ContextMenu(de.tudarmstadt.ukp.clarin.webanno.support.wicket.ContextMenu) LINK_ROLE_AS_LABEL(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.LinkCompareBehavior.LINK_ROLE_AS_LABEL) List(java.util.List) TypeUtil(de.tudarmstadt.ukp.clarin.webanno.api.annotation.util.TypeUtil) AnnotationLayer(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationLayer) SourceDocument(de.tudarmstadt.ukp.clarin.webanno.model.SourceDocument) CasDiff.getDiffAdapters(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.getDiffAdapters) ApplicationEventPublisherHolder(de.tudarmstadt.ukp.clarin.webanno.support.spring.ApplicationEventPublisherHolder) BratRenderer(de.tudarmstadt.ukp.clarin.webanno.brat.render.BratRenderer) VDocument(de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.model.VDocument) USE(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState.USE) AnnotationFS(org.apache.uima.cas.text.AnnotationFS) AnnotatorState(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState) AGREE(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState.AGREE) CAS(org.apache.uima.cas.CAS) HashMap(java.util.HashMap) ColoringStrategy(de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringStrategy) Mode(de.tudarmstadt.ukp.clarin.webanno.model.Mode) MergeConflictException(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.MergeConflictException) ArrayList(java.util.ArrayList) AnnotationSchemaService(de.tudarmstadt.ukp.clarin.webanno.api.AnnotationSchemaService) SourceListView(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.SourceListView) Token(de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token) AnnotationState(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState) User(de.tudarmstadt.ukp.clarin.webanno.security.model.User) GetDocumentResponse(de.tudarmstadt.ukp.clarin.webanno.brat.message.GetDocumentResponse) DISAGREE(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState.DISAGREE) Project(de.tudarmstadt.ukp.clarin.webanno.model.Project) IRequestParameters(org.apache.wicket.request.IRequestParameters) BratSuggestionVisualizer(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.BratSuggestionVisualizer) LinkedHashSet(java.util.LinkedHashSet) PreRenderer(de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.PreRenderer) DO_NOT_USE(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState.DO_NOT_USE) DocumentService(de.tudarmstadt.ukp.clarin.webanno.api.DocumentService) CURATION(de.tudarmstadt.ukp.clarin.webanno.model.Mode.CURATION) Logger(org.slf4j.Logger) CasUtil.select(org.apache.uima.fit.util.CasUtil.select) CurationDocumentService(de.tudarmstadt.ukp.clarin.webanno.curation.storage.CurationDocumentService) IOException(java.io.IOException) RELATION_TYPE(de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.RELATION_TYPE) SPAN_TYPE(de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.SPAN_TYPE) AjaxComponentRespondListener(de.tudarmstadt.ukp.clarin.webanno.support.wicket.AjaxComponentRespondListener) BratAnnotatorUtility.isDocumentFinished(de.tudarmstadt.ukp.clarin.webanno.brat.util.BratAnnotatorUtility.isDocumentFinished) JSONUtil(de.tudarmstadt.ukp.clarin.webanno.support.JSONUtil) CasDiff.doDiffSingle(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.doDiffSingle) StringUtils.isBlank(org.apache.commons.lang3.StringUtils.isBlank) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer) BulkAnnotationEvent(de.tudarmstadt.ukp.clarin.webanno.api.annotation.event.BulkAnnotationEvent) AnnotationFeature(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationFeature) DiffAdapter(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.api.DiffAdapter) CHAIN_TYPE(de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.CHAIN_TYPE) VID(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.VID) Collections(java.util.Collections) IMenuItem(com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem) AnnotatorState(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState) AnnotationLayer(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationLayer) VID(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.VID) AnnotationFS(org.apache.uima.cas.text.AnnotationFS) CAS(org.apache.uima.cas.CAS) CasMerge(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.CasMerge) StringValue(org.apache.wicket.util.string.StringValue) LambdaMenuItem(de.tudarmstadt.ukp.clarin.webanno.support.lambda.LambdaMenuItem) IRequestParameters(org.apache.wicket.request.IRequestParameters)

Aggregations

AnnotationSchemaService (de.tudarmstadt.ukp.clarin.webanno.api.AnnotationSchemaService)2 CHAIN_TYPE (de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.CHAIN_TYPE)2 AnnotatorState (de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState)2 AnnotationLayer (de.tudarmstadt.ukp.clarin.webanno.model.AnnotationLayer)2 CURATION (de.tudarmstadt.ukp.clarin.webanno.model.Mode.CURATION)2 UserDao (de.tudarmstadt.ukp.clarin.webanno.security.UserDao)2 Token (de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token)2 IOException (java.io.IOException)2 List (java.util.List)2 Map (java.util.Map)2 Set (java.util.Set)2 AjaxRequestTarget (org.apache.wicket.ajax.AjaxRequestTarget)2 ListItem (org.apache.wicket.markup.html.list.ListItem)2 ListView (org.apache.wicket.markup.html.list.ListView)2 IModel (org.apache.wicket.model.IModel)2 Model (org.apache.wicket.model.Model)2 SpringBean (org.apache.wicket.spring.injection.annot.SpringBean)2 Logger (org.slf4j.Logger)2 LoggerFactory (org.slf4j.LoggerFactory)2 IMenuItem (com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem)1