raimund@1600: package de.intevation.flys.client.server;
raimund@1600: 
raimund@1600: import java.io.InputStream;
raimund@1600: import java.io.IOException;
raimund@1600: import java.io.OutputStream;
raimund@1600: 
raimund@1600: import org.w3c.dom.Document;
raimund@1600: import org.w3c.dom.Element;
raimund@1600: 
raimund@1600: import org.apache.log4j.Logger;
raimund@1600: 
raimund@1600: import javax.servlet.http.HttpServlet;
raimund@1600: import javax.servlet.http.HttpServletRequest;
raimund@1600: import javax.servlet.http.HttpServletResponse;
raimund@1600: 
raimund@1600: import de.intevation.artifacts.common.ArtifactNamespaceContext;
raimund@1600: import de.intevation.artifacts.common.utils.XMLUtils;
raimund@1600: 
raimund@1600: import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
raimund@1600: import de.intevation.artifacts.httpclient.http.HttpClient;
raimund@1600: import de.intevation.artifacts.httpclient.http.HttpClientImpl;
raimund@1600: import de.intevation.artifacts.httpclient.http.response.StreamResponseHandler;
raimund@1600: 
raimund@1600: 
raimund@1600: /**
raimund@1600:  * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
raimund@1600:  */
raimund@1600: public class DischargeInfoXML
raimund@1600: extends      HttpServlet
raimund@1600: {
raimund@1600:     private static final Logger logger = Logger.getLogger(DischargeInfoXML.class);
raimund@1600: 
raimund@1600: 
raimund@1600:     public static final String ERROR_NO_DISTANCEINFO_FOUND =
raimund@1600:         "error_no_dischargeinfo_found";
raimund@1600: 
raimund@1600: 
raimund@1600:     public void doGet(HttpServletRequest req, HttpServletResponse resp) {
raimund@1600:         logger.info("DischargeInfoXML.doGet");
raimund@1600: 
raimund@1600:         String url  = getServletContext().getInitParameter("server-url");
raimund@1600: 
raimund@1600:         String gauge = req.getParameter("gauge");
raimund@1600: 
raimund@1600:         Document doc = XMLUtils.newDocument();
raimund@1600: 
raimund@1600:         XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
raimund@1600:             doc,
raimund@1600:             ArtifactNamespaceContext.NAMESPACE_URI,
raimund@1600:             ArtifactNamespaceContext.NAMESPACE_PREFIX);
raimund@1600: 
raimund@1600:         Element gaugeEl = ec.create("gauge");
raimund@1600:         gaugeEl.setTextContent(gauge);
raimund@1600: 
raimund@1600:         doc.appendChild(gaugeEl);
raimund@1600: 
raimund@1600:         HttpClient client = new HttpClientImpl(url);
raimund@1600: 
raimund@1600:         try {
raimund@1600:             InputStream in = (InputStream) client.callService(
raimund@1600:                 url, "dischargeinfo", doc, new StreamResponseHandler());
raimund@1600: 
raimund@1600:             OutputStream out = resp.getOutputStream();
raimund@1600: 
raimund@1600:             byte[] b = new byte[4096];
raimund@1600:             int i;
raimund@1600:             while ((i = in.read(b)) >= 0) {
raimund@1600:                 out.write(b, 0, i);
raimund@1600:             }
raimund@1600: 
raimund@1600:             out.flush();
raimund@1600:             out.close();
raimund@1600:         }
raimund@1600:         catch (ConnectionException ce) {
raimund@1600:             logger.error(ce, ce);
raimund@1600:         }
raimund@1600:         catch (IOException ioe) {
raimund@1600:             logger.error(ioe, ioe);
raimund@1600:         }
raimund@1600:     }
raimund@1600: }
raimund@1600: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :