From 8762a63cdea97bf88e908db4f1d2bd70fa8a6917 Mon Sep 17 00:00:00 2001 From: Stefan Kapferer Date: Tue, 13 Aug 2024 14:05:53 +0200 Subject: [PATCH] Add Freemarker template to generate CSV with stakeholders --- .../freemarker/csv-files/stakeholders.csv.ftl | 14 ++++++++++++++ .../freemarker/FreemarkerTextGenerator.java | 6 ++++++ 2 files changed, 20 insertions(+) create mode 100644 org.contextmapper.dsl.ui/samples/freemarker/csv-files/stakeholders.csv.ftl diff --git a/org.contextmapper.dsl.ui/samples/freemarker/csv-files/stakeholders.csv.ftl b/org.contextmapper.dsl.ui/samples/freemarker/csv-files/stakeholders.csv.ftl new file mode 100644 index 00000000..441e736d --- /dev/null +++ b/org.contextmapper.dsl.ui/samples/freemarker/csv-files/stakeholders.csv.ftl @@ -0,0 +1,14 @@ +Context,Stakeholder Group,Stakeholder,description,influence,interest +<#list stakeholders as stakeholderContainer> +<#assign stakeholderGroups = stakeholderContainer.stakeholders?filter(s -> instanceOf(s, StakeholderGroup))> +<#assign singleStakeholders = stakeholderContainer.stakeholders?filter(s -> instanceOf(s, Stakeholder))> +<#if stakeholderContainer.contexts?has_content><#assign contextDescription = stakeholderContainer.contexts?map(c -> c.name)?join("; ")><#else><#assign contextDescription = ""> +<#list stakeholderGroups as sg> +<#list sg.stakeholders as stakeholder> +${contextDescription},${sg.name},${stakeholder.name},${stakeholder.description!""},${stakeholder.influence!""},${stakeholder.interest!""} + + +<#list singleStakeholders as stakeholder> +${contextDescription},,${stakeholder.name},${stakeholder.description!""},${stakeholder.influence!""},${stakeholder.interest!""} + + \ No newline at end of file diff --git a/org.contextmapper.dsl/src/org/contextmapper/dsl/generator/freemarker/FreemarkerTextGenerator.java b/org.contextmapper.dsl/src/org/contextmapper/dsl/generator/freemarker/FreemarkerTextGenerator.java index 5d68f887..27b2a3a8 100644 --- a/org.contextmapper.dsl/src/org/contextmapper/dsl/generator/freemarker/FreemarkerTextGenerator.java +++ b/org.contextmapper.dsl/src/org/contextmapper/dsl/generator/freemarker/FreemarkerTextGenerator.java @@ -46,6 +46,8 @@ import org.contextmapper.dsl.contextMappingDSL.SingleCommandInvokation; import org.contextmapper.dsl.contextMappingDSL.SingleEventProduction; import org.contextmapper.dsl.contextMappingDSL.SingleOperationInvokation; +import org.contextmapper.dsl.contextMappingDSL.Stakeholder; +import org.contextmapper.dsl.contextMappingDSL.StakeholderGroup; import org.contextmapper.dsl.contextMappingDSL.Subdomain; import org.contextmapper.dsl.contextMappingDSL.SymmetricRelationship; import org.contextmapper.dsl.contextMappingDSL.UpstreamDownstreamRelationship; @@ -108,6 +110,8 @@ private Map prepareModelData(ContextMappingModel contextMappingM dataMap.put("imports", contextMappingModel.getImports()); dataMap.put("useCases", contextMappingModel.getUserRequirements()); dataMap.put("userStories", contextMappingModel.getUserRequirements()); + dataMap.put("stakeholders", contextMappingModel.getStakeholders()); + dataMap.put("valueRegisters", contextMappingModel.getValueRegisters()); String timeStamp = new SimpleDateFormat("dd.MM.YYYY HH:mm:ss z").format(new Date()); dataMap.put("timestamp", timeStamp); // for backwards compatibility dataMap.put("timeStamp", timeStamp); @@ -172,6 +176,8 @@ private Map createClassMap() { classMap.put("CommandInvokation", CommandInvokation.class); classMap.put("OperationInvokation", OperationInvokation.class); classMap.put("ExclusiveAlternativeStateTransitionTarget", ExclusiveAlternativeStateTransitionTarget.class); + classMap.put("StakeholderGroup", StakeholderGroup.class); + classMap.put("Stakeholder", Stakeholder.class); return classMap; }