@Override public void reset() { getSelection().clear(); clearArmedSlot(); clearRememberedFeatures(); focusUnitIndex = 0; firstVisibleUnitAddress = -1; firstVisibleUnitBegin = 0; firstVisibleUnitEnd = 0; firstVisibleUnitIndex = 0; lastVisibleUnitIndex = 0; unitCount = 0; windowBeginOffset = 0; windowEndOffset = 0; annotationDocumentTimestamp = null; }
@Override public void toggleScriptDirection() { if (ScriptDirection.LTR.equals(getScriptDirection())) { setScriptDirection(ScriptDirection.RTL); } else { setScriptDirection(ScriptDirection.LTR); } }
@Override public void rememberFeatures() { if (getSelection().isArc()) { this.rememberedArcLayer = getSelectedAnnotationLayer(); setRememberedArcFeatures(featureModels); } else { this.rememberedSpanLayer = getSelectedAnnotationLayer(); setRememberedSpanFeatures(featureModels); } }
@Test public void simpleCopyToEmptyTest() throws Exception { AnnotatorState state = new AnnotatorStateImpl(CURATION); state.setUser(new User()); JCas jcas = createJCas(); AnnotationFS clickedFs = createNEAnno(jcas, "NN", 0, 0); JCas mergeCas = createJCas(); createTokenAnno(mergeCas, 0, 0); MergeCas.addSpanAnnotation(state, annotationSchemaService, neLayer, mergeCas, clickedFs, false); assertEquals(1, selectCovered(mergeCas, NamedEntity.class, 0, 0).size()); }
@Override public void setFirstVisibleUnit(Sentence aFirstVisibleUnit) { JCas jcas; try { jcas = aFirstVisibleUnit.getCAS().getJCas(); } catch (CASException e) { throw new IllegalStateException("Unable to fetch JCas from CAS", e); } firstVisibleUnitAddress = WebAnnoCasUtil.getAddr(aFirstVisibleUnit); firstVisibleUnitBegin = aFirstVisibleUnit.getBegin(); firstVisibleUnitEnd = aFirstVisibleUnit.getEnd(); Sentence lastVisibleUnit = getLastSentenceInDisplayWindow(jcas, getAddr(aFirstVisibleUnit), getPreferences().getWindowSize()); firstVisibleUnitIndex = WebAnnoCasUtil.getSentenceNumber(jcas, aFirstVisibleUnit.getBegin()); lastVisibleUnitIndex = WebAnnoCasUtil.getSentenceNumber(jcas, lastVisibleUnit.getBegin()); unitCount = select(jcas, Sentence.class).size(); windowBeginOffset = aFirstVisibleUnit.getBegin(); windowEndOffset = lastVisibleUnit.getEnd(); }
@Test public void simpleCopyToDiffExistingAnnoWithNoStackingTest() throws Exception { JCas jcas = createJCas(); Type type = jcas.getTypeSystem().getType(POS.class.getTypeName()); AnnotationFS clickedFs = createPOSAnno(jcas, "NN", 0, 0); JCas mergeCAs = createJCas(); AnnotationFS existingFs = mergeCAs.getCas().createAnnotation(type, 0, 0); Feature posValue = type.getFeatureByBaseName("PosValue"); existingFs.setStringValue(posValue, "NE"); mergeCAs.addFsToIndexes(existingFs); MergeCas.addSpanAnnotation(new AnnotatorStateImpl(CURATION), annotationSchemaService, posLayer, mergeCAs, clickedFs, false); assertEquals(1, CasUtil.selectCovered(mergeCAs.getCas(), type, 0, 0).size()); }
@Override public void setFirstVisibleUnit(Sentence aFirstVisibleUnit) { JCas jcas; try { jcas = aFirstVisibleUnit.getCAS().getJCas(); } catch (CASException e) { throw new IllegalStateException("Unable to fetch JCas from CAS", e); } firstVisibleUnitAddress = WebAnnoCasUtil.getAddr(aFirstVisibleUnit); firstVisibleUnitBegin = aFirstVisibleUnit.getBegin(); firstVisibleUnitEnd = aFirstVisibleUnit.getEnd(); Sentence lastVisibleUnit = getLastSentenceInDisplayWindow(jcas, getAddr(aFirstVisibleUnit), getPreferences().getWindowSize()); firstVisibleUnitIndex = WebAnnoCasUtil.getSentenceNumber(jcas, aFirstVisibleUnit.getBegin()); lastVisibleUnitIndex = WebAnnoCasUtil.getSentenceNumber(jcas, lastVisibleUnit.getBegin()); unitCount = select(jcas, Sentence.class).size(); windowBeginOffset = aFirstVisibleUnit.getBegin(); windowEndOffset = lastVisibleUnit.getEnd(); }
JCas jCas = cas.getJCas(); AnnotatorState state = new AnnotatorStateImpl(Mode.ANNOTATION); state.getPreferences().setWindowSize(10); state.setFirstVisibleUnit(WebAnnoCasUtil.getFirstSentence(jCas));
@Override public void rememberFeatures() { if (getSelection().isArc()) { this.rememberedArcLayer = getSelectedAnnotationLayer(); setRememberedArcFeatures(featureModels); } else { this.rememberedSpanLayer = getSelectedAnnotationLayer(); setRememberedSpanFeatures(featureModels); } }
@Override public void reset() { getSelection().clear(); clearArmedSlot(); clearRememberedFeatures(); focusUnitIndex = 0; firstVisibleUnitAddress = -1; firstVisibleUnitBegin = 0; firstVisibleUnitEnd = 0; firstVisibleUnitIndex = 0; lastVisibleUnitIndex = 0; unitCount = 0; windowBeginOffset = 0; windowEndOffset = 0; annotationDocumentTimestamp = null; }
@Override public void toggleScriptDirection() { if (ScriptDirection.LTR.equals(getScriptDirection())) { setScriptDirection(ScriptDirection.RTL); } else { setScriptDirection(ScriptDirection.LTR); } }
@Test public void simpleCopyToSameExistingAnnoTest() throws Exception { JCas jcas = createJCas(); Type type = jcas.getTypeSystem().getType(POS.class.getTypeName()); AnnotationFS clickedFs = createPOSAnno(jcas, "NN", 0, 0); JCas mergeCas = createJCas(); AnnotationFS existingFs = mergeCas.getCas().createAnnotation(type, 0, 0); Feature posValue = type.getFeatureByBaseName("PosValue"); existingFs.setStringValue(posValue, "NN"); mergeCas.addFsToIndexes(existingFs); Assertions.assertThatExceptionOfType(AnnotationException.class) .isThrownBy(() -> MergeCas.addSpanAnnotation(new AnnotatorStateImpl(Mode.CURATION), annotationSchemaService, posLayer, mergeCas, clickedFs, false)) .withMessageContaining("annotation already exists"); }
@Test public void simpleCopyToDiffExistingAnnoWithStackingTest() throws Exception { AnnotatorState state = new AnnotatorStateImpl(CURATION); state.setUser(new User()); neLayer.setAllowStacking(true); JCas jcas = createJCas(); Type type = jcas.getTypeSystem().getType(NamedEntity.class.getTypeName()); AnnotationFS clickedFs = createNEAnno(jcas, "NN", 0, 0); JCas mergeCAs = createJCas(); createTokenAnno(mergeCAs, 0, 0); AnnotationFS existingFs = mergeCAs.getCas().createAnnotation(type, 0, 0); Feature posValue = type.getFeatureByBaseName("value"); existingFs.setStringValue(posValue, "NE"); mergeCAs.addFsToIndexes(existingFs); MergeCas.addSpanAnnotation(state, annotationSchemaService, neLayer, mergeCAs, clickedFs, true); assertEquals(2, selectCovered(mergeCAs.getCas(), type, 0, 0).size()); }
@Test public void copySpanWithSlotNoStackingTest() throws Exception { slotLayer.setAllowStacking(false); JCas jcasA = createJCas(DiffUtils.createMultiLinkWithRoleTestTypeSytem("f1")); Type type = jcasA.getTypeSystem().getType(DiffUtils.HOST_TYPE); Feature feature = type.getFeatureByBaseName("f1"); AnnotationFS clickedFs = DiffUtils.makeLinkHostMultiSPanFeatureFS(jcasA, 0, 0, feature, "A", DiffUtils.makeLinkFS(jcasA, "slot1", 0, 0)); JCas mergeCAs = JCasFactory .createJCas(DiffUtils.createMultiLinkWithRoleTestTypeSytem("f1")); DiffUtils.makeLinkHostMultiSPanFeatureFS(mergeCAs, 0, 0, feature, "C", DiffUtils.makeLinkFS(mergeCAs, "slot1", 0, 0)); MergeCas.addSpanAnnotation(new AnnotatorStateImpl(CURATION), annotationSchemaService, slotLayer, mergeCAs, clickedFs, false); assertEquals(1, selectCovered(mergeCAs.getCas(), type, 0, 0).size()); }
@Test public void copySpanWithSlotWithStackingTest() throws Exception { AnnotatorState state = new AnnotatorStateImpl(CURATION); state.setUser(new User()); slotLayer.setAnchoringMode(TOKENS); slotLayer.setAllowStacking(true); JCas jcasA = createJCas(DiffUtils.createMultiLinkWithRoleTestTypeSytem("f1")); Type type = jcasA.getTypeSystem().getType(DiffUtils.HOST_TYPE); Feature feature = type.getFeatureByBaseName("f1"); AnnotationFS clickedFs = DiffUtils.makeLinkHostMultiSPanFeatureFS(jcasA, 0, 0, feature, "A", DiffUtils.makeLinkFS(jcasA, "slot1", 0, 0)); JCas mergeCAs = JCasFactory .createJCas(DiffUtils.createMultiLinkWithRoleTestTypeSytem("f1")); DiffUtils.makeLinkHostMultiSPanFeatureFS(mergeCAs, 0, 0, feature, "C", DiffUtils.makeLinkFS(mergeCAs, "slot1", 0, 0)); MergeCas.addSpanAnnotation(state, annotationSchemaService, slotLayer, mergeCAs, clickedFs, true); assertEquals(2, selectCovered(mergeCAs.getCas(), type, 0, 0).size()); }
setModel(Model.of(new AnnotatorStateImpl(Mode.CORRECTION)));
setModel(Model.of(new AnnotatorStateImpl(Mode.AUTOMATION)));
setModel(Model.of(new AnnotatorStateImpl(Mode.AUTOMATION)));
private void commonInit() setModel(Model.of(new AnnotatorStateImpl(Mode.CURATION)));
private void commonInit() setModel(Model.of(new AnnotatorStateImpl(Mode.CURATION)));