use of de.catma.document.source.SourceDocument in project catma by forTEXT.
the class GitProjectHandler method ensureDevBranches.
public void ensureDevBranches() throws Exception {
logger.info(String.format("Ensuring dev branches for project %1$s", projectId));
try (ILocalGitRepositoryManager localGitRepoManager = this.localGitRepositoryManager) {
// tagsets
GitTagsetHandler gitTagsetHandler = new GitTagsetHandler(localGitRepoManager, this.remoteGitServerManager, this.credentialsProvider);
for (TagsetDefinition tagset : getTagsets()) {
logger.info(String.format("Checking out dev branch for tagset \"%1$s\" with ID %2$s", tagset.getName(), tagset.getUuid()));
gitTagsetHandler.checkout(projectId, tagset.getUuid(), ILocalGitRepositoryManager.DEFAULT_LOCAL_DEV_BRANCH, true);
}
// collections
GitMarkupCollectionHandler collectionHandler = new GitMarkupCollectionHandler(localGitRepoManager, this.remoteGitServerManager, this.credentialsProvider);
for (AnnotationCollectionReference collectionReference : getCollectionReferences()) {
logger.info(String.format("Checking out dev branch for collection \"%1$s\" with ID %2$s", collectionReference.getName(), collectionReference.getId()));
collectionHandler.checkout(projectId, collectionReference.getId(), ILocalGitRepositoryManager.DEFAULT_LOCAL_DEV_BRANCH, true);
}
// documents
GitSourceDocumentHandler gitSourceDocumentHandler = new GitSourceDocumentHandler(localGitRepoManager, remoteGitServerManager, credentialsProvider);
for (SourceDocument sourceDocument : getDocuments()) {
logger.info(String.format("Checking out dev branch for document \"%s\" with ID %s", sourceDocument.getSourceContentHandler().getSourceDocumentInfo().getContentInfoSet().getTitle(), sourceDocument.getUuid()));
gitSourceDocumentHandler.checkout(projectId, sourceDocument.getUuid(), ILocalGitRepositoryManager.DEFAULT_LOCAL_DEV_BRANCH, true);
}
}
}
use of de.catma.document.source.SourceDocument in project catma by forTEXT.
the class TagDiffQuery 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.searchTagDiff(queryOptions.getQueryId(), relevantUserMarkupCollIDs, propertyName, 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;
}
use of de.catma.document.source.SourceDocument in project catma by forTEXT.
the class WildcardQuery method execute.
@Override
protected QueryResult execute() throws Exception {
QueryOptions queryOptions = getQueryOptions();
WildcardTermExtractor termExtractor = new WildcardTermExtractor(wildcardPhrase, queryOptions.getUnseparableCharacterSequences(), queryOptions.getUserDefinedSeparatingCharacters(), queryOptions.getLocale());
List<String> termList = termExtractor.getOrderedTerms();
Indexer indexer = queryOptions.getIndexer();
QueryResult result = indexer.searchWildcardPhrase(queryOptions.getQueryId(), queryOptions.getRelevantSourceDocumentIDs(), termList, queryOptions.getLimit());
Project repository = queryOptions.getRepository();
for (QueryResultRow row : result) {
SourceDocument sd = repository.getSourceDocument(row.getSourceDocumentId());
row.setPhrase(sd.getContent(row.getRange()));
}
return result;
}
use of de.catma.document.source.SourceDocument in project catma by forTEXT.
the class TaggerView method initActions.
private void initActions() {
btClearSearchHighlights.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
tagger.removeHighlights();
}
});
cbTraceSelection.addClickListener(clickEvent -> {
boolean traceSelection = (boolean) cbTraceSelection.getData();
traceSelection = !traceSelection;
cbTraceSelection.setData(traceSelection);
tagger.setTraceSelection(traceSelection);
if (traceSelection) {
cbTraceSelection.addStyleName("tagger-trace-checkbox-selected");
} else {
cbTraceSelection.removeStyleName("tagger-trace-checkbox-selected");
}
});
cbAutoShowComments.addClickListener(clickEvent -> {
boolean autoShowComments = (boolean) cbAutoShowComments.getData();
autoShowComments = !autoShowComments;
cbAutoShowComments.setData(autoShowComments);
if (autoShowComments) {
cbAutoShowComments.setIcon(VaadinIcons.COMMENT);
try {
TaggerView.this.comments.clear();
TaggerView.this.comments.addAll(TaggerView.this.project.getComments(sourceDocument.getUuid()));
tagger.updateComments(comments);
} catch (IOException e) {
logger.log(Level.SEVERE, "unable to reload comments", e);
}
} else {
cbAutoShowComments.setIcon(VaadinIcons.COMMENT_O);
}
});
btAnalyze.addClickListener(new ClickListener() {
public void buttonClick(ClickEvent event) {
analyzeDocument();
}
});
linesPerPageSlider.addValueChangeListener(new ValueChangeListener<Double>() {
public void valueChange(ValueChangeEvent<Double> event) {
Double perCentValue = (Double) linesPerPageSlider.getValue();
int lines = (int) ((totalLineCount / 100.0) * perCentValue);
List<ClientTagInstance> absoluteTagInstances = pager.getAbsoluteTagInstances();
Page currentPage = null;
if (pager.hasPages()) {
currentPage = pager.getCurrentPage();
}
pager.setMaxPageLengthInLines(lines);
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) {
errorHandler.showAndLogError("Error showing the Document!", e);
}
}
}
});
resourcePanel.setSelectionListener(new ResourceSelectionListener() {
@Override
public void resourcesChanged() {
AnnotationCollection selectedEditableCollection = annotationPanel.getSelectedEditableCollection();
List<AnnotationCollectionReference> selectedAnnotationCollectionRefs = resourcePanel.getSelectedAnnotationCollectionReferences();
for (AnnotationCollection collection : userMarkupCollectionManager.getUserMarkupCollections()) {
userMarkupCollectionManager.remove(collection.getId());
annotationPanel.removeCollection(collection.getId());
tagger.setVisible(collection.getTagReferences(), false);
}
userMarkupCollectionManager.clear();
for (AnnotationCollectionReference collectionReference : selectedAnnotationCollectionRefs) {
try {
AnnotationCollection collection = project.getUserMarkupCollection(collectionReference);
setAnnotationCollectionSelected(new AnnotationCollectionReference(collection), true);
} catch (IOException e) {
((ErrorHandler) UI.getCurrent()).showAndLogError("error refreshing Annotation Collection!", e);
}
}
if ((selectedEditableCollection != null) && (userMarkupCollectionManager.contains(selectedEditableCollection.getId()))) {
annotationPanel.setSelectedEditableCollection(userMarkupCollectionManager.getUserMarkupCollection(selectedEditableCollection.getId()));
}
annotationPanel.clearTagsets();
tagsetsSelected(resourcePanel.getSelectedTagsets());
}
@Override
public void documentSelected(SourceDocument sourceDocument) {
setSourceDocument(sourceDocument, null);
}
@Override
public void annotationCollectionSelected(AnnotationCollectionReference collectionReference, boolean selected) {
setAnnotationCollectionSelected(collectionReference, selected);
}
@Override
public void tagsetsSelected(Collection<TagsetDefinition> tagsets) {
try {
annotationPanel.setTagsets(tagsets);
if (taggerContextMenu != null) {
taggerContextMenu.setTagsets(tagsets);
}
for (AnnotationCollection collection : userMarkupCollectionManager.getUserMarkupCollections()) {
tagger.setVisible(collection.getTagReferences(), false);
List<TagReference> visibleRefs = annotationPanel.getVisibleTagReferences(collection.getTagReferences());
if (!visibleRefs.isEmpty()) {
tagger.setVisible(visibleRefs, true);
}
}
} catch (Exception e) {
errorHandler.showAndLogError("Error handling Tagset!", e);
}
}
});
annotationPanel.setTagReferenceSelectionChangeListener((tagReferences, selected) -> {
if (!tagReferences.isEmpty()) {
tagger.setVisible(tagReferences, selected);
}
});
kwicPanel.setExpansionListener(new ExpansionListener() {
@Override
public void expand() {
// we hide on expand and on compress since both is considered a "close"
hideKwicPanel();
}
@Override
public void compress() {
// we hide on expand and on compress since both is considered a "close"
hideKwicPanel();
}
});
kwicPanel.addItemClickListener(itemClick -> {
if (itemClick.getMouseEventDetails().isDoubleClick()) {
show(itemClick.getItem().getRange());
}
});
}
use of de.catma.document.source.SourceDocument 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);
}
Aggregations