import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet
{
	private static final long serialVersionUID = 1L;
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
	{
		
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws
	IOException
	{				
		response.setContentType("text/html");
		
		PrintWriter out = response.getWriter();
		
		if (ServletFileUpload.isMultipartContent(request))
		{
			
			DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
			fileItemFactory.setSizeThreshold(40960);
			ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
			servletFileUpload.setSizeMax(81920);
			try
			{
				List<?> fileItemsList = servletFileUpload.parseRequest(request);
				Iterator<?> it = fileItemsList.iterator();
				while (it.hasNext())
				{					
					DiskFileItem fileItem = (DiskFileItem)it.next();
					int k = fileItem.getName().lastIndexOf('\\');
					int j = fileItem.getName().lastIndexOf('.');
					String str = fileItem.getName().substring(k+1, j);
					
					String nomXml = str+".xml";					
					
					if (fileItem.isFormField())
					{
						
						out.println("<b>Form field : </b>" + fileItem.getFieldName() + " = " + fileItem.getString() + "<br/>");
						if(fileItem.getFieldName().compareTo("nomXml")==0) nomXml =	fileItem.getString()+".xml";
					}
					else
					{
						File dest = new	File(System.getProperty("wtp.deploy")+request.getContextPath(),nomXml);
						System.out.println(System.getProperty("wtp.deploy"));
						FileOutputStream fos = new FileOutputStream(dest);
						fos.write(fileItem.get());
						fos.close();
						out.println("<a	href=\"" +System.getProperty("wtp.deploy")+request.getContextPath()+"/"+nomXml+"\"> URL du fichier</a>");
					}
				}
			}
			
			catch (FileUploadException e)
				{
					out.println("Impossible d'uploader ce fichier!");
					e.printStackTrace();
				}
			
		out.close();
		}
	}
}