From d649e362801136c90fc0c82e191b2c244539c0c4 Mon Sep 17 00:00:00 2001
From: Gabriel Landais <glandais@kereval.com>
Date: Mon, 4 Apr 2011 09:50:40 +0000
Subject: [PATCH] Detection of message type when validating using
 Proxy->EVSClient

git-svn-id: https://scm.gforge.inria.fr/authscm/ycadoret/svn/gazelle/Maven/gazelle-proxy/trunk@21399 356b4b1a-1d2b-0410-8bf1-ffa24008f01e
---
 .../proxy/model/message/AbstractMessage.java        |  3 +++
 .../gazelle/proxy/model/message/DicomMessage.java   |  5 +++++
 .../ihe/gazelle/proxy/model/message/HL7Message.java |  9 +++++++--
 .../gazelle/proxy/model/message/HTTPMessage.java    | 12 +++++++++---
 .../gazelle/proxy/model/message/SyslogMessage.java  |  5 +++++
 .../net/ihe/gazelle/proxy/action/MessageBean.java   | 13 +++++++++----
 6 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/AbstractMessage.java b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/AbstractMessage.java
index 05d927c7..9b67f4f2 100644
--- a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/AbstractMessage.java
+++ b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/AbstractMessage.java
@@ -35,6 +35,7 @@ import javax.persistence.Table;
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
+import net.ihe.gazelle.proxy.enums.ChannelType;
 import net.ihe.gazelle.proxy.enums.ProxySide;
 import net.ihe.gazelle.proxy.model.Channel;
 
@@ -112,6 +113,8 @@ public abstract class AbstractMessage {
 		}
 	}
 
+	public abstract ChannelType getChannelType();
+
 	public void setMessageReceivedAsString(String messageReceived) {
 		this.messageReceived = messageReceived.getBytes(UTF_8);
 	}
diff --git a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/DicomMessage.java b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/DicomMessage.java
index 49d16991..e3f33be9 100644
--- a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/DicomMessage.java
+++ b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/DicomMessage.java
@@ -32,6 +32,7 @@ import javax.persistence.EntityManager;
 import javax.persistence.FetchType;
 import javax.persistence.Transient;
 
+import net.ihe.gazelle.proxy.enums.ChannelType;
 import net.ihe.gazelle.proxy.enums.ProxySide;
 import net.ihe.gazelle.proxy.model.Channel;
 import net.ihe.gazelle.proxy.model.CommandFieldValues;
@@ -96,6 +97,10 @@ public class DicomMessage extends AbstractMessage implements java.io.Serializabl
 	@Transient
 	private AttributeList attributeList;
 
+	public ChannelType getChannelType() {
+		return ChannelType.DICOM;
+	}
+	
 	// Constructors
 
 	private static Map<String, String> getMapOfDicomUID(EntityManager entityManager) {
diff --git a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/HL7Message.java b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/HL7Message.java
index 513e717c..87dc592e 100644
--- a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/HL7Message.java
+++ b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/HL7Message.java
@@ -17,6 +17,7 @@ package net.ihe.gazelle.proxy.model.message;
 
 import javax.persistence.Entity;
 
+import net.ihe.gazelle.proxy.enums.ChannelType;
 import net.ihe.gazelle.proxy.enums.ProxySide;
 import net.ihe.gazelle.proxy.model.Channel;
 
@@ -43,9 +44,13 @@ public class HL7Message extends AbstractMessage implements java.io.Serializable
 		super();
 	}
 
-	public HL7Message(Channel channel, String fromIP, Integer localPort, Integer proxyPort, String toIP, Integer remotePort,
-			Integer channelId, ProxySide proxySide) {
+	public HL7Message(Channel channel, String fromIP, Integer localPort, Integer proxyPort, String toIP,
+			Integer remotePort, Integer channelId, ProxySide proxySide) {
 		super(channel, fromIP, localPort, proxyPort, toIP, remotePort, channelId, proxySide);
 	}
 
+	public ChannelType getChannelType() {
+		return ChannelType.HL7;
+	}
+
 }
diff --git a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/HTTPMessage.java b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/HTTPMessage.java
index 7852d076..7d64f0fa 100644
--- a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/HTTPMessage.java
+++ b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/HTTPMessage.java
@@ -6,6 +6,7 @@ import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.OneToOne;
 
+import net.ihe.gazelle.proxy.enums.ChannelType;
 import net.ihe.gazelle.proxy.enums.ProxySide;
 import net.ihe.gazelle.proxy.model.Channel;
 
@@ -15,7 +16,8 @@ import org.jboss.seam.annotations.Name;
 @Name("httpMessage")
 public class HTTPMessage extends AbstractMessage {
 
-//	private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(HTTPMessage.class);
+	// private static org.apache.log4j.Logger log =
+	// org.apache.log4j.Logger.getLogger(HTTPMessage.class);
 
 	@Column(name = "http_headers")
 	@Basic(fetch = FetchType.LAZY)
@@ -30,8 +32,8 @@ public class HTTPMessage extends AbstractMessage {
 	@OneToOne(fetch = FetchType.LAZY)
 	private HTTPMessage matchingMessage;
 
-	public HTTPMessage(Channel channel, String fromIP, Integer localPort, Integer proxyPort, String toIP, Integer inRemotePort,
-			Integer channelId, ProxySide proxySide) {
+	public HTTPMessage(Channel channel, String fromIP, Integer localPort, Integer proxyPort, String toIP,
+			Integer inRemotePort, Integer channelId, ProxySide proxySide) {
 		super(channel, fromIP, localPort, proxyPort, toIP, inRemotePort, channelId, proxySide);
 	}
 
@@ -80,4 +82,8 @@ public class HTTPMessage extends AbstractMessage {
 		return messageType;
 	}
 
+	public ChannelType getChannelType() {
+		return ChannelType.HTTP;
+	}
+
 }
diff --git a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/SyslogMessage.java b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/SyslogMessage.java
index ef47be16..cfff8668 100644
--- a/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/SyslogMessage.java
+++ b/gazelle-proxy-datamodel/src/main/java/net/ihe/gazelle/proxy/model/message/SyslogMessage.java
@@ -17,6 +17,7 @@ package net.ihe.gazelle.proxy.model.message;
 
 import javax.persistence.Entity;
 
+import net.ihe.gazelle.proxy.enums.ChannelType;
 import net.ihe.gazelle.proxy.enums.ProxySide;
 import net.ihe.gazelle.proxy.model.Channel;
 
@@ -48,4 +49,8 @@ public class SyslogMessage extends AbstractMessage implements java.io.Serializab
 		super(channel, fromIP, localPort, proxyPort, toIP, remotePort, channelId, proxySide);
 	}
 
+	public ChannelType getChannelType() {
+		return ChannelType.SYSLOG;
+	}
+
 }
diff --git a/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/action/MessageBean.java b/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/action/MessageBean.java
index 0c9bef83..5cfd97f6 100644
--- a/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/action/MessageBean.java
+++ b/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/action/MessageBean.java
@@ -26,6 +26,7 @@ import org.apache.commons.httpclient.methods.multipart.FilePart;
 import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
 import org.apache.commons.httpclient.methods.multipart.Part;
 import org.apache.commons.httpclient.methods.multipart.PartSource;
+import org.apache.commons.httpclient.methods.multipart.StringPart;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.tika.mime.MediaType;
 import org.jboss.seam.ScopeType;
@@ -172,7 +173,11 @@ public class MessageBean {
 		// First send the file to EVSClient
 		HttpClient client = new HttpClient();
 		PostMethod filePost = new PostMethod(Preferences.getProperty("evsclient.url") + "upload");
-		PartSource partSource = new ByteArrayPartSource("message", message.getMessageReceived());
+		
+		// use the type as file name
+		String messageType = message.getChannelType().name();
+
+		PartSource partSource = new ByteArrayPartSource(messageType, message.getMessageReceived());		
 		Part[] parts = { new FilePart("message", partSource) };
 		filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams()));
 		int status = -1;
@@ -186,11 +191,11 @@ public class MessageBean {
 		boolean fail = false;
 		if (status == HttpStatus.SC_OK) {
 			try {
-				String fileName = filePost.getResponseBodyAsString();
-				String encodedFileName = URLEncoder.encode(fileName, "UTF-8");
+				String key = filePost.getResponseBodyAsString();
+				String encodedKey = URLEncoder.encode(key, "UTF-8");
 
 				HttpServletResponse response = (HttpServletResponse) extCtx.getResponse();
-				String url = Preferences.getProperty("evsclient.url") + "validate.seam?filename=" + encodedFileName;
+				String url = Preferences.getProperty("evsclient.url") + "validate.seam?file=" + encodedKey;
 
 				response.sendRedirect(url);
 			} catch (IOException e) {
-- 
GitLab