private ElementView findElementView(ElementView sourceElementView) { for (ElementView elementView : getElements()) { if (elementView.getElement().equals(sourceElementView.getElement())) { return elementView; } } return null; }
/** * Removes all elements that have no relationships to other elements in this view. */ public void removeElementsWithNoRelationships() { Set<RelationshipView> relationships = getRelationships(); Set<String> elementIds = new HashSet<>(); relationships.forEach(rv -> elementIds.add(rv.getRelationship().getSourceId())); relationships.forEach(rv -> elementIds.add(rv.getRelationship().getDestinationId())); for (ElementView elementView : getElements()) { if (!elementIds.contains(elementView.getId())) { removeElement(elementView.getElement()); } } }
private void addRelationships(Element element) { Set<Element> elements = getElements().stream() .map(ElementView::getElement) .collect(Collectors.toSet()); // add relationships where the destination exists in the view already for (Relationship relationship : element.getRelationships()) { if (elements.contains(relationship.getDestination())) { this.relationshipViews.add(new RelationshipView(relationship)); } } // add relationships where the source exists in the view already for (Element e : elements) { for (Relationship r : e.getRelationships()) { if (r.getDestination().equals(element)) { this.relationshipViews.add(new RelationshipView(r)); } } } }
/** * Attempts to copy the visual layout information (e.g. x,y coordinates) of elements and relationships * from the specified source view into this view. * * @param source the source View */ void copyLayoutInformationFrom(@Nonnull View source) { if (this.getPaperSize() == null) { this.setPaperSize(source.getPaperSize()); } for (ElementView sourceElementView : source.getElements()) { ElementView destinationElementView = findElementView(sourceElementView); if (destinationElementView != null) { destinationElementView.copyLayoutInformationFrom(sourceElementView); } } for (RelationshipView sourceRelationshipView : source.getRelationships()) { RelationshipView destinationRelationshipView = findRelationshipView(sourceRelationshipView); if (destinationRelationshipView != null) { destinationRelationshipView.copyLayoutInformationFrom(sourceRelationshipView); } } }
private void hydrateView(View view) { view.setViewSet(this); for (ElementView elementView : view.getElements()) { elementView.setElement(model.getElement(elementView.getId())); } for (RelationshipView relationshipView : view.getRelationships()) { relationshipView.setRelationship(model.getRelationship(relationshipView.getId())); } }
for (ElementView elementView : view.getElements()) { Element element = elementView.getElement();