From f39a4af90ef2b089cbd7fcd91e5a60bd397cfdae Mon Sep 17 00:00:00 2001
From: Achraf <aai@kereval.com>
Date: Sun, 15 May 2022 22:10:44 +0200
Subject: [PATCH] System Testing: Add GenerationConfiguration class

---
 .../application/ValidatorGenerator.java       |  12 ++
 .../interlay/GenerationConfiguration.java     | 104 ++++++++++++++++++
 .../interlay/ValidatorGeneratorImpl.java      |  20 +++-
 3 files changed, 134 insertions(+), 2 deletions(-)
 create mode 100644 hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/GenerationConfiguration.java

diff --git a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/application/ValidatorGenerator.java b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/application/ValidatorGenerator.java
index 89f64b1..4be62ea 100644
--- a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/application/ValidatorGenerator.java
+++ b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/application/ValidatorGenerator.java
@@ -2,11 +2,21 @@ package net.ihe.gazelle.goctests.application;
 
 import net.ihe.gazelle.goctests.application.exceptions.ValidatorGenerationException;
 import net.ihe.gazelle.goctests.application.models.GeneratedValidator;
+import net.ihe.gazelle.goctests.interlay.GenerationConfiguration;
 
 import java.net.URL;
 
 public interface ValidatorGenerator {
 
+
+    /**
+     * Generate Model Based Validator with {@link GenerationConfiguration} parameter
+     * @param generationConfiguration object holding all generation configuration
+     * @return GeneratedValidator, the model definition of the validator
+     * @throws ValidatorGenerationException
+     */
+    GeneratedValidator generateValidator(GenerationConfiguration generationConfiguration) throws ValidatorGenerationException;
+
     /**
      * Generate Model Based Validator with String parameters
      * @param bbr The path to the BBR file (XML)
@@ -31,4 +41,6 @@ public interface ValidatorGenerator {
      */
     GeneratedValidator generateValidator(URL bbrURL) throws ValidatorGenerationException;
 
+
+
 }
diff --git a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/GenerationConfiguration.java b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/GenerationConfiguration.java
new file mode 100644
index 0000000..89646b4
--- /dev/null
+++ b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/GenerationConfiguration.java
@@ -0,0 +1,104 @@
+package net.ihe.gazelle.goctests.interlay;
+
+import java.net.URL;
+
+public class GenerationConfiguration {
+
+    private URL bbrUrl;
+
+    private String outputFolder;
+
+    private String mvn;
+
+    private Boolean ignoreTemplateIdRequirements = Boolean.FALSE;
+
+    private Boolean ignoreCdaBasicRequirements = Boolean.FALSE;
+
+    private Boolean ignoreChoicesPredicates = Boolean.FALSE;
+
+    private String serviceName;
+
+    private String versionLabel;
+
+
+    public GenerationConfiguration(URL bbrUrl, String outputFolder, String mvn) {
+        this.bbrUrl = bbrUrl;
+        this.outputFolder = outputFolder;
+        this.mvn = mvn;
+    }
+
+    public GenerationConfiguration(URL bbrUrl, String outputFolder, String mvn, Boolean ignoreTemplateIdRequirements,
+                                   Boolean ignoreCdaBasicRequirements, Boolean ignoreChoicesPredicates, String serviceName) {
+        this.bbrUrl = bbrUrl;
+        this.outputFolder = outputFolder;
+        this.mvn = mvn;
+        this.ignoreTemplateIdRequirements = ignoreTemplateIdRequirements;
+        this.ignoreCdaBasicRequirements = ignoreCdaBasicRequirements;
+        this.ignoreChoicesPredicates = ignoreChoicesPredicates;
+        this.serviceName = serviceName;
+    }
+
+    public URL getBbrUrl() {
+        return bbrUrl;
+    }
+
+    public void setBbrUrl(URL bbrUrl) {
+        this.bbrUrl = bbrUrl;
+    }
+
+    public String getOutputFolder() {
+        return outputFolder;
+    }
+
+    public void setOutputFolder(String outputFolder) {
+        this.outputFolder = outputFolder;
+    }
+
+    public String getMvn() {
+        return mvn;
+    }
+
+    public void setMvn(String mvn) {
+        this.mvn = mvn;
+    }
+
+    public Boolean isIgnoreTemplateIdRequirements() {
+        return ignoreTemplateIdRequirements;
+    }
+
+    public void setIgnoreTemplateIdRequirements(Boolean ignoreTemplateIdRequirements) {
+        this.ignoreTemplateIdRequirements = ignoreTemplateIdRequirements;
+    }
+
+    public Boolean isIgnoreCdaBasicRequirements() {
+        return ignoreCdaBasicRequirements;
+    }
+
+    public void setIgnoreCdaBasicRequirements(Boolean ignoreCdaBasicRequirements) {
+        this.ignoreCdaBasicRequirements = ignoreCdaBasicRequirements;
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public Boolean isIgnoreChoicesPredicates() {
+        return ignoreChoicesPredicates;
+    }
+
+    public void setIgnoreChoicesPredicates(Boolean ignoreChoicesPredicates) {
+        this.ignoreChoicesPredicates = ignoreChoicesPredicates;
+    }
+
+    public String getVersionLabel() {
+        return versionLabel;
+    }
+
+    public void setVersionLabel(String versionLabel) {
+        this.versionLabel = versionLabel;
+    }
+}
diff --git a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/ValidatorGeneratorImpl.java b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/ValidatorGeneratorImpl.java
index 5657113..321225c 100644
--- a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/ValidatorGeneratorImpl.java
+++ b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/ValidatorGeneratorImpl.java
@@ -20,14 +20,24 @@ public class ValidatorGeneratorImpl implements ValidatorGenerator {
 
 
     @Override
-    public GeneratedValidator generateValidator(URL bbrUrl, String outputFolder, String mvn) throws ValidatorGenerationException {
+    public GeneratedValidator generateValidator(GenerationConfiguration generationConfiguration) throws ValidatorGenerationException {
 
         System.out.println("Start generation for test");
 
+        String outputFolder = generationConfiguration.getOutputFolder();
+        URL bbrUrl = generationConfiguration.getBbrUrl();
+        String mvn = generationConfiguration.getMvn();
+
+        Boolean ignoreTemplateIdRequirements = generationConfiguration.isIgnoreTemplateIdRequirements();
+        Boolean ignoreCdaBasicRequirements = generationConfiguration.isIgnoreCdaBasicRequirements();
+        Boolean ignoreChoicesPredicates = generationConfiguration.isIgnoreChoicesPredicates();
+        String serviceName = generationConfiguration.getServiceName();
+        String versionLabel = generationConfiguration.getVersionLabel();
 
         //Run GOC
         GOCExecutor gocExecutor = new GOCExecutor(outputFolder);
-        ValidatorConfiguration validatorConfiguration = gocExecutor.execute(new StreamBBRResource(bbrUrl),mvn);
+        ValidatorConfiguration validatorConfiguration = gocExecutor.execute(new StreamBBRResource(bbrUrl),mvn,
+                versionLabel, ignoreTemplateIdRequirements, ignoreCdaBasicRequirements, serviceName, ignoreChoicesPredicates);
 
         StringBuilder logPath = new StringBuilder(outputFolder)
                 .append("/").append(GeneratedValidator.ROOT_LOG_DIRECTORY)
@@ -53,6 +63,12 @@ public class ValidatorGeneratorImpl implements ValidatorGenerator {
         }
 
         return validator;
+    }
+
+    @Override
+    public GeneratedValidator generateValidator(URL bbrUrl, String outputFolder, String mvn) throws ValidatorGenerationException {
+        GenerationConfiguration generationConfiguration = new GenerationConfiguration(bbrUrl, outputFolder, mvn);
+        return this.generateValidator(generationConfiguration);
 
     }
 
-- 
GitLab