use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState in project webanno by webanno.
the class CorrectionPage method actionLoadDocument.
@Override
protected void actionLoadDocument(AjaxRequestTarget aTarget) {
LOG.info("BEGIN LOAD_DOCUMENT_ACTION");
AnnotatorState state = getModelObject();
String username = SecurityContextHolder.getContext().getAuthentication().getName();
User user = userRepository.get(username);
state.setUser(user);
state.setProject(state.getProject());
state.setDocument(state.getDocument(), getListOfDocs());
try {
// Check if there is an annotation document entry in the database. If there is none,
// create one.
AnnotationDocument annotationDocument = documentService.createOrGetAnnotationDocument(state.getDocument(), user);
// Read the correction CAS - if it does not exist yet, from the initial CAS
JCas correctionCas;
if (correctionDocumentService.existsCorrectionCas(state.getDocument())) {
correctionCas = correctionDocumentService.readCorrectionCas(state.getDocument());
} else {
correctionCas = documentService.createOrReadInitialCas(state.getDocument());
}
// Read the annotation CAS or create an annotation CAS from the initial CAS by stripping
// annotations
JCas editorCas;
if (documentService.existsCas(state.getDocument(), user.getUsername())) {
editorCas = documentService.readAnnotationCas(annotationDocument);
} else {
editorCas = documentService.createOrReadInitialCas(state.getDocument());
editorCas = BratAnnotatorUtility.clearJcasAnnotations(editorCas, state.getDocument(), user, documentService);
}
// Update the CASes
annotationService.upgradeCas(editorCas.getCas(), annotationDocument);
correctionDocumentService.upgradeCorrectionCas(correctionCas.getCas(), state.getDocument());
// After creating an new CAS or upgrading the CAS, we need to save it
documentService.writeAnnotationCas(editorCas.getCas().getJCas(), annotationDocument.getDocument(), user, false);
correctionDocumentService.writeCorrectionCas(correctionCas, state.getDocument());
// (Re)initialize brat model after potential creating / upgrading CAS
state.reset();
// Load constraints
state.setConstraints(constraintsService.loadConstraints(state.getProject()));
// Load user preferences
PreferencesUtil.loadPreferences(username, settingsService, projectService, annotationService, state, state.getMode());
// Initialize the visible content
state.setFirstVisibleUnit(WebAnnoCasUtil.getFirstSentence(editorCas));
// if project is changed, reset some project specific settings
if (currentprojectId != state.getProject().getId()) {
state.clearRememberedFeatures();
}
currentprojectId = state.getProject().getId();
LOG.debug("Configured BratAnnotatorModel for user [" + state.getUser() + "] f:[" + state.getFirstVisibleUnitIndex() + "] l:[" + state.getLastVisibleUnitIndex() + "] s:[" + state.getFocusUnitIndex() + "]");
gotoPageTextField.setModelObject(1);
setCurationSegmentBeginEnd(editorCas);
suggestionView.init(aTarget, curationContainer, annotationSelectionByUsernameAndAddress, curationSegment);
update(aTarget);
// Re-render the whole page because the font size
if (aTarget != null) {
aTarget.add(this);
}
// Update document state
documentService.transitionSourceDocumentState(state.getDocument(), SourceDocumentStateTransition.NEW_TO_ANNOTATION_IN_PROGRESS);
// Reset the editor
detailEditor.reset(aTarget);
// Populate the layer dropdown box
detailEditor.loadFeatureEditorModels(editorCas, aTarget);
} catch (Exception e) {
handleException(aTarget, e);
}
LOG.info("END LOAD_DOCUMENT_ACTION");
}
use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState in project webanno by webanno.
the class CorrectionPage method actionRefreshDocument.
@Override
protected void actionRefreshDocument(AjaxRequestTarget aTarget) {
try {
AnnotatorState state = getModelObject();
SuggestionBuilder builder = new SuggestionBuilder(casStorageService, documentService, correctionDocumentService, curationDocumentService, annotationService, userRepository);
curationContainer = builder.buildCurationContainer(state);
setCurationSegmentBeginEnd(getEditorCas());
curationContainer.setBratAnnotatorModel(state);
update(aTarget);
annotationEditor.requestRender(aTarget);
} catch (Exception e) {
handleException(aTarget, e);
}
}
use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState in project webanno by webanno.
the class CorrectionPage method createDetailEditor.
private AnnotationDetailEditorPanel createDetailEditor() {
return new AnnotationDetailEditorPanel("annotationDetailEditorPanel", getModel()) {
private static final long serialVersionUID = 2857345299480098279L;
@Override
protected void onChange(AjaxRequestTarget aTarget) {
aTarget.addChildren(getPage(), IFeedback.class);
aTarget.add(getOrCreatePositionInfoLabel());
try {
AnnotatorState state = getModelObject();
JCas editorCas = getEditorCas();
// JCas correctionCas = repository.readCorrectionCas(state.getDocument());
annotationEditor.requestRender(aTarget);
// info(bratAnnotatorModel.getMessage());
SuggestionBuilder builder = new SuggestionBuilder(casStorageService, documentService, correctionDocumentService, curationDocumentService, annotationService, userRepository);
curationContainer = builder.buildCurationContainer(state);
setCurationSegmentBeginEnd(editorCas);
curationContainer.setBratAnnotatorModel(state);
update(aTarget);
} catch (Exception e) {
handleException(this, aTarget, e);
}
}
@Override
protected void onAutoForward(AjaxRequestTarget aTarget) {
annotationEditor.requestRender(aTarget);
}
};
}
use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState in project webanno by webanno.
the class CorrectionPage method actionGotoPage.
private void actionGotoPage(AjaxRequestTarget aTarget, Form<?> aForm) throws Exception {
AnnotatorState state = getModelObject();
JCas editorCas = getEditorCas();
List<Sentence> sentences = new ArrayList<>(select(editorCas, Sentence.class));
int selectedSentence = gotoPageTextField.getModelObject();
selectedSentence = Math.min(selectedSentence, sentences.size());
gotoPageTextField.setModelObject(selectedSentence);
state.setFirstVisibleUnit(sentences.get(selectedSentence - 1));
state.setFocusUnitIndex(selectedSentence);
SuggestionBuilder builder = new SuggestionBuilder(casStorageService, documentService, correctionDocumentService, curationDocumentService, annotationService, userRepository);
curationContainer = builder.buildCurationContainer(state);
setCurationSegmentBeginEnd(editorCas);
curationContainer.setBratAnnotatorModel(state);
update(aTarget);
aTarget.add(gotoPageTextField);
annotationEditor.requestRender(aTarget);
}
use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState in project webanno by webanno.
the class CorrectionPage method actionResetDocument.
/**
* Reset the document by removing all annotations form the initial CAS and using the result as
* the editor CAS.
*/
@Override
protected void actionResetDocument(AjaxRequestTarget aTarget) throws Exception {
AnnotatorState state = getModelObject();
JCas editorCas = documentService.createOrReadInitialCas(state.getDocument());
editorCas = BratAnnotatorUtility.clearJcasAnnotations(editorCas, state.getDocument(), state.getUser(), documentService);
documentService.writeAnnotationCas(editorCas, state.getDocument(), state.getUser(), false);
actionLoadDocument(aTarget);
}
Aggregations