Skip to content
This repository was archived by the owner on Nov 3, 2022. It is now read-only.

Commit

Permalink
fix for group showing as "null" in report [#52] and wrong group color…
Browse files Browse the repository at this point in the history
…s in report [#54]
  • Loading branch information
bonndan committed Nov 24, 2019
1 parent 3e417d1 commit 8a59535
Show file tree
Hide file tree
Showing 16 changed files with 183 additions and 58 deletions.
46 changes: 46 additions & 0 deletions src/main/java/de/bonndan/nivio/input/GroupResolver.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package de.bonndan.nivio.input;

import de.bonndan.nivio.input.dto.LandscapeDescription;
import de.bonndan.nivio.model.Group;
import de.bonndan.nivio.model.GroupItem;
import de.bonndan.nivio.model.Groups;
import de.bonndan.nivio.model.LandscapeImpl;
import org.springframework.util.StringUtils;

/**
* Resolves the groups.
*/
public class GroupResolver {

private final ProcessLog log;

public GroupResolver(ProcessLog log) {
this.log = log;
}

public void process(LandscapeDescription input, LandscapeImpl landscape) {
input.getGroups().forEach((identifier, groupItem) -> {
Group g = getGroup(identifier, groupItem);

log.info("Adding or updating group " + g.getIdentifier());
landscape.addGroup(g);
});

input.getItemDescriptions().forEach(itemDescription -> {

String group = itemDescription.getGroup();
if (StringUtils.isEmpty(itemDescription.getGroup())) {
group = Group.COMMON;
}

landscape.getGroups().computeIfAbsent(group, s -> getGroup(s, null));
});
}

private Group getGroup(String identifier, GroupItem groupItem) {
Group g = new Group(identifier);
Groups.merge(g, groupItem);
return g;
}

}
12 changes: 4 additions & 8 deletions src/main/java/de/bonndan/nivio/input/Indexer.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,8 @@ public ProcessLog reIndex(final LandscapeDescription input) {
new TemplateResolver().processTemplates(input, templatesAndTargets);
new InstantItemResolver(logger).processTargets(input);
new RelationResolver(logger).processRelations(input);
input.getGroups().forEach((identifier, groupItem) -> {
Group g = new Group();
g.setIdentifier(identifier);
Groups.merge(g, groupItem);
new GroupResolver(logger).process(input, landscape);

landscape.addGroup(g);
});

diff(input, landscape, logger);
fillGroups(input, landscape);
Expand Down Expand Up @@ -128,9 +123,10 @@ private void diff(final LandscapeDescription input, final LandscapeImpl landscap
}

private void fillGroups(LandscapeDescription input, LandscapeImpl landscape) {

//todo check if this can run in GroupResolver
landscape.getItems().forEach(item -> {
Group group = (Group) landscape.getGroups().computeIfAbsent(item.getGroup(), Group::new);
group.getItems().add(item);
landscape.getGroup(item.getGroup()).getItems().add(item);
});

input.getGroups().forEach((s, groupItem) -> {
Expand Down
11 changes: 6 additions & 5 deletions src/main/java/de/bonndan/nivio/model/Group.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
package de.bonndan.nivio.model;

import de.bonndan.nivio.util.Color;
import org.springframework.util.StringUtils;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static de.bonndan.nivio.model.Groups.COMMON;

public class Group implements GroupItem {

public static final Group DEFAULT_GROUP;
public static final String COMMON = "Common";

static {
DEFAULT_GROUP = new Group();
DEFAULT_GROUP.setColor(Color.DARKGRAY);
DEFAULT_GROUP.setIdentifier(COMMON);
}

Expand All @@ -35,7 +33,7 @@ public Group() {
}

public Group(String identifier) {
this.identifier = identifier;
setIdentifier(identifier);
}

@Override
Expand Down Expand Up @@ -74,6 +72,9 @@ public Map<String, URL> getLinks() {
}

public void setIdentifier(String identifier) {
if (StringUtils.isEmpty(identifier))
identifier = COMMON;

this.identifier = identifier;
}

Expand Down
7 changes: 4 additions & 3 deletions src/main/java/de/bonndan/nivio/model/Groups.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@

public class Groups {

public static final String COMMON = "Common";

private Map<String, List<LandscapeItem>> groups = new HashMap<>();

/**
Expand All @@ -31,6 +29,9 @@ public static Groups from(LandscapeImpl landscape) {
* Merges all absent values from the second param into the first.
*/
public static void merge(final Group group, GroupItem groupItem) {
if (groupItem == null)
return;

assignSafeIfAbsent(groupItem.getColor(), group.getColor(), group::setColor);
assignSafeIfAbsent(groupItem.getTeam(), group.getTeam(), group::setTeam);
assignSafeIfAbsent(groupItem.getContact(), group.getContact(), group::setContact);
Expand All @@ -49,7 +50,7 @@ public static void merge(final Group group, GroupItem groupItem) {
@Deprecated
public void add(String groupKey, LandscapeItem service) {

String key = isEmpty(groupKey) ? COMMON : groupKey;
String key = isEmpty(groupKey) ? Group.COMMON : groupKey;

if (!groups.containsKey(key)) {
groups.put(key, new ArrayList<>());
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/de/bonndan/nivio/model/LandscapeImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -120,4 +120,10 @@ public void addGroup(Group g) {

groups.put(g.getIdentifier(), g);
}

public Group getGroup(String group) {
if (StringUtils.isEmpty(group))
group = Group.COMMON;
return (Group) groups.get(group);
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package de.bonndan.nivio.util;
package de.bonndan.nivio.output;

import com.lowagie.text.html.WebColors;
import de.bonndan.nivio.model.Group;
import de.bonndan.nivio.model.GroupItem;
import de.bonndan.nivio.model.Item;
import de.bonndan.nivio.model.LandscapeImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

import java.util.Optional;

public class Color {

public static String DARK = "111111";
Expand Down Expand Up @@ -39,4 +45,19 @@ public static String lighten(String color) {
return color;
}
}

public static String getGroupColor(Item item) {
if (item.getGroup() == null || item.getGroup().startsWith(Group.COMMON))
return GRAY;

return getGroupColor(item.getGroup(), item.getLandscape());
}

public static String getGroupColor(String name, LandscapeImpl landscape) {

GroupItem group = landscape.getGroups().getOrDefault(name, Group.DEFAULT_GROUP);

return Optional.ofNullable(group.getColor())
.orElse(Color.nameToRGB(name, Color.DARKGRAY));
}
}
7 changes: 7 additions & 0 deletions src/main/java/de/bonndan/nivio/output/FormatUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,11 @@ public static String nice(String string) {
string = string.replace("_", " ");
return string.substring(0, 1).toUpperCase() + string.substring(1);
}

public static String ifPresent(String string) {
if (isEmpty(string))
return "";

return string;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import de.bonndan.nivio.model.LandscapeImpl;
import de.bonndan.nivio.model.LandscapeItem;
import de.bonndan.nivio.output.FormatUtils;
import de.bonndan.nivio.util.Color;
import de.bonndan.nivio.output.Color;
import j2html.tags.ContainerTag;

import java.util.ArrayList;
Expand Down
29 changes: 17 additions & 12 deletions src/main/java/de/bonndan/nivio/output/docs/ReportGenerator.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
package de.bonndan.nivio.output.docs;

import de.bonndan.nivio.model.Groups;
import de.bonndan.nivio.model.Item;
import de.bonndan.nivio.model.LandscapeImpl;
import de.bonndan.nivio.model.LandscapeItem;
import de.bonndan.nivio.model.*;
import de.bonndan.nivio.output.FormatUtils;
import de.bonndan.nivio.output.IconService;
import de.bonndan.nivio.output.LocalServer;
import de.bonndan.nivio.util.Color;
import de.bonndan.nivio.output.Color;
import j2html.tags.ContainerTag;
import org.springframework.util.StringUtils;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import static de.bonndan.nivio.output.FormatUtils.ifPresent;
import static j2html.TagCreator.*;
import static j2html.TagCreator.a;
import static org.springframework.util.StringUtils.isEmpty;
Expand All @@ -40,21 +38,23 @@ private String writeLandscape(LandscapeImpl landscape) {
p("Contact: " + landscape.getContact()),
div(img().attr("src", LocalServer.url("/render/" + landscape.getIdentifier() + "/graph.png")).attr("class", "img-fluid img-thumbnail mx-auto d-block")),
br(), br(),
rawHtml(writeGroups(Groups.from(landscape)))
rawHtml(writeGroups(landscape))
)
).renderFormatted();
}

private String writeGroups(Groups groups) {
private String writeGroups(LandscapeImpl landscape) {
final StringBuilder builder = new StringBuilder();
groups.getAll().forEach((s, landscapeItems) -> {
String color = "#" + Color.nameToRGB(s);
Map<String, GroupItem> groups = landscape.getGroups();
groups.forEach((s, groupItem) -> {
String color = "#" + Color.getGroupColor(s, landscape);
builder.append(
h2(rawHtml("Group: " + "<span style=\"color: " + color + "\">&#9899;</span> " + s))
.attr("class", "rounded").render()
);
builder.append(
div().attr("class", "group").with(landscapeItems.stream().map(this::writeItem))
div().attr("class", "group")
.with(((Group) groupItem).getItems().stream().map(this::writeItem))
.render()
);
});
Expand Down Expand Up @@ -122,7 +122,12 @@ private ContainerTag writeItem(LandscapeItem item) {
//data flow
iff(ĥasRelations, h4("Relations")),
iff(ĥasRelations, ul().with(
item.getRelations().stream().map(df -> li(rawHtml(df.getType() + " " + df.getFormat() + " " + df.getDescription() + " &#10142; " + df.getTarget())))
item.getRelations().stream()
.map(df -> li(rawHtml(df.getType() + " "
+ ifPresent(df.getFormat()) + " "
+ ifPresent(df.getDescription())
+ " &#10142; " + df.getTarget()))
)
)
),

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import de.bonndan.nivio.model.*;
import de.bonndan.nivio.output.LocalServer;
import de.bonndan.nivio.output.Renderer;
import de.bonndan.nivio.util.Color;
import de.bonndan.nivio.output.Color;
import org.graphstream.graph.Edge;
import org.graphstream.graph.Graph;
import org.graphstream.graph.Node;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ private void addVirtualEdgesBetweenGroups(List<LandscapeItem> items) {

//provider
((Item) service).getProvidedBy().forEach(provider -> {
String pGroup = provider.getGroup() == null ? Groups.COMMON : provider.getGroup();
String pGroup = provider.getGroup() == null ? Group.COMMON : provider.getGroup();
mxCell providerGroupNode = groupNodes.get(pGroup);
String providerGroup = providerGroupNode.getId();

Expand All @@ -101,7 +101,7 @@ private void addVirtualEdgesBetweenGroups(List<LandscapeItem> items) {
if (targetItem == null) return;


String targetGroup = targetItem.getGroup() == null ? Groups.COMMON : targetItem.getGroup();
String targetGroup = targetItem.getGroup() == null ? Group.COMMON : targetItem.getGroup();
mxCell targetGroupNode = groupNodes.get(targetGroup);

if (groupConnections.canConnect(group, targetGroup)) {
Expand Down
25 changes: 4 additions & 21 deletions src/main/java/de/bonndan/nivio/output/jgraphx/FinalGraph.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@
import com.mxgraph.view.mxStyleRegistry;
import com.mxgraph.view.mxStylesheet;
import de.bonndan.nivio.model.*;
import de.bonndan.nivio.output.Icon;
import de.bonndan.nivio.output.IconService;
import de.bonndan.nivio.output.LocalServer;
import de.bonndan.nivio.util.Color;
import de.bonndan.nivio.output.*;
import de.bonndan.nivio.util.RootPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -26,7 +23,7 @@
import java.util.stream.Stream;

import static de.bonndan.nivio.model.Status.UNKNOWN;
import static de.bonndan.nivio.util.Color.GRAY;
import static de.bonndan.nivio.output.Color.getGroupColor;

public class FinalGraph {

Expand Down Expand Up @@ -64,7 +61,7 @@ public mxGraph render(AllGroupsGraph allGroupsGraph, Map<String, GroupGraph> sub

Optional<Item> serviceItem = subgraphs.get(groupName).getServiceVertexesWithRelativeOffset().entrySet().stream()
.findFirst().map(serviceItemmxPointEntry -> (Item) serviceItemmxPointEntry.getKey());
LandscapeImpl landscape = serviceItem.map(service -> service.getLandscape()).orElse(null); //TODO inefficient
LandscapeImpl landscape = serviceItem.map(Item::getLandscape).orElse(null); //TODO inefficient
mxGeometry groupGeo = mxCell.getGeometry();
mxCell groupContainer = (mxCell) graph.insertVertex(
graph.getDefaultParent(),
Expand Down Expand Up @@ -291,7 +288,7 @@ private String getDataFlowStyle(Item item) {

private String getGroupStyle(String groupName, String groupColor) {

String lightened = de.bonndan.nivio.util.Color.lighten(groupColor);
String lightened = Color.lighten(groupColor);
String style = "type=group;groupColor=" + groupColor + ";"
+ "strokeColor=" + groupColor + ";"
+ "strokeWidth=1;"
Expand Down Expand Up @@ -328,18 +325,4 @@ private String getStrokeColor(Item itemImplItem) {
return mxConstants.STYLE_STROKECOLOR + "=#" + groupColor + ";";
}

private String getGroupColor(Item item) {
if (item.getGroup() == null || item.getGroup().startsWith(Groups.COMMON))
return GRAY;

return getGroupColor(item.getGroup(), item.getLandscape());
}

private String getGroupColor(String name, LandscapeImpl landscape) {

GroupItem group = landscape.getGroups().getOrDefault(name, Group.DEFAULT_GROUP);

return Optional.ofNullable(group.getColor())
.orElse(de.bonndan.nivio.util.Color.nameToRGB(name, Color.DARKGRAY));
}
}
Loading

0 comments on commit 8a59535

Please sign in to comment.