diff options
Diffstat (limited to 'calamus-engine/src/main/java/io/trygvis/calamus/engine/domain')
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); + } +} |