package ch.abacus.flow.web.portlets;

import ch.abacus.flow.web.PortletConstants;
import ch.abacus.flow.xmlutils.AbaXMLUtils;
import com.liferay.portal.kernel.servlet.PortletServlet;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class XFormsPortletServlet extends PortletServlet {

  protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
    try {
      ServletInputStream istream = httpServletRequest.getInputStream();
      String data = convertStreamToString(istream);
      httpServletRequest.setAttribute(PortletConstants.ATTR_XFORMS_SUBMIT, data);

    } catch (Exception e) {
      throw new ServletException(e.getMessage());
    }

    super.doPost(httpServletRequest, httpServletResponse);                              
  }

  public static String convertStreamToString(InputStream in) throws Exception {
    InputStreamReader isr = new InputStreamReader(in, AbaXMLUtils.ENCODING_UFT_8);
    BufferedReader reader = new BufferedReader(isr);
    StringBuilder sb = new StringBuilder();
    String line;
    while ((line = reader.readLine()) != null) {
      sb.append(line).append("\n");
    }
    in.close();
    return sb.toString();
  }

}