public RelationshipView add(@Nonnull Element source, @Nonnull Element destination) { return add(source, "", destination); }
private void write(DynamicView view, Writer writer) { try { writer.write("title " + view.getName() + " - " + view.getKey()); writer.write(System.lineSeparator()); writer.write(System.lineSeparator()); Set<RelationshipView> relationships = new TreeSet<>((rv1, rv2) -> rv1.getOrder().compareTo(rv2.getOrder())); relationships.addAll(view.getRelationships()); for (RelationshipView relationshipView : relationships) { Relationship r = relationshipView.getRelationship(); // Thing A->Thing B: Description writer.write(String.format("%s%s%s: %s", r.getSource().getName(), r.getInteractionStyle() == InteractionStyle.Synchronous ? SYNCHRONOUS_INTERACTION : ASYNCHRONOUS_INTERACTION, r.getDestination().getName(), relationshipView.getDescription() )); writer.write(System.lineSeparator()); } writer.write(System.lineSeparator()); } catch (IOException ioe) { ioe.printStackTrace(); } }
public void endParallelSequence() { endParallelSequence(false); }
/** * Creates a dynamic view. * * @param key the key for the view (must be unique) * @param description a description of the view * @return a DynamicView object * @throws IllegalArgumentException if the key is not unique */ public DynamicView createDynamicView(String key, String description) { assertThatTheViewKeyIsSpecifiedAndUnique(key); DynamicView view = new DynamicView(model, key, description); view.setViewSet(this); dynamicViews.add(view); return view; }
@Test public void test_add_AddsTheSourceAndDestinationElements_WhenARelationshipBetweenThemExists() { final DynamicView dynamicView = workspace.getViews().createDynamicView(softwareSystemA, "key", "Description"); dynamicView.add(containerA1, containerA2); assertEquals(2, dynamicView.getElements().size()); }
view.add(softwareSystemA, softwareSystemB); view.startParallelSequence(); view.add(softwareSystemB, softwareSystemC1); view.add(softwareSystemC1, softwareSystemD); view.endParallelSequence(); view.startParallelSequence(); view.add(softwareSystemB, softwareSystemC2); view.add(softwareSystemC2, softwareSystemD); view.endParallelSequence(true); view.add(softwareSystemD, softwareSystemE); assertEquals(1, view.getRelationships().stream().filter(r -> r.getOrder().equals("1")).count()); assertEquals(2, view.getRelationships().stream().filter(r -> r.getOrder().equals("2")).count()); assertEquals(2, view.getRelationships().stream().filter(r -> r.getOrder().equals("3")).count()); assertEquals(1, view.getRelationships().stream().filter(r -> r.getOrder().equals("4")).count());
dynamicView.add(customer, customerApplication); dynamicView.add(customerApplication, customerService); dynamicView.add(customerService, customerDatabase); dynamicView.add(customerService, messageBus); dynamicView.startParallelSequence(); dynamicView.add(messageBus, reportingService); dynamicView.add(reportingService, reportingDatabase); dynamicView.endParallelSequence(); dynamicView.startParallelSequence(); dynamicView.add(messageBus, auditService); dynamicView.add(auditService, auditStore); dynamicView.endParallelSequence(); dynamicView.startParallelSequence(); dynamicView.add(customerService, "Confirms update to", customerApplication); dynamicView.endParallelSequence();
@Test public void test_copyLayoutInformationFrom_WhenTheDynamicViewKeysMatch() { Workspace workspace1 = createWorkspace(); Person person1 = workspace1.getModel().getPersonWithName("Person"); SoftwareSystem softwareSystem1 = workspace1.getModel().getSoftwareSystemWithName("Software System"); DynamicView view1 = workspace1.getViews().createDynamicView("context", "Description"); view1.add(person1, softwareSystem1); view1.getElements().iterator().next().setX(100); view1.setPaperSize(PaperSize.A3_Landscape); Workspace workspace2 = createWorkspace(); Person person2 = workspace2.getModel().getPersonWithName("Person"); SoftwareSystem softwareSystem2 = workspace2.getModel().getSoftwareSystemWithName("Software System"); DynamicView view2 = workspace2.getViews().createDynamicView("context", "Description"); view2.add(person2, softwareSystem2); workspace2.getViews().copyLayoutInformationFrom(workspace1.getViews()); assertEquals(100, view2.getElements().iterator().next().getX()); assertEquals(PaperSize.A3_Landscape, view2.getPaperSize()); }
@Test public void test_createDynamicView() { Workspace workspace = new Workspace("Name", "Description"); DynamicView dynamicView = workspace.getViews().createDynamicView("key", "Description"); assertEquals("key", dynamicView.getKey()); assertEquals("Description", dynamicView.getDescription()); assertNull(dynamicView.getSoftwareSystem()); assertNull(dynamicView.getElement()); }
views.setComponentViews(Collections.singleton(componentView)); DynamicView dynamicView = new DynamicView(); dynamicView.setElementId(softwareSystem.getId()); dynamicView.setElements(elementViewsFor(component)); views.setDynamicViews(Collections.singleton(dynamicView)); assertSame(component, componentView.getElementView(component).getElement()); assertSame(model, dynamicView.getModel()); assertSame(views, dynamicView.getViewSet()); assertSame(softwareSystem, dynamicView.getSoftwareSystem()); assertSame(softwareSystem, dynamicView.getElement()); assertSame(component, dynamicView.getElementView(component).getElement());
@Test public void test_normalSequence() { workspace = new Workspace("Name", "Description"); model = workspace.getModel(); SoftwareSystem softwareSystem = model.addSoftwareSystem("Software System", "Description"); Container container1 = softwareSystem.addContainer("Container 1", "Description", "Technology"); Container container2 = softwareSystem.addContainer("Container 2", "Description", "Technology"); Container container3 = softwareSystem.addContainer("Container 3", "Description", "Technology"); container1.uses(container2, "Uses"); container1.uses(container3, "Uses"); DynamicView view = workspace.getViews().createDynamicView(softwareSystem, "key", "Description"); view.add(container1, container2); view.add(container1, container3); assertSame(container2, view.getRelationships().stream().filter(r -> r.getOrder().equals("1")).findFirst().get().getRelationship().getDestination()); assertSame(container3, view.getRelationships().stream().filter(r -> r.getOrder().equals("2")).findFirst().get().getRelationship().getDestination()); }
view.getElements().stream() .map(ElementView::getElement) .sorted((e1, e2) -> e1.getId().compareTo(e2.getId())) view.getElements().stream() .map(ElementView::getElement) .sorted((e1, e2) -> e1.getName().compareTo(e2.getName())). forEach(e -> write(view, e, writer, false)); view.getRelationships().stream() .sorted((rv1, rv2) -> (rv1.getOrder().compareTo(rv2.getOrder()))) .forEach(relationship -> { format("%s -[%s]> %s : %s. %s", idOf(relationship.getRelationship().getSource()), view.getViewSet().getConfiguration().getStyles().findRelationshipStyle(relationship.getRelationship()).getColor(), idOf(relationship.getRelationship().getDestination()), relationship.getOrder(),
@Test public void test_copyLayoutInformationFrom_DoesNotDoAnythingIfThereIsNoDynamicViewToCopyInformationFrom() { Workspace workspace1 = createWorkspace(); Workspace workspace2 = createWorkspace(); Person person2 = workspace2.getModel().getPersonWithName("Person"); SoftwareSystem softwareSystem2 = workspace2.getModel().getSoftwareSystemWithName("Software System"); DynamicView view2 = workspace2.getViews().createDynamicView("context", "Description"); view2.add(person2, softwareSystem2); workspace2.getViews().copyLayoutInformationFrom(workspace1.getViews()); assertEquals(0, view2.getElements().iterator().next().getX()); // default assertNull(view2.getPaperSize()); // default }
dynamicView.add(singlePageApplication, "Submits credentials to", signinController); dynamicView.add(signinController, "Calls isAuthenticated() on", securityComponent); dynamicView.add(securityComponent, "select * from users where username = ?", database); dynamicView.setPaperSize(PaperSize.A5_Landscape);
@Override public String toString() { StringBuilder buf = new StringBuilder(); List<RelationshipView> list = new ArrayList<>(getRelationships()); Collections.sort(list, (rv1, rv2) -> rv1.getOrder().compareTo(rv2.getOrder())); list.forEach(rv -> buf.append(rv.toString() + "\n")); return buf.toString(); }
.forEach(v -> warnings.add("Component view \"" + v.getName() + "\": Missing key")); getViews().getDynamicViews().stream() .filter(v -> v.getKey() == null) .forEach(v -> warnings.add("Dynamic view \"" + v.getName() + "\": Missing key")); getViews().getDeploymentViews().stream() .filter(v -> v.getKey() == null)
DynamicView sourceView = findView(source.getDynamicViews(), view); if (sourceView != null) { view.copyLayoutInformationFrom(sourceView); } else { log.warn("Could not find a matching view for \"" + view.getName() + "\" ... diagram layout information may be lost.");
@Test public void test_createDynamicViewForSoftwareSystem() { Workspace workspace = new Workspace("Name", "Description"); SoftwareSystem softwareSystem = workspace.getModel().addSoftwareSystem("Name", "Description"); DynamicView dynamicView = workspace.getViews().createDynamicView(softwareSystem, "key", "Description"); assertEquals("key", dynamicView.getKey()); assertEquals("Description", dynamicView.getDescription()); assertSame(softwareSystem, dynamicView.getSoftwareSystem()); assertSame(softwareSystem, dynamicView.getElement()); }
@Test public void test_add_AddsTheSourceAndDestinationElements_WhenARelationshipBetweenThemExistsAndTheDestinationIsAnExternalSoftwareSystem() { DynamicView dynamicView = workspace.getViews().createDynamicView(softwareSystemA, "key", "Description"); containerA2.uses(softwareSystemB, "", ""); dynamicView.add(containerA2, softwareSystemB); assertEquals(2, dynamicView.getElements().size()); }
@Override protected RelationshipView findRelationshipView(@Nonnull RelationshipView sourceRelationshipView) { for (RelationshipView relationshipView : getRelationships()) { if (relationshipView.getRelationship().equals(sourceRelationshipView.getRelationship())) { if ((relationshipView.getDescription() != null && relationshipView.getDescription().equals(sourceRelationshipView.getDescription())) && relationshipView.getOrder().equals(sourceRelationshipView.getOrder())) { return relationshipView; } } } return null; }