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 java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

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 COMPRESSServlet 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
	{
		//String title = "Servlet Compress";
		
		//String doctype = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"; // DOCTYPE XHTML1.0
		//String doctype = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Strict//EN\"\"http://www.w3.org/TR/html4/strict.dtd\"> "; // DOCTYPE HTML 4.0
		
		String nomZip = "Fichier.zip";
		
		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();
					if (fileItem.isFormField())
					{
						out.println("<b>Form field : </b>" + fileItem.getFieldName() + " = " + fileItem.getString() + "<br/>");
						if(fileItem.getFieldName().compareTo("nomZip")==0) nomZip =	fileItem.getString()+".zip";
					}
					else
					{
						out.println("<b>File:</b><br />\n<pre>" + fileItem.getString() + "</pre><br/>");
						File dest = new
						File(System.getProperty("wtp.deploy")+request.getContextPath(),nomZip);
						FileOutputStream fos = new FileOutputStream(dest);
						ZipOutputStream zos = new ZipOutputStream(fos);
						zos.putNextEntry(new ZipEntry("Fichier.txt")); // New entrée dans le ZIP
						zos.write(fileItem.get()); // Valeur de cette entrée(notre fichier texte)
						zos.closeEntry(); // Fin de cette entrée.
						zos.close();
						fos.close();
						out.println("<a	href=\"" + System.getProperty("wtp.deploy") + request.getContextPath() + "/"+nomZip+"\">URL du fichier Zippé</a>");
					}
				}
			}
			
			catch (FileUploadException e)
				{
					out.println("Impossible d'upload ce fichier!");
					e.printStackTrace();
				}
			
		out.close();
		}
	}
}