/** * Removes relationships that are not connected to the specified element. * * @param element the Element to test against */ public void removeRelationshipsNotConnectedToElement(Element element) { if (element != null) { getRelationships().stream() .map(RelationshipView::getRelationship) .filter(r -> !r.getSource().equals(element) && !r.getDestination().equals(element)) .forEach(this::remove); } }
protected RelationshipView findRelationshipView(@Nonnull RelationshipView sourceRelationshipView) { for (RelationshipView relationshipView : getRelationships()) { if (relationshipView.getRelationship().equals(sourceRelationshipView.getRelationship())) { return relationshipView; } } 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()); } } }
protected void writeRelationships(View view, Writer writer) { view.getRelationships().stream() .map(RelationshipView::getRelationship) .sorted((r1, r2) -> (r1.getSource().getName() + r1.getDestination().getName()).compareTo(r2.getSource().getName() + r2.getDestination().getName())) .forEach(r -> writeRelationship(view, r, writer)); }
protected void removeElement(Element element) { if (element == null) { throw new IllegalArgumentException("An element must be specified."); } if (!canBeRemoved(element)) { throw new IllegalArgumentException("The element named '" + element.getName() + "' cannot be removed from this view."); } ElementView elementView = new ElementView(element); elementViews.remove(elementView); for (RelationshipView relationshipView : getRelationships()) { if (relationshipView.getRelationship().getSource().equals(element) || relationshipView.getRelationship().getDestination().equals(element)) { remove(relationshipView.getRelationship()); } } }
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())); } }
/** * 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); } } }
for (RelationshipView relationshipView : view.getRelationships()) { Relationship relationship = relationshipView.getRelationship(); digraph.addAssociation(