diff --git a/pom.xml b/pom.xml index e7756b5..c153d72 100644 --- a/pom.xml +++ b/pom.xml @@ -14,11 +14,11 @@ - 11 - 11 + 17 + 17 - \ No newline at end of file + diff --git a/simple-plugin/pom.xml b/simple-plugin/pom.xml index 080eca8..9875c33 100644 --- a/simple-plugin/pom.xml +++ b/simple-plugin/pom.xml @@ -27,7 +27,7 @@ org.ehrbase.openehr bom - 0.21.0-SNAPSHOT + 0.28.0-SNAPSHOT pom import @@ -56,46 +56,44 @@ provided + org.apache.maven.plugins - maven-jar-plugin - 2.4 + maven-assembly-plugin + 3.1.0 + + src/main/assembly/assembly.xml + + ${project.artifactId}-${project.version}-plugin + false + false + + true + true + ${plugin.id} - ${plugin.class} ${plugin.version} ${plugin.provider} + ${plugin.class} ${plugin.dependencies} - - - org.apache.maven.plugins - maven-shade-plugin - 3.3.0 - - - // explicitly include all dependencies not in ehrbase in the jar. - - dummy - - - + make-assembly package - shade + single - - \ No newline at end of file + diff --git a/simple-plugin/src/main/assembly/assembly.xml b/simple-plugin/src/main/assembly/assembly.xml new file mode 100644 index 0000000..024836a --- /dev/null +++ b/simple-plugin/src/main/assembly/assembly.xml @@ -0,0 +1,19 @@ + + plugin + + jar + + false + + + + true + true + runtime + / + true + + + + + \ No newline at end of file diff --git a/simple-plugin/src/main/java/org/ehrbase/example_plugin/CompositionListener3.java b/simple-plugin/src/main/java/org/ehrbase/example_plugin/CompositionListener3.java index 1dd278c..968c39f 100644 --- a/simple-plugin/src/main/java/org/ehrbase/example_plugin/CompositionListener3.java +++ b/simple-plugin/src/main/java/org/ehrbase/example_plugin/CompositionListener3.java @@ -1,18 +1,28 @@ package org.ehrbase.example_plugin; +import com.nedap.archie.rm.composition.Composition; +import java.util.Optional; +import java.util.UUID; +import java.util.function.Function; +import org.ehrbase.plugin.dto.CompositionIdWithVersionAndEhrId; +import org.ehrbase.plugin.dto.CompositionVersionIdWithEhrId; import org.ehrbase.plugin.dto.CompositionWithEhrId; -import org.ehrbase.plugin.extensionpoints.AbstractCompositionExtensionPoint; +import org.ehrbase.plugin.dto.CompositionWithEhrIdAndPreviousVersion; +import org.ehrbase.plugin.extensionpoints.CompositionExtensionPoint; +import org.ehrbase.plugin.extensionpoints.ExtensionPointHelper; import org.pf4j.Extension; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; -import java.util.UUID; - /** * @author Stefan Spiska */ +@Order(0) @Extension -public class CompositionListener3 extends AbstractCompositionExtensionPoint { +public class CompositionListener3 implements CompositionExtensionPoint { + private static final Logger log = LoggerFactory.getLogger(CompositionListener3.class); private ExampleComponent ExampleComponent; @@ -22,17 +32,80 @@ public CompositionListener3(ExampleComponent ExampleComponent) { this.ExampleComponent = ExampleComponent; } - @Override public CompositionWithEhrId beforeCreation(CompositionWithEhrId input) { - System.out.println("Before Creation CompositionListener3"); + log.info("Before Creation CompositionListener3"); ExampleComponent.add( - input.getComposition()); + input.getComposition()); return input; } - @Override public UUID afterCreation(UUID output) { - System.out.println("After Creation CompositionListener3"); - return super.afterCreation(output); + log.info("After Creation CompositionListener3"); + return output; + } + + @Override + public UUID aroundCreation(CompositionWithEhrId input, Function chain) { + log.info("Around Creation start CompositionListener3"); + UUID uuid = ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeCreation, this::afterCreation); + log.info("Around Creation end CompositionListener3"); + return uuid; + } + + public CompositionWithEhrIdAndPreviousVersion beforeUpdate(CompositionWithEhrIdAndPreviousVersion input) { + log.info("Before Update CompositionListener3"); + return input; + } + + public UUID afterUpdate(UUID output) { + log.info("After Update CompositionListener3"); + return output; + } + + @Override + public UUID aroundUpdate(CompositionWithEhrIdAndPreviousVersion input, + Function chain) { + log.info("Around Update start CompositionListener3"); + UUID uuid = ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeUpdate, this::afterUpdate); + log.info("Around Update end CompositionListener3"); + return uuid; + } + + public CompositionVersionIdWithEhrId beforeDelete(CompositionVersionIdWithEhrId input) { + log.info("Before Delete CompositionListener3"); + return input; + } + + public Void afterDelete(Void v) { + log.info("After Delete CompositionListener3"); + return v; + } + + @Override + public Void aroundDelete(CompositionVersionIdWithEhrId input, Function chain) { + log.info("Around Delete start CompositionListener3"); + Void unused = ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeDelete, this::afterDelete); + log.info("Around Delete end CompositionListener3"); + return unused; + } + + public CompositionIdWithVersionAndEhrId beforeRetrieve(CompositionIdWithVersionAndEhrId input) { + log.info("Before Retrieve CompositionListener3"); + return input; + } + + public Optional afterRetrieve(Optional output) { + log.info("After Retrieve CompositionListener3"); + return output; + } + + @Override + public Optional aroundRetrieve(CompositionIdWithVersionAndEhrId input, + Function> chain) { + log.info("Around Retrieve start CompositionListener3"); + Optional composition = + ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeRetrieve, this::afterRetrieve); + log.info("Around Retrieve end CompositionListener3"); + return composition; } } diff --git a/simple-plugin/src/main/java/org/ehrbase/example_plugin/CompositionListener4.java b/simple-plugin/src/main/java/org/ehrbase/example_plugin/CompositionListener4.java new file mode 100644 index 0000000..bbb9d97 --- /dev/null +++ b/simple-plugin/src/main/java/org/ehrbase/example_plugin/CompositionListener4.java @@ -0,0 +1,95 @@ +package org.ehrbase.example_plugin; + +import com.nedap.archie.rm.composition.Composition; +import java.util.Optional; +import java.util.UUID; +import java.util.function.Function; +import org.ehrbase.plugin.dto.CompositionIdWithVersionAndEhrId; +import org.ehrbase.plugin.dto.CompositionVersionIdWithEhrId; +import org.ehrbase.plugin.dto.CompositionWithEhrId; +import org.ehrbase.plugin.dto.CompositionWithEhrIdAndPreviousVersion; +import org.ehrbase.plugin.extensionpoints.CompositionExtensionPoint; +import org.ehrbase.plugin.extensionpoints.ExtensionPointHelper; +import org.pf4j.Extension; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.PriorityOrdered; + +/** + * @author Stefan Spiska + */ + +@Extension +public class CompositionListener4 implements CompositionExtensionPoint, PriorityOrdered { + private static final Logger log = LoggerFactory.getLogger(CompositionListener4.class); + + @Override + public int getOrder() { + return 0; + } + + public CompositionWithEhrId beforeCreation(CompositionWithEhrId input) { + log.info("Before Creation CompositionListener4"); + return input; + } + + @Override + public UUID aroundCreation(CompositionWithEhrId input, Function chain) { + log.info("Around Creation start CompositionListener4"); + UUID uuid = ExtensionPointHelper.before(input, chain, this::beforeCreation); + log.info("Around Creation end CompositionListener4"); + return uuid; + } + + public UUID afterUpdate(UUID output) { + log.info("After Update CompositionListener4"); + return output; + } + + @Override + public UUID aroundUpdate(CompositionWithEhrIdAndPreviousVersion input, + Function chain) { + log.info("Around Update start CompositionListener4"); + UUID uuid = ExtensionPointHelper.after(input, chain, this::afterUpdate); + log.info("Around Update end CompositionListener4"); + return uuid; + } + + public CompositionVersionIdWithEhrId beforeDelete(CompositionVersionIdWithEhrId input) { + log.info("Before Delete CompositionListener4"); + return input; + } + + public Void afterDelete(Void v) { + log.info("After Delete CompositionListener4"); + return v; + } + + @Override + public Void aroundDelete(CompositionVersionIdWithEhrId input, Function chain) { + log.info("Around Delete start CompositionListener4"); + Void unused = ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeDelete, this::afterDelete); + log.info("Around Delete end CompositionListener4"); + return unused; + } + + public CompositionIdWithVersionAndEhrId beforeRetrieve(CompositionIdWithVersionAndEhrId input) { + log.info("Before Retrieve CompositionListener4"); + return input; + } + + public Optional afterRetrieve(Optional output) { + log.info("After Retrieve CompositionListener4"); + return output; + } + + @Override + public Optional aroundRetrieve(CompositionIdWithVersionAndEhrId input, + Function> chain) { + log.info("Around Retrieve start CompositionListener4"); + Optional composition = + ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeRetrieve, this::afterRetrieve); + log.info("Around Retrieve end CompositionListener4"); + return composition; + } +} diff --git a/simple-plugin/src/main/java/org/ehrbase/example_plugin/EhrListener1.java b/simple-plugin/src/main/java/org/ehrbase/example_plugin/EhrListener1.java new file mode 100644 index 0000000..005b1c3 --- /dev/null +++ b/simple-plugin/src/main/java/org/ehrbase/example_plugin/EhrListener1.java @@ -0,0 +1,81 @@ +package org.ehrbase.example_plugin; + +import com.nedap.archie.rm.changecontrol.OriginalVersion; +import com.nedap.archie.rm.ehr.EhrStatus; +import java.util.Optional; +import java.util.UUID; +import java.util.function.Function; +import org.ehrbase.plugin.dto.EhrStatusVersionRequestParameters; +import org.ehrbase.plugin.dto.EhrStatusWithEhrId; +import org.ehrbase.plugin.extensionpoints.EhrExtensionPoint; +import org.ehrbase.plugin.extensionpoints.ExtensionPointHelper; +import org.pf4j.Extension; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Stefan Spiska + */ +@Extension +public class EhrListener1 implements EhrExtensionPoint { + private static final Logger log = LoggerFactory.getLogger(EhrListener1.class); + + public EhrStatusWithEhrId beforeCreation(EhrStatusWithEhrId input) { + log.info("Before Creation EhrListener1"); + return input; + } + + public UUID afterCreation(UUID output) { + log.info("After Creation EhrListener1"); + return output; + } + + @Override + public UUID aroundCreation(EhrStatusWithEhrId input, Function chain) { + log.info("Around Creation start EhrListener1"); + UUID uuid = ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeCreation, this::afterCreation); + log.info("Around Creation end EhrListener1"); + return uuid; + } + + public EhrStatusWithEhrId beforeUpdate(EhrStatusWithEhrId input) { + log.info("Before Update EhrListener1"); + return input; + } + + public UUID afterUpdate(UUID output) { + log.info("After Update EhrListener1"); + return output; + } + + @Override + public UUID aroundUpdate(EhrStatusWithEhrId input, + Function chain) { + log.info("Around Update start EhrListener1"); + UUID uuid = ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeUpdate, this::afterUpdate); + log.info("Around Update end EhrListener1"); + return uuid; + } + + + public EhrStatusVersionRequestParameters beforeRetrieveAtVersion(EhrStatusVersionRequestParameters input) { + log.info("Before Retrieve EhrListener1"); + return input; + } + + public Optional> afterRetrieveAtVersion(Optional> output) { + log.info("After Retrieve EhrListener1"); + return output; + } + + @Override + public Optional> aroundRetrieveAtVersion(EhrStatusVersionRequestParameters input, + Function>> chain) { + log.info("Around Retrieve start EhrListener1"); + Optional> ehrStatusVersion = + ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeRetrieveAtVersion, this::afterRetrieveAtVersion); + log.info("Around Retrieve end EhrListener1"); + return ehrStatusVersion; + } +} diff --git a/simple-plugin/src/main/java/org/ehrbase/example_plugin/QueryListener1.java b/simple-plugin/src/main/java/org/ehrbase/example_plugin/QueryListener1.java new file mode 100644 index 0000000..4a10960 --- /dev/null +++ b/simple-plugin/src/main/java/org/ehrbase/example_plugin/QueryListener1.java @@ -0,0 +1,34 @@ +package org.ehrbase.example_plugin; + +import java.util.function.Function; +import org.ehrbase.openehr.sdk.response.dto.ehrscape.QueryResultDto; +import org.ehrbase.plugin.dto.QueryWithParameters; +import org.ehrbase.plugin.extensionpoints.ExtensionPointHelper; +import org.ehrbase.plugin.extensionpoints.QueryExtensionPoint; +import org.pf4j.Extension; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Extension +public class QueryListener1 implements QueryExtensionPoint { + private static final Logger log = LoggerFactory.getLogger(QueryListener1.class); + + public QueryWithParameters beforeQueryExecution(QueryWithParameters input) { + log.info("Before Query Exec QueryListener1"); + return input; + } + + public QueryResultDto afterQueryExecution(QueryResultDto output) { + log.info("After Query Exec QueryListener1"); + return output; + } + + @Override + public QueryResultDto aroundQueryExecution(QueryWithParameters input, Function chain) { + log.info("Around Query Exec start QueryListener1"); + QueryResultDto queryResultDto = + ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeQueryExecution, this::afterQueryExecution); + log.info("Around Query Exec end QueryListener1"); + return queryResultDto; + } +} diff --git a/simple-plugin/src/main/java/org/ehrbase/example_plugin/TemplateListener1.java b/simple-plugin/src/main/java/org/ehrbase/example_plugin/TemplateListener1.java new file mode 100644 index 0000000..f1f3f7a --- /dev/null +++ b/simple-plugin/src/main/java/org/ehrbase/example_plugin/TemplateListener1.java @@ -0,0 +1,32 @@ +package org.ehrbase.example_plugin; + +import java.util.function.Function; +import org.ehrbase.plugin.extensionpoints.ExtensionPointHelper; +import org.ehrbase.plugin.extensionpoints.TemplateExtensionPoint; +import org.openehr.schemas.v1.OPERATIONALTEMPLATE; +import org.pf4j.Extension; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Extension +public class TemplateListener1 implements TemplateExtensionPoint { + private static final Logger log = LoggerFactory.getLogger(TemplateListener1.class); + + public OPERATIONALTEMPLATE beforeCreation(OPERATIONALTEMPLATE input) { + log.info("Before Template Creation TemplateListener1"); + return input; + } + + public String afterCreation(String output) { + log.info("After Template Creation TemplateListener1"); + return output; + } + + @Override + public String aroundCreation(OPERATIONALTEMPLATE input, Function chain) { + log.info("Around Template Creation start TemplateListener1"); + String s = ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeCreation, this::afterCreation); + log.info("Around Template Creation end TemplateListener1"); + return s; + } +} diff --git a/simple-plugin/src/main/java/org/ehrbase/example_plugin/TestProperty.java b/simple-plugin/src/main/java/org/ehrbase/example_plugin/TestProperty.java index 0016085..659b14a 100644 --- a/simple-plugin/src/main/java/org/ehrbase/example_plugin/TestProperty.java +++ b/simple-plugin/src/main/java/org/ehrbase/example_plugin/TestProperty.java @@ -5,6 +5,7 @@ /** * @author Stefan Spiska */ +// Read from ${plugin-config-dir}\${plugin.id}\test.yml @ConfigurationProperties(prefix = "test.sub1") public class TestProperty { diff --git a/web-plugin/pom.xml b/web-plugin/pom.xml index 8290021..e235877 100644 --- a/web-plugin/pom.xml +++ b/web-plugin/pom.xml @@ -24,10 +24,11 @@ + org.ehrbase.openehr bom - 0.21.0-SNAPSHOT + 0.28.0-SNAPSHOT pom import @@ -36,7 +37,6 @@ - org.springframework spring-context @@ -55,42 +55,50 @@ service provided + + + + com.indvd00m.ascii.render + ascii-render + 2.2.0 + + + + org.apache.maven.plugins - maven-jar-plugin - 2.4 + maven-assembly-plugin + 3.1.0 + + src/main/assembly/assembly.xml + + ${project.artifactId}-${project.version}-plugin + false + false + + true + true + ${plugin.id} - ${plugin.class} ${plugin.version} ${plugin.provider} + ${plugin.class} ${plugin.dependencies} - - - org.apache.maven.plugins - maven-shade-plugin - 3.3.0 - - - // explicitly include all dependencies not in ehrbase in the jar. - - dummy - - - + make-assembly package - shade + single @@ -98,4 +106,4 @@ - \ No newline at end of file + diff --git a/web-plugin/src/main/assembly/assembly.xml b/web-plugin/src/main/assembly/assembly.xml new file mode 100644 index 0000000..024836a --- /dev/null +++ b/web-plugin/src/main/assembly/assembly.xml @@ -0,0 +1,19 @@ + + plugin + + jar + + false + + + + true + true + runtime + / + true + + + + + \ No newline at end of file diff --git a/web-plugin/src/main/java/org/ehrbase/example_web_plugin/CompositionListener1.java b/web-plugin/src/main/java/org/ehrbase/example_web_plugin/CompositionListener1.java index b1b0e25..7c804f1 100644 --- a/web-plugin/src/main/java/org/ehrbase/example_web_plugin/CompositionListener1.java +++ b/web-plugin/src/main/java/org/ehrbase/example_web_plugin/CompositionListener1.java @@ -1,19 +1,23 @@ package org.ehrbase.example_web_plugin; +import java.util.UUID; +import java.util.function.Function; import org.ehrbase.plugin.dto.CompositionWithEhrId; -import org.ehrbase.plugin.extensionpoints.AbstractCompositionExtensionPoint; +import org.ehrbase.plugin.extensionpoints.CompositionExtensionPoint; +import org.ehrbase.plugin.extensionpoints.ExtensionPointHelper; import org.pf4j.Extension; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; -import java.util.UUID; - /** * @author Stefan Spiska */ @Extension @Order(1) -public class CompositionListener1 extends AbstractCompositionExtensionPoint { +public class CompositionListener1 implements CompositionExtensionPoint { + private static final Logger log = LoggerFactory.getLogger(CompositionListener1.class); private ExampleService exampleService; @@ -23,17 +27,20 @@ public CompositionListener1(ExampleService exampleService) { this.exampleService = exampleService; } - @Override public CompositionWithEhrId beforeCreation(CompositionWithEhrId input) { - System.out.println("Before Creation CompositionListener1"); + log.info("Before Creation CompositionListener1"); exampleService.add( - input.getComposition()); + input.getComposition()); return input; } - @Override public UUID afterCreation(UUID output) { - System.out.println("After Creation CompositionListener1"); - return super.afterCreation(output); + log.info("After Creation CompositionListener1"); + return output; + } + + @Override + public UUID aroundCreation(CompositionWithEhrId input, Function chain) { + return ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeCreation, this::afterCreation); } } diff --git a/web-plugin/src/main/java/org/ehrbase/example_web_plugin/CompositionListener2.java b/web-plugin/src/main/java/org/ehrbase/example_web_plugin/CompositionListener2.java index 2ef6ddb..d936c37 100644 --- a/web-plugin/src/main/java/org/ehrbase/example_web_plugin/CompositionListener2.java +++ b/web-plugin/src/main/java/org/ehrbase/example_web_plugin/CompositionListener2.java @@ -1,33 +1,35 @@ package org.ehrbase.example_web_plugin; +import java.util.UUID; +import java.util.function.Function; import org.ehrbase.plugin.dto.CompositionWithEhrId; -import org.ehrbase.plugin.extensionpoints.AbstractCompositionExtensionPoint; +import org.ehrbase.plugin.extensionpoints.CompositionExtensionPoint; +import org.ehrbase.plugin.extensionpoints.ExtensionPointHelper; import org.pf4j.Extension; -import org.springframework.beans.factory.annotation.Autowired; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.core.annotation.Order; -import java.util.UUID; - /** * @author Stefan Spiska */ @Extension @Order(2) -public class CompositionListener2 extends AbstractCompositionExtensionPoint { - - - +public class CompositionListener2 implements CompositionExtensionPoint { + private static final Logger log = LoggerFactory.getLogger(CompositionListener2.class); - @Override public CompositionWithEhrId beforeCreation(CompositionWithEhrId input) { - System.out.println("Before Creation CompositionListener2"); - + log.info("Before Creation CompositionListener2"); return input; } - @Override public UUID afterCreation(UUID output) { - System.out.println("After Creation CompositionListener2"); - return super.afterCreation(output); + log.info("After Creation CompositionListener2"); + return output; + } + + @Override + public UUID aroundCreation(CompositionWithEhrId input, Function chain) { + return ExtensionPointHelper.beforeAndAfter(input, chain, this::beforeCreation, this::afterCreation); } } diff --git a/web-plugin/src/main/java/org/ehrbase/example_web_plugin/ExampleController.java b/web-plugin/src/main/java/org/ehrbase/example_web_plugin/ExampleController.java index 3f57022..cdf6482 100644 --- a/web-plugin/src/main/java/org/ehrbase/example_web_plugin/ExampleController.java +++ b/web-plugin/src/main/java/org/ehrbase/example_web_plugin/ExampleController.java @@ -1,5 +1,11 @@ package org.ehrbase.example_web_plugin; +import com.indvd00m.ascii.render.Render; +import com.indvd00m.ascii.render.api.ICanvas; +import com.indvd00m.ascii.render.api.IContextBuilder; +import com.indvd00m.ascii.render.api.IRender; +import com.indvd00m.ascii.render.elements.Label; +import com.indvd00m.ascii.render.elements.Rectangle; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -32,5 +38,15 @@ public ResponseEntity greetMVC(){ @PostConstruct public void init(){ System.out.println(this.getClass().getName()); + + IRender render = new Render(); + IContextBuilder builder = render.newBuilder(); + builder.width(80).height(10); + builder.element(new Rectangle()); + builder.element( + new Label("com.indvd00m.ascii.render:ascii-render included in plugin jar", 1, 4, 80)); + ICanvas canvas = render.render(builder.build()); + String s = canvas.getText(); + System.out.println(s); } } diff --git a/web-plugin/src/main/java/org/ehrbase/example_web_plugin/TestProperty.java b/web-plugin/src/main/java/org/ehrbase/example_web_plugin/TestProperty.java index 2dde3f0..98cf3b9 100644 --- a/web-plugin/src/main/java/org/ehrbase/example_web_plugin/TestProperty.java +++ b/web-plugin/src/main/java/org/ehrbase/example_web_plugin/TestProperty.java @@ -5,6 +5,8 @@ /** * @author Stefan Spiska */ +// Read from ${plugin-config-dir}\${plugin.id}\test.json and +// Read from ${plugin-config-dir}\${plugin.id}\test.xml @ConfigurationProperties(prefix = "test") public class TestProperty {