view src/main/java/de/mpiwg/gazetteer/rest/DownloadTabDelimited4File.java @ 102:6a508b605b5f

1. add new page : footer.jsp. 2. embed footer.jsp into other pages.
author Calvin Yeh <cyeh@mpipw-berlin.mpg.com>
date Fri, 29 Sep 2017 16:03:06 +0200
parents a025dd907626
children
line wrap: on
line source

package de.mpiwg.gazetteer.rest;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;

import org.apache.commons.lang.StringUtils;
import org.json.JSONObject;

import de.mpiwg.gazetteer.bo.LGFile;
import de.mpiwg.gazetteer.utils.DataProvider;
import de.mpiwg.gazetteer.utils.FileManager;
import de.mpiwg.gazetteer.utils.HTTPUtils;

public class DownloadTabDelimited4File extends AbstractServletMethod {
	public static String name = "downloadTabDelimited4File";

	public static void execute(HttpServletRequest request, HttpServletResponse response) throws Exception{

		Long fileId = getQueryLongParam(request, "fileId");

		if(fileId != null){
			LGFile file = DataProvider.getInstance().getFile(fileId);
			if(file != null){

				String text = HTTPUtils.getTabDelimitedOfFile(fileId);	// get text as tab-delimited file

				if(StringUtils.isNotEmpty(text)){

					String filename = file.getFileName(); // "112_360452_360453_2015.09.04_12.43.08.924_11.txt";

					//filename extension with csv
					filename = filename.substring(0, filename.length()-3);
					filename += "csv";

					response.setContentType("text/csv; charset=UTF-8");
					response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");

                    byte[] csv = text.getBytes("UTF-8");

                    response.setContentLength( csv.length + 3 );

                    ServletOutputStream aOutputStream = response.getOutputStream();

                    /* Specify the BOM (Byte order Mask) for UTF-8
                     * so that Excel can identify the encoding and open it in the correct format
                     * */
                    aOutputStream.write(new byte[] {(byte)0xef, (byte)0xbb, (byte)0xbf});

                    aOutputStream.write(csv);

                    aOutputStream.flush();

                    aOutputStream.close();

				}


			} else{
				response.setContentType("application/json");
				JSONObject json = new JSONObject();
				json.put("status", "error");
				json.put("message", "File no found (" + fileId + ")");
				PrintWriter out = response.getWriter();
				out.print(json.toString());
				out.flush();
			}
		}else{
			response.setContentType("application/json");
			JSONObject json = new JSONObject();
			json.put("status", "error");
			json.put("message", "Following parameters are mandatory: fileId.");
			PrintWriter out = response.getWriter();
			out.print(json.toString());
			out.flush();
		}
	}

}