use of de.catma.tag.Property in project catma by forTEXT.
the class AnnotationConflict method createCombinedTagInstance.
private List<TagReference> createCombinedTagInstance() throws Exception {
TagInstance combinedInstance = new TagInstance(masterTagInstance.getUuid(), masterTagInstance.getTagDefinitionId(), masterTagInstance.getAuthor(), masterTagInstance.getTimestamp(), Collections.emptySet(), masterTagInstance.getTagsetId());
for (Property property : masterTagInstance.getUserDefinedProperties()) {
HashSet<String> values = new HashSet<>();
values.addAll(property.getPropertyValueList());
Property devUserDefinedProperty = devTagInstance.getUserDefinedPropetyByUuid(property.getPropertyDefinitionId());
if (devUserDefinedProperty != null) {
values.addAll(devUserDefinedProperty.getPropertyValueList());
}
combinedInstance.addUserDefinedProperty(new Property(property.getPropertyDefinitionId(), values));
}
List<TagReference> references = new ArrayList<>();
for (TagReference tagReference : masterTagReferences) {
references.add(new TagReference(combinedInstance, tagReference.getTarget().toString(), tagReference.getRange(), tagReference.getUserMarkupCollectionUuid()));
}
return references;
}
use of de.catma.tag.Property in project catma by forTEXT.
the class GraphWorktreeProject method update.
@Override
public void update(AnnotationCollection collection, TagInstance tagInstance, Collection<Property> properties) throws IOException {
try {
for (Property property : properties) {
tagInstance.addUserDefinedProperty(property);
}
gitProjectHandler.addOrUpdate(collection.getUuid(), collection.getTagReferences(tagInstance), tagManager.getTagLibrary());
graphProjectHandler.updateProperties(GraphWorktreeProject.this.rootRevisionHash, collection, tagInstance, properties);
propertyChangeSupport.firePropertyChange(RepositoryChangeEvent.propertyValueChanged.name(), tagInstance, properties);
} catch (Exception e) {
propertyChangeSupport.firePropertyChange(RepositoryChangeEvent.exceptionOccurred.name(), null, e);
}
}
use of de.catma.tag.Property in project catma by forTEXT.
the class GraphWriter method addTagReferences.
void addTagReferences(String revisionHash, Vertex collectionV, List<TagReference> tagReferences) {
final ArrayListMultimap<TagInstance, Range> tagInstancesAndRanges = ArrayListMultimap.create();
tagReferences.forEach(tagReference -> {
tagInstancesAndRanges.put(tagReference.getTagInstance(), tagReference.getRange());
});
Map<String, Vertex> tagNodesById = new HashMap<>();
Set<String> availablePropertyDefIds = new HashSet<>();
for (TagInstance ti : tagInstancesAndRanges.keySet()) {
List<Range> ranges = tagInstancesAndRanges.get(ti);
List<Integer> flatRanges = ranges.stream().sorted().flatMap(range -> Stream.of(range.getStartPoint(), range.getEndPoint())).collect(Collectors.toList());
if (ti.getAuthor() == null) {
ti.setAuthor(user.getIdentifier());
}
String tagsetId = ti.getTagsetId();
String tagId = ti.getTagDefinitionId();
Vertex tagInstanceV = graph.addVertex(nt(TagInstance));
tagInstanceV.property("tagInstanceId", ti.getUuid());
tagInstanceV.property("author", ti.getAuthor());
tagInstanceV.property("timestamp", ti.getTimestamp());
tagInstanceV.property("ranges", flatRanges);
collectionV.addEdge(rt(hasInstance), tagInstanceV);
Vertex tagV = tagNodesById.get(tagId);
GraphTraversalSource g = graph.traversal();
if (tagV == null) {
GraphTraversal<Vertex, Vertex> traversal = g.V().has(nt(ProjectRevision), "revisionHash", revisionHash).outE(rt(hasTagset)).inV().has(nt(Tagset), "tagsetId", tagsetId).outE(rt(hasTag)).inV().has(nt(Tag), "tagId", tagId);
if (traversal.hasNext()) {
tagV = traversal.next();
tagNodesById.put(tagId, tagV);
}
}
if (tagV != null) {
// usually the Tag should always be present,
// because we delete stale Annotations when loading the Collection from git
// if we hit an orphan Annotation at this stage it gets ignored
// until the next sync might bring the corresponding Tag
tagV.addEdge(rt(hasInstance), tagInstanceV);
for (Property property : ti.getUserDefinedProperties()) {
if (availablePropertyDefIds.contains(property.getPropertyDefinitionId()) || g.V(tagV).outE(rt(hasProperty)).inV().has(nt(Property), "uuid", property.getPropertyDefinitionId()).hasNext()) {
Vertex annoPropertyV = graph.addVertex(nt(AnnotationProperty));
annoPropertyV.property("uuid", property.getPropertyDefinitionId());
annoPropertyV.property("values", property.getPropertyValueList());
tagInstanceV.addEdge(rt(hasProperty), annoPropertyV);
availablePropertyDefIds.add(property.getPropertyDefinitionId());
}
}
}
}
}
use of de.catma.tag.Property in project catma by forTEXT.
the class AnnotationConflictView method createPropertyTreeDataProvider.
private TreeDataProvider<PropertyTreeItem> createPropertyTreeDataProvider(TagInstance tagInstance, TagDefinition tag) {
TreeData<PropertyTreeItem> propertyTreeData = new TreeData<>();
for (Property property : tagInstance.getUserDefinedProperties()) {
PropertyDefinition propertyDef = tag.getPropertyDefinitionByUuid(property.getPropertyDefinitionId());
PropertyDataItem propertyDataItem = new PropertyDataItem(propertyDef, property);
propertyTreeData.addItem(null, propertyDataItem);
for (String value : property.getPropertyValueList()) {
propertyTreeData.addItem(propertyDataItem, new PropertyValueDataItem(property, value));
}
}
TreeDataProvider<PropertyTreeItem> propertyTreeDataProvider = new TreeDataProvider<>(propertyTreeData);
return propertyTreeDataProvider;
}
use of de.catma.tag.Property in project catma by forTEXT.
the class EditAnnotationPropertiesDialog method createComponents.
private void createComponents(Project project) {
propertyTabSheet = new TabSheet();
propertyTabSheet.setSizeFull();
String tagId = annotation.getTagInstance().getTagDefinitionId();
TagDefinition tag = project.getTagManager().getTagLibrary().getTagDefinition(tagId);
for (PropertyDefinition propertyDef : tag.getUserDefinedPropertyDefinitions()) {
Property property = annotation.getTagInstance().getUserDefinedPropetyByUuid(propertyDef.getUuid());
if (property == null) {
property = new Property(propertyDef.getUuid(), Collections.emptySet());
}
propertyTabSheet.addTab(new EditPropertyTab(property, propertyDef.getPossibleValueList()), propertyDef.getName());
}
}
Aggregations