package com.hphoto.server;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLDecoder;
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 com.hphoto.util.LibraryUtil;
public class DownloadProgram extends HttpServlet{
private static final long serialVersionUID = 1L;
private static String path = System.getProperty("java.io.tmpdir");
private static String file = "hphoto.zip";
private String windowsCmd = "hphoto.bat";
private String linuxCmd = "hphoto";
private static String readme = "readme.txt";
private String jar = "hphoto.jar";
public void doGet(HttpServletRequest request,
HttpServletResponse response
) throws IOException{
response.setHeader("Content-Disposition", "attachment; filename=\"" + file + "\"");
response.setContentType("application/octet-stream");
OutputStream out = response.getOutputStream();
ZipOutputStream zipos=new ZipOutputStream(out);
zipos.putNextEntry(new ZipEntry(jar));
InputStream in = new FileInputStream(URLDecoder.decode(DownloadProgram.class.getProtectionDomain().getCodeSource().getLocation().getFile()));
write(in,zipos);
zipos.closeEntry();
zipos.putNextEntry(new ZipEntry(windowsCmd));
in = LibraryUtil.getJarFile(windowsCmd);
write(in,zipos);
zipos.closeEntry();
zipos.putNextEntry(new ZipEntry(linuxCmd));
in = LibraryUtil.getJarFile(linuxCmd);
write(in,zipos);
zipos.closeEntry();
zipos.putNextEntry(new ZipEntry(readme));
in = LibraryUtil.getJarFile(readme);
write(in,zipos);
zipos.closeEntry();
zipos.close();
in.close();
out.close();
}
private static void write(InputStream in,OutputStream out) throws IOException{
if(in == null)
return;
byte[] bytes = new byte[1024 * 10];
for (int n = 0; n != -1; n = in.read(bytes)) {
out.write(bytes, 0, n);
}
out.flush();
in.close();
}
public void doPost(HttpServletRequest request,
HttpServletResponse response
) throws IOException{
doGet(request,response);
}
public static void main(String[] arg) throws IOException{
OutputStream out = new FileOutputStream(file);
ZipOutputStream zipos=new ZipOutputStream(out);
zipos.putNextEntry(new ZipEntry(readme));
//InputStream in = new FileInputStream(URLDecoder.decode(DownloadProgram.class.getProtectionDomain().getCodeSource().getLocation().getFile()));
InputStream in = new FileInputStream(readme);
if(in!=null){
write(in,zipos);
}else{
System.out.println("not input file");
}
zipos.closeEntry();
zipos.close();
}
}