From 07dde8de9d6040e60bf59e238444f620dba330c0 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 13 Apr 2014 00:04:13 +0200 Subject: wip --- .../engine/NexusNewArtifactMessageListener.java | 46 +++++++++++++++++++--- 1 file changed, 41 insertions(+), 5 deletions(-) (limited to 'calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java') 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 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; -- cgit v1.2.3