package com.infopulse.efs.webdavconnection;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.ServletConfig;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.util.Enumeration;
import java.io.File;
import java.io.IOException;
import java.io.FileWriter;
import org.apache.commons.httpclient.*;
import org.apache.webdav.lib.*;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.util.*;


public class TestServlet extends HttpServlet{

  public void init() throws ServletException {
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException{
    managePutFile(request, response);
  }

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{
    managePutFile(request, response);
  }

  public void managePutFile(HttpServletRequest request, HttpServletResponse response) throws ServletException{

    String name = "Mp71.exe";
    String path = "D:\\downloads";
    String newname = "dontwork.exe";

    response.setContentType("text/html");

    try {


      PrintWriter p = response.getWriter();
      p.print("<html>");


      HttpURL http_url = new HttpURL("http://maik:9000/webdav");

      http_url.setUserInfo("mylogin", "mypasswd");

      WebdavResource webdav_resource = new WebdavResource(http_url);
      webdav_resource.setPath("/webdav/"+newname);
      
      HttpClient client = webdav_resource.getSessionInstance(webdav_resource.getHttpURL());
      PutMethod method = new PutMethod(webdav_resource.getPath());

      File temp_file =  new File("D:\\Temp", newname);
      BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(path+"/"+name)));

      PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(temp_file)));
      
      while (in.ready())
        out.write(in.read());
        
      in.close();
      out.flush();
      out.close();

      method.sendData(temp_file);

      client.setDebug(1);
      client.executeMethod(method);
      temp_file.delete();
      p.println("sucess!");
      p.print("</html>");
      p.flush();
      p.close();
    }
    catch(Exception ex){
      try{
        PrintWriter p = response.getWriter();
        ex.printStackTrace(p);
        p.print("</html>");
        p.flush();
        p.close();
      }catch(IOException es){
          System.err.println("**************** p error!! *****************");
          ex.printStackTrace();
      }
    }
  }




//  private static ContextElement getHtmlParameters(HttpServletRequest request) {
//      String name;
//      String value;
//      ContextElement htmlParameters = new ContextElement();
//
//      Enumeration enum=request.getParameterNames();
//      while (enum.hasMoreElements()) {
//        name=(String)enum.nextElement();
//        value=request.getParameter(name);
//        htmlParameters.setText(name, value);
//      }
//
//      return htmlParameters;
//  }




}