Skip to content

Commit

Permalink
VIM generator improvements (#358)
Browse files Browse the repository at this point in the history
  • Loading branch information
stefan-ka authored Aug 15, 2024
1 parent e25f5c3 commit b43b0db
Show file tree
Hide file tree
Showing 7 changed files with 106 additions and 71 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@

Stakeholders {
StakeholderGroup Customers_and_Shoppers {
Stakeholder Shoppers_in_Emergency_Situations
Stakeholder Shoppers_in_Emergency_Situations {
description = "just for testing"
}
Stakeholder Others
}
StakeholderGroup Delivery_Staff_of_Suppliers
Expand All @@ -15,7 +17,7 @@ ValueRegister SD_Values {
demonstrator "delivery staff's freedom might suffer because of work-life-balance"

Value Freedom {
Stakeholder Customers_and_Shoppers {
Stakeholder Shoppers_in_Emergency_Situations {
priority HIGH
impact MEDIUM
consequences
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,11 @@ public void canCreateValueImpactMapDiagramDiagramWithoutBoundedContext() throws
+ "}" + System.lineSeparator()
+ "</style>" + System.lineSeparator()
+ System.lineSeparator()
+ "* System of Interest (SOI)" + System.lineSeparator()
+ "** Drivers" + System.lineSeparator()
+ "***:<b>WorkLifeBalance" + System.lineSeparator()
+ "*:Feature or System Characteristic:" + System.lineSeparator()
+ System.lineSeparator()
+ "<b>System of Interest (SOI)</b>;" + System.lineSeparator()
+ "** <b>Drivers</b>" + System.lineSeparator()
+ "***:<b>WorkLifeBalance</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact HIGH" + System.lineSeparator()
Expand Down Expand Up @@ -94,18 +96,20 @@ public void canCreateSimpleValueImpactMapDiagram() throws IOException {
+ "}" + System.lineSeparator()
+ "</style>" + System.lineSeparator()
+ System.lineSeparator()
+ "* SameDayDelivery" + System.lineSeparator()
+ "** Drivers" + System.lineSeparator()
+ "***:<b>WorkLifeBalance" + System.lineSeparator()
+ "*:Feature or System Characteristic:" + System.lineSeparator()
+ System.lineSeparator()
+ "<b>SameDayDelivery</b>;" + System.lineSeparator()
+ "** <b>Drivers</b>" + System.lineSeparator()
+ "***:<b>WorkLifeBalance</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact HIGH" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "SDD will harm work-life-balance of drivers" + System.lineSeparator()
+ "-- Demonstrators --" + System.lineSeparator()
+ "* Drivers value a healthy work-life-balance" + System.lineSeparator()
+ "* <i>Drivers value a healthy work-life-balance</i>" + System.lineSeparator()
+ "-- Negative Consequences --" + System.lineSeparator()
+ "<i>SDD will harm work-life-balance of drivers</i>" + System.lineSeparator()
+ "; <<red>>" + System.lineSeparator()
+ "**** ACT: hire more drivers" + System.lineSeparator()
+ "**** <b>ACT</b>: hire more drivers" + System.lineSeparator()
+ "@endmindmap" + System.lineSeparator(), valueImpactMapDiagram);
}

Expand Down Expand Up @@ -135,17 +139,19 @@ public void canCreateSimpleValueImpactMapDiagram4ValueCluster() throws IOExcepti
+ "}" + System.lineSeparator()
+ "</style>" + System.lineSeparator()
+ System.lineSeparator()
+ "* System of Interest (SOI)" + System.lineSeparator()
+ "** Customers_and_Shoppers" + System.lineSeparator()
+ "***:<b>AUTONOMY" + System.lineSeparator()
+ "*:Feature or System Characteristic:" + System.lineSeparator()
+ System.lineSeparator()
+ "<b>System of Interest (SOI)</b>;" + System.lineSeparator()
+ "** <b>Customers_and_Shoppers</b>" + System.lineSeparator()
+ "***:<b>AUTONOMY</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact MEDIUM" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "increased freedom" + System.lineSeparator()
+ "-- Demonstrators --" + System.lineSeparator()
+ "* customer values potentially increased freedom" + System.lineSeparator()
+ "* delivery staff's freedom might suffer because of work-life-balance" + System.lineSeparator()
+ "* <i>customer values potentially increased freedom</i>" + System.lineSeparator()
+ "* <i>delivery staff's freedom might suffer because of work-life-balance</i>" + System.lineSeparator()
+ "-- Positive Consequences --" + System.lineSeparator()
+ "<i>increased freedom</i>" + System.lineSeparator()
+ "; <<green>>" + System.lineSeparator()
+ "@endmindmap" + System.lineSeparator(), valueImpactMapDiagram);
}
Expand Down Expand Up @@ -176,29 +182,31 @@ public void canRespectValuesInValueClusters() throws IOException {
+ "}" + System.lineSeparator()
+ "</style>" + System.lineSeparator()
+ System.lineSeparator()
+ "* System of Interest (SOI)" + System.lineSeparator()
+ "** Delivery_Staff_of_Suppliers" + System.lineSeparator()
+ "***:<b>Freedom" + System.lineSeparator()
+ "*:Feature or System Characteristic:" + System.lineSeparator()
+ System.lineSeparator()
+ "<b>System of Interest (SOI)</b>;" + System.lineSeparator()
+ "** <b>Customers_and_Shoppers</b>" + System.lineSeparator()
+ "***:<b>Freedom</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact HIGH" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "work-life-balance" + System.lineSeparator()
+ "; <<red>>" + System.lineSeparator()
+ "***:<b>Freedom" + System.lineSeparator()
+ "Impact MEDIUM" + System.lineSeparator()
+ "-- Positive Consequences --" + System.lineSeparator()
+ "<i>increased freedom</i>" + System.lineSeparator()
+ "; <<green>>" + System.lineSeparator()
+ "** <b>Delivery_Staff_of_Suppliers</b>" + System.lineSeparator()
+ "***:<b>Freedom</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact HIGH" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "tbd" + System.lineSeparator()
+ "; <<green>>" + System.lineSeparator()
+ "** Customers_and_Shoppers" + System.lineSeparator()
+ "***:<b>Freedom" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "-- Negative Consequences --" + System.lineSeparator()
+ "<i>work-life-balance</i>" + System.lineSeparator()
+ "; <<red>>" + System.lineSeparator()
+ "***:<b>Freedom</b>" + System.lineSeparator()
+ "----"+ System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact MEDIUM" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "increased freedom" + System.lineSeparator()
+ "Impact HIGH" + System.lineSeparator()
+ "-- Positive Consequences --" + System.lineSeparator()
+ "<i>tbd</i>" + System.lineSeparator()
+ "; <<green>>" + System.lineSeparator()
+ "@endmindmap" + System.lineSeparator(), valueImpactMapDiagram);
}
Expand Down Expand Up @@ -229,36 +237,41 @@ public void canHandleRecurringStakeholders() throws IOException {
+ "}" + System.lineSeparator()
+ "</style>" + System.lineSeparator()
+ System.lineSeparator()
+ "* System of Interest (SOI)" + System.lineSeparator()
+ "** Delivery_Staff_of_Suppliers" + System.lineSeparator()
+ "***:<b>Freedom" + System.lineSeparator()
+ "*:Feature or System Characteristic:" + System.lineSeparator()
+ System.lineSeparator()
+ "<b>System of Interest (SOI)</b>;" + System.lineSeparator()
+ "**:<b>Shoppers_in_Emergency_Situations</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "just for testing;" + System.lineSeparator()
+ "***:<b>Freedom</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact HIGH" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "work-life-balance" + System.lineSeparator()
+ "; <<red>>" + System.lineSeparator()
+ "***:<b>Freedom" + System.lineSeparator()
+ "Impact MEDIUM" + System.lineSeparator()
+ "-- Positive Consequences --" + System.lineSeparator()
+ "<i>increased freedom</i>" + System.lineSeparator()
+ "; <<green>>" + System.lineSeparator()
+ "** <b>Delivery_Staff_of_Suppliers</b>" + System.lineSeparator()
+ "***:<b>Freedom</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact HIGH" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "tbd" + System.lineSeparator()
+ "; <<green>>" + System.lineSeparator()
+ "** Customers_and_Shoppers" + System.lineSeparator()
+ "***:<b>Freedom" + System.lineSeparator()
+ "-- Negative Consequences --" + System.lineSeparator()
+ "<i>work-life-balance</i>" + System.lineSeparator()
+ "; <<red>>" + System.lineSeparator()
+ "***:<b>Freedom</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact MEDIUM" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "increased freedom" + System.lineSeparator()
+ "Impact HIGH" + System.lineSeparator()
+ "-- Positive Consequences --" + System.lineSeparator()
+ "<i>tbd</i>" + System.lineSeparator()
+ "; <<green>>" + System.lineSeparator()
+ "***:<b>Sustainability" + System.lineSeparator()
+ "** <b>Customers_and_Shoppers</b>" + System.lineSeparator()
+ "***:<b>Sustainability</b>" + System.lineSeparator()
+ "----" + System.lineSeparator()
+ "Priority HIGH" + System.lineSeparator()
+ "Impact LOW" + System.lineSeparator()
+ "-- Consequence --" + System.lineSeparator()
+ "fostering unsustainable behavior (always ordering last minute)" + System.lineSeparator()
+ "-- Negative Consequences --" + System.lineSeparator()
+ "<i>fostering unsustainable behavior (always ordering last minute)</i>" + System.lineSeparator()
+ "; <<red>>" + System.lineSeparator()
+ "@endmindmap" + System.lineSeparator(), valueImpactMapDiagram);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ class StakeholderTest {

@Test
void ensureStakeholdersWithSameNameAreEqual() {
Stakeholder stakeholder1 = new Stakeholder("User");
Stakeholder stakeholder2 = new Stakeholder("User");
Stakeholder stakeholder1 = new Stakeholder("User", "desc1");
Stakeholder stakeholder2 = new Stakeholder("User", "desc2");

assertTrue(stakeholder1.equals(stakeholder2));
assertTrue(stakeholder1.equals(stakeholder1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,13 @@ private void mapValue(final org.contextmapper.dsl.contextMappingDSL.Value value)

private void mapStakeholderElicitedValue(final String valueName, final List<String> demonstrators,
final ValueElicitation elicitation) {
Stakeholder stakeholder = soi.getOrCreateStakeholder(elicitation.getStakeholder().getName());
String stakeholderDescription = elicitation
.getStakeholder() instanceof org.contextmapper.dsl.contextMappingDSL.Stakeholder
? ((org.contextmapper.dsl.contextMappingDSL.Stakeholder) elicitation.getStakeholder())
.getDescription()
: null;
Stakeholder stakeholder = soi.getOrCreateStakeholder(elicitation.getStakeholder().getName(),
stakeholderDescription);
if (elicitation.getConsequences().isEmpty()) {
Value value = createValueObject(valueName, demonstrators, elicitation);
value.setConsequenceType(ConsequenceOnValue.NEUTRAL);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@
public class Stakeholder {

private final String name;
private final String description;
private final List<Value> values;

public Stakeholder(final String name) {
public Stakeholder(final String name, final String description) {
this.name = name;
this.description = description;
this.values = Lists.newArrayList();
}

Expand All @@ -42,6 +44,10 @@ public List<Value> getValues() {
public void addValue(final Value value) {
this.values.add(value);
}

public String getDescription() {
return description;
}

@Override
public int hashCode() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class SystemOfInterest {

public SystemOfInterest(final String name) {
this.name = name;
this.stakeholders = Sets.newHashSet();
this.stakeholders = Sets.newLinkedHashSet();
}

public String getName() {
Expand All @@ -39,12 +39,12 @@ public Set<Stakeholder> getStakeholders() {
return Collections.unmodifiableSet(stakeholders);
}

public Stakeholder getOrCreateStakeholder(final String name) {
public Stakeholder getOrCreateStakeholder(final String name, final String description) {
Optional<Stakeholder> optStakeholder = stakeholders.stream().filter(s -> s.getName().equals(name)).findFirst();
if (optStakeholder.isPresent())
return optStakeholder.get();

Stakeholder stakeholder = new Stakeholder(name);
Stakeholder stakeholder = new Stakeholder(name, description);
this.stakeholders.add(stakeholder);
return stakeholder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,19 @@ mindmapDiagram {
}
</style>

* ${soi.name}
*:Feature or System Characteristic:

<b>${soi.name}</b>;
<#list soi.stakeholders as stakeholder>
** ${stakeholder.name}
<#if stakeholder.description?has_content>
**:<b>${stakeholder.name}</b>
----
${stakeholder.description};
<#else>
** <b>${stakeholder.name}</b>
</#if>
<#list stakeholder.values as value>
***:<b>${value.name}
***:<b>${value.name}</b>
<#if value.priority?has_content || value.impact?has_content>
----
<#if value.priority?has_content>
Expand All @@ -29,19 +37,19 @@ Priority ${value.priority}
Impact ${value.impact}
</#if>
</#if>
<#if value.consequence?has_content>
-- Consequence --
${value.consequence}
</#if>
<#if value.demonstrators?has_content>
-- Demonstrators --
<#list value.demonstrators as demonstrator>
* ${demonstrator}
* <i>${demonstrator}</i>
</#list>
</#if>
<#if value.consequence?has_content>
-- <#if value.consequenceType == "GOOD">Positive Consequences<#elseif value.consequenceType == "BAD">Negative Consequences<#else>Consequences</#if> --
<i>${value.consequence}</i>
</#if>
;<#if value.consequenceType == "GOOD"> <<green>><#elseif value.consequenceType == "BAD"> <<red>></#if>
<#list value.mitigationActions as mitigationAction>
**** ${mitigationAction.actionType}: ${mitigationAction.action}
**** <b>${mitigationAction.actionType}</b>: ${mitigationAction.action}
</#list>
</#list>
</#list>
Expand Down

0 comments on commit b43b0db

Please sign in to comment.