summaryrefslogtreecommitdiff
path: root/calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java')
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java46
1 files changed, 41 insertions, 5 deletions
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java b/calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java
index f3f9f05..22b2c4c 100644
--- a/calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java
+++ b/calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java
@@ -1,5 +1,10 @@
package io.trygvis.engine;
+import io.trygvis.engine.domain.Artifact;
+import io.trygvis.engine.domain.Process;
+import io.trygvis.engine.domain.ProcessTrigger;
+import org.kie.api.runtime.Environment;
+import org.kie.api.runtime.EnvironmentName;
import org.kie.internal.runtime.StatefulKnowledgeSession;
import org.slf4j.Logger;
@@ -7,6 +12,11 @@ import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.NoResultException;
+import javax.persistence.TypedQuery;
import java.io.IOException;
import java.io.StringReader;
import java.util.Properties;
@@ -16,17 +26,16 @@ import static org.slf4j.LoggerFactory.getLogger;
public class NexusNewArtifactMessageListener implements MessageListener {
private final Logger log = getLogger(getClass());
+ private final EntityManagerFactory entityManagerFactory;
private final StatefulKnowledgeSession session;
- public NexusNewArtifactMessageListener(StatefulKnowledgeSession session) {
+ public NexusNewArtifactMessageListener(EntityManagerFactory entityManagerFactory, StatefulKnowledgeSession session) {
+ this.entityManagerFactory = entityManagerFactory;
this.session = session;
}
@Override
public void onMessage(Message message) {
- System.out.println("NexusNewArtifactMessageListener.onMessage");
-
- System.out.println("message.getClass() = " + message.getClass());
if (!(message instanceof TextMessage)) {
return;
}
@@ -43,7 +52,34 @@ public class NexusNewArtifactMessageListener implements MessageListener {
String classifier = p.getProperty("classifier");
String extension = p.getProperty("extension");
- log.info("New artifact: groupId={}, artifactId={}, version={}, classifier={}, extension={}", groupId, artifactId, version, classifier, extension);
+ log.info("Artifact event: groupId={}, artifactId={}, version={}, classifier={}, extension={}", groupId, artifactId, version, classifier, extension);
+
+ // Check for any processes that will be started because of this
+ EntityManager entityManager = entityManagerFactory.createEntityManager();
+
+ TypedQuery<Artifact> query = entityManager.createQuery("FROM Artifact WHERE groupId=:groupId AND artifactId=:artifactId AND version=:version AND extension=:extension", Artifact.class);
+ query.setParameter("groupId", groupId);
+ query.setParameter("artifactId", artifactId);
+ query.setParameter("version", version);
+ query.setParameter("extension", extension);
+ Artifact artifact;
+ try {
+ artifact = query.getSingleResult();
+ } catch (NoResultException e) {
+ log.info("New artifact!");
+ artifact = new Artifact(groupId, artifactId, version, classifier, extension);
+ entityManager.persist(artifact);
+ }
+
+ for (Process process : entityManager.createQuery("FROM Process", Process.class).getResultList()) {
+ System.out.println("process.name = " + process.getName());
+
+ for (ProcessTrigger trigger : process.getProcessTriggers()) {
+ System.out.println("trigger.getMvel() = " + trigger.getMvel());
+ boolean match = trigger.matches(artifact);
+ System.out.println("match = " + match);
+ }
+ }
/*
String type;