summaryrefslogtreecommitdiff
path: root/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain
diff options
context:
space:
mode:
Diffstat (limited to 'calamus-engine/src/main/java/io/trygvis/calamus/engine/domain')
-rw-r--r--calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AbstractEntity.java19
-rw-r--r--calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AppInstance.java7
-rw-r--r--calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AppService.java15
-rw-r--r--calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/Artifact.java89
-rw-r--r--calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/Process.java40
-rw-r--r--calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/ProcessTrigger.java51
6 files changed, 221 insertions, 0 deletions
diff --git a/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AbstractEntity.java b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AbstractEntity.java
new file mode 100644
index 0000000..655b1cc
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AbstractEntity.java
@@ -0,0 +1,19 @@
+package io.trygvis.calamus.engine.domain;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.SequenceGenerator;
+
+@MappedSuperclass
+public abstract class AbstractEntity {
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "calamusSeq")
+ @SequenceGenerator(name = "calamusSeq", sequenceName = "calamus_seq")
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AppInstance.java b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AppInstance.java
new file mode 100644
index 0000000..aa2ea14
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AppInstance.java
@@ -0,0 +1,7 @@
+package io.trygvis.calamus.engine.domain;
+
+public class AppInstance {
+ private String name;
+ private String host;
+ private String path;
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AppService.java b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AppService.java
new file mode 100644
index 0000000..da606a4
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/AppService.java
@@ -0,0 +1,15 @@
+package io.trygvis.calamus.engine.domain;
+
+public class AppService {
+ public void installApp(AppInstance instance) {
+ System.out.println("AppService.installApp");
+ }
+
+ public void restartApp(AppInstance instance) {
+ System.out.println("AppService.restartApp");
+ }
+
+ public void waitForUp(AppInstance instance) {
+ System.out.println("AppService.waitForAppUp");
+ }
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/Artifact.java b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/Artifact.java
new file mode 100644
index 0000000..34631ab
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/Artifact.java
@@ -0,0 +1,89 @@
+package io.trygvis.calamus.engine.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import java.util.Optional;
+
+import static io.trygvis.calamus.engine.domain.Artifact.Level.UNTESTED;
+import static java.util.Optional.ofNullable;
+
+@Entity
+public class Artifact extends AbstractEntity {
+ @Column(length = 100, nullable = false)
+ private String groupId;
+
+ @Column(length = 100, nullable = false)
+ private String artifactId;
+
+ @Column(length = 100, nullable = false)
+ private String version;
+
+ @Column(length = 100)
+ private String classifier;
+
+ @Column(length = 100, nullable = false)
+ private String extension;
+
+ @Column(nullable = false)
+ private Level level;
+
+ @Column(length = 40)
+ private String gitHash;
+
+ public enum Level {
+ UNTESTED
+ }
+
+ protected Artifact() {
+ }
+
+ public Artifact(String groupId, String artifactId, String version, String classifier, String extension) {
+ this.groupId = groupId;
+ this.artifactId = artifactId;
+ this.version = version;
+ this.classifier = classifier;
+ this.extension = extension;
+ this.level = UNTESTED;
+ }
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public String getArtifactId() {
+ return artifactId;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public Optional<String> getClassifier() {
+ return ofNullable(classifier);
+ }
+
+ public String getExtension() {
+ return extension;
+ }
+
+ public Level getLevel() {
+ return level;
+ }
+
+ public String getGitHash() {
+ return gitHash;
+ }
+
+ @Override
+ public String toString() {
+ return "Artifact{" +
+ "groupId='" + groupId + '\'' +
+ ", artifactId='" + artifactId + '\'' +
+ ", version='" + version + '\'' +
+ ", classifier='" + classifier + '\'' +
+ ", extension='" + extension + '\'' +
+ ", level='" + level + '\'' +
+ ", gitHash='" + gitHash + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/Process.java b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/Process.java
new file mode 100644
index 0000000..c1f0b49
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/Process.java
@@ -0,0 +1,40 @@
+package io.trygvis.calamus.engine.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.List;
+
+@Entity
+public class Process extends AbstractEntity {
+
+ @Column(length = 100, nullable = false)
+ private String name;
+
+ @Column(length = 100, nullable = false)
+ private String jbpmProcessId;
+
+ @OneToMany(mappedBy = "process")
+ private List<ProcessTrigger> processTriggers = new ArrayList<>();
+
+ public String getName() {
+ return name;
+ }
+
+ public String getJbpmProcessId() {
+ return jbpmProcessId;
+ }
+
+ public List<ProcessTrigger> getProcessTriggers() {
+ return processTriggers;
+ }
+
+ @Override
+ public String toString() {
+ return "Process{" +
+ "name='" + name + '\'' +
+ ", jbpmProcessId='" + jbpmProcessId + '\'' +
+ "} " + super.toString();
+ }
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/ProcessTrigger.java b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/ProcessTrigger.java
new file mode 100644
index 0000000..b26f6ca
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/calamus/engine/domain/ProcessTrigger.java
@@ -0,0 +1,51 @@
+package io.trygvis.calamus.engine.domain;
+
+import org.mvel2.MVEL;
+import org.mvel2.ParserContext;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ManyToOne;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+@Entity
+public class ProcessTrigger extends AbstractEntity {
+
+ @ManyToOne
+ private Process process;
+
+ @Column(length = 1000)
+ private String mvel;
+
+ transient Serializable expression;
+
+ public Process getProcess() {
+ return process;
+ }
+
+ public String getMvel() {
+ return mvel;
+ }
+
+ // -----------------------------------------------------------------------
+ //
+ // -----------------------------------------------------------------------
+
+ private Serializable getExpression() {
+ if (expression != null) {
+ return expression;
+ }
+ ParserContext ctx = new ParserContext();
+ ctx.setStrongTyping(true);
+ ctx.addInput("artifact", Artifact.class);
+ return expression = MVEL.compileExpression(mvel, ctx);
+ }
+
+ public boolean matches(Artifact artifact) {
+ Map<String, Object> vars = new HashMap<>();
+ vars.put("artifact", artifact);
+ return MVEL.executeExpression(getExpression(), vars, Boolean.class);
+ }
+}