From 32d579c45b0fc8a99e4f9b71164415fa09e2d79f Mon Sep 17 00:00:00 2001
From: wbauer <wbauer@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>
Date: Thu, 9 Oct 2008 15:18:40 +0000
Subject: Introduced SL Request parameters to customize Applet layout

git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@92 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
---
 .../egiz/bku/online/webapp/BKURequestHandler.java  | 136 ++++++++++++++-------
 BKUOnline/src/main/webapp/HTTP-ohne.html           |   6 +
 BKUOnline/src/main/webapp/appletPage.jsp           |   9 +-
 3 files changed, 107 insertions(+), 44 deletions(-)

diff --git a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java
index 544bbc99..6f3b9d7f 100644
--- a/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java
+++ b/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java
@@ -16,6 +16,9 @@
  */
 package at.gv.egiz.bku.online.webapp;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Locale;
@@ -32,6 +35,7 @@ import org.apache.commons.logging.LogFactory;
 import at.gv.egiz.bku.binding.HTTPBindingProcessor;
 import at.gv.egiz.bku.binding.HttpUtil;
 import at.gv.egiz.bku.binding.IdFactory;
+import at.gv.egiz.bku.utils.StreamUtil;
 import at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage;
 
 /**
@@ -40,51 +44,99 @@ import at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage;
  */
 public class BKURequestHandler extends SpringBKUServlet {
 
-	public final static String REDIRECT_URL = "appletPage.jsp";
+  public final static String REDIRECT_URL = "appletPage.jsp";
 
-	protected Log log = LogFactory.getLog(BKURequestHandler.class);
+  protected Log log = LogFactory.getLog(BKURequestHandler.class);
 
-	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
-			throws ServletException, java.io.IOException {
-		log.debug("Got new request");
-		String lang = req.getHeader("Accept-Language");
-		Locale locale = AcceptLanguage.getLocale(lang);
-		log.debug("Using locale: " + locale);
-		HttpSession session = req.getSession();
-		if (session != null) {
-		  log.warn("Already a session with id: "+session.getId()+ " active, deleting this one");
-		  getBindingProcessorManager().removeBindingProcessor(IdFactory.getInstance().createId(session.getId()));
-		}
-		String id = req.getSession(true).getId();
-		log.debug("Using session id: " + id);
-		HTTPBindingProcessor bindingProcessor;
+  private static String getStringFromStream(InputStream is, String encoding) throws IOException {
+    if (is == null) {
+      return null;
+    }
+    if (encoding == null) {
+      encoding = HttpUtil.DEFAULT_CHARSET;
+    }
+    ByteArrayOutputStream os = new ByteArrayOutputStream();
+    StreamUtil.copyStream(is, os);
+    return new String(os.toByteArray(), encoding);
+  }
+  
+  
+  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+      throws ServletException, java.io.IOException {
+    log.debug("Got new request");
+    HttpSession session = req.getSession();
+    String lang = req.getHeader("Accept-Language");
+    Locale locale = AcceptLanguage.getLocale(lang);
+    log.debug("Using locale: " + locale);
 
-		bindingProcessor = (HTTPBindingProcessor) getBindingProcessorManager()
-				.createBindingProcessor(req.getRequestURL().toString(), id, locale);
+    if (session != null) {
+      log.warn("Already a session with id: " + session.getId()
+          + " active, deleting this one");
+      getBindingProcessorManager().removeBindingProcessor(
+          IdFactory.getInstance().createId(session.getId()));
+    }
+    String id = req.getSession(true).getId();
+    log.debug("Using session id: " + id);
+    HTTPBindingProcessor bindingProcessor;
 
-		Map<String, String> headerMap = new HashMap<String, String>();
-		for (Enumeration<String> headerName = req.getHeaderNames(); headerName
-				.hasMoreElements();) {
-			String header = headerName.nextElement();
-			if (header != null) {
-				headerMap.put(header, req.getHeader(header));
-			}
-		}
-		String charset = req.getCharacterEncoding();
-		String contentType = req.getContentType();
-		if (charset != null) {
-			contentType += ";" + charset;
-		}
-		headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType);
-		bindingProcessor.setHTTPHeaders(headerMap);
-		bindingProcessor.consumeRequestStream(req.getInputStream());
-		req.getInputStream().close();
-		getBindingProcessorManager().process(bindingProcessor);
-		resp.sendRedirect(REDIRECT_URL);
-	}
+    bindingProcessor = (HTTPBindingProcessor) getBindingProcessorManager()
+        .createBindingProcessor(req.getRequestURL().toString(), id, locale);
 
-	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
-			throws ServletException, java.io.IOException {
-		doPost(req, resp);
-	}
+    Map<String, String> headerMap = new HashMap<String, String>();
+    for (Enumeration<String> headerName = req.getHeaderNames(); headerName
+        .hasMoreElements();) {
+      String header = headerName.nextElement();
+      if (header != null) {
+        headerMap.put(header, req.getHeader(header));
+      }
+    }
+    String charset = req.getCharacterEncoding();
+    String contentType = req.getContentType();
+    if (charset != null) {
+      contentType += ";" + charset;
+    }
+    headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType);
+    bindingProcessor.setHTTPHeaders(headerMap);
+    bindingProcessor.consumeRequestStream(req.getInputStream());
+    req.getInputStream().close();
+    getBindingProcessorManager().process(bindingProcessor);
+    
+    log.trace("Trying to find applet parameters in request");
+    String width = getStringFromStream(bindingProcessor.getFormData("appletWidth"), charset);
+    String height = getStringFromStream(bindingProcessor.getFormData("appletHeight"), charset);
+    String background = getStringFromStream(bindingProcessor.getFormData("appletBackground"), charset);
+    if (width != null) {
+      try {
+        log.trace("Found applet width parameter: " + width);
+        int wI = Integer.parseInt(width);
+        session.setAttribute("appletWidth", wI);
+      } catch (NumberFormatException nfe) {
+        log.warn(nfe);
+      }
+    }
+    if (height != null) {
+      try {
+        log.trace("Found applet height parameter: " + height);
+        int hI = Integer.parseInt(height);
+        session.setAttribute("appletHeight", hI);
+      } catch (NumberFormatException nfe) {
+        log.warn(nfe);
+      }
+    }
+    if (background != null) {
+      try {
+        log.trace("Found applet background parameter: " + background);
+        session.setAttribute("appletBackground", background);
+      } catch (NumberFormatException nfe) {
+        log.warn(nfe);
+      }
+    }
+
+    resp.sendRedirect(REDIRECT_URL);
+  }
+
+  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+      throws ServletException, java.io.IOException {
+    doPost(req, resp);
+  }
 }
diff --git a/BKUOnline/src/main/webapp/HTTP-ohne.html b/BKUOnline/src/main/webapp/HTTP-ohne.html
index f61081cc..1923113e 100644
--- a/BKUOnline/src/main/webapp/HTTP-ohne.html
+++ b/BKUOnline/src/main/webapp/HTTP-ohne.html
@@ -86,6 +86,12 @@ legend {
 <sl:BinaryFileParameters ContentIsXMLEntity="true" />
 </sl:InfoboxReadRequest>
 -->
+<p><label for="appletWidth">Applet Width</label> <input
+  name="appletWidth" value="190" id="appletWidth">
+<p><label for="appletHeight">Applet Height</label> <input
+  name="appletHeight" value="130" id="appletHeight">
+<p><label for="appletBackground">Applet Background</label> <input
+  name="appletBackground" value="" id="appletBackground">
 
 </textarea></p>
 <!-- 
diff --git a/BKUOnline/src/main/webapp/appletPage.jsp b/BKUOnline/src/main/webapp/appletPage.jsp
index b9225e56..59dc2ad5 100644
--- a/BKUOnline/src/main/webapp/appletPage.jsp
+++ b/BKUOnline/src/main/webapp/appletPage.jsp
@@ -25,6 +25,10 @@
   	<script type="text/javascript" src="js/deployJava.js"></script>
 </head>
 <body>
+<% int width= session.getAttribute("appletWidth") == null ? 190 : (Integer)session.getAttribute("appletWidth");
+   int height=session.getAttribute("appletHeight") == null ? 130 : (Integer)session.getAttribute("appletHeight");
+   String backgroundImg = (String) session.getAttribute("appletBackground");
+%>
 <script>
 	if (!deployJava.versionCheck('1.6.0_04+')) {
 		document
@@ -34,10 +38,11 @@
 			codebase :'applet',
 			code :'at.gv.egiz.bku.online.applet.BKUApplet.class',
 			archive :'BKUApplet-1.0-SNAPSHOT.jar, commons-logging-1.1.1.jar, iaik_jce_me4se-3.04.jar',
-			width :190,
-			height :130
+			width : <%= width %>,
+			height :<%= height %>
 		};
 		var parameters = {
+			background : <%= backgroundImg %>,
 			WSDL_URL :'../stal?wsdl',
 			SessionID : '<%= session.getId() %>',
 			redirectURL : '../bkuResult'
-- 
cgit v1.2.3