/******************************************************************************
 * ResponderPROFILE.java
 * ****************************************************************************/

package org.openlaszlo.servlets.responders;

import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;
import org.openlaszlo.compiler.Compiler;
import org.openlaszlo.compiler.CompilationEnvironment;
import org.openlaszlo.utils.LZHttpUtils;
import org.openlaszlo.media.MimeType;
import org.openlaszlo.sc.ScriptCompiler;
import org.openlaszlo.server.LPS;
import org.openlaszlo.utils.FileUtils;
import org.apache.log4j.Logger;

public final class ResponderPROFILE extends Responder
{
  private static Logger mLogger = Logger.getLogger(ResponderPROFILE.class);
  private static OutputStream output;

  protected void respondImpl(HttpServletRequest req, HttpServletResponse res) throws IOException {
    String command = req.getParameter("command");

    if ("data".equals(command)) {
      InputStream input = req.getInputStream();
      byte[] buffer = new byte[1024];
      int b = 0;
      while((b = input.read(buffer)) > 0) {
        output.write(buffer, 0, b);
      }
      respondWithMessage(res, "Data");
    } else if ("open".equals(command)) {
      // getRealPath?
      String uri = LZHttpUtils.getRealPath(mContext, req);
      uri = uri.substring(0, uri.lastIndexOf('.'));
      File file = new File (uri + ".xml");
      mLogger.info("PROFILE_OPEN " + file);
      file.createNewFile();
      output = new FileOutputStream(file);
      respondWithMessage(res, "Open");
    } else if ("close".equals(command)) {
      mLogger.info("PROFILE_CLOSE");
      output.flush();
      output.close();
      respondWithMessage(res, "Closed");
    } else {
      mLogger.error("PROFILE_UNKNOWN " + command);
      respondWithError(res, "Unknown command: " + command, 400);
    }
  }

  public int getMimeType() {
    return MIME_TYPE_XML;
  }
}

/*
 * Copyright 2006 Laszlo Systems, Inc.  All Rights Reserved.  Use is
 * subject to license terms.
 */

