Mercurial > hg > LGDataverses
view src/main/java/de/mpiwg/gazetteer/servlet/GetDatafile.java @ 12:c2e2d794847f
new: add config.properties file for gazetteer
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Wed, 30 Sep 2015 13:43:54 +0200 |
parents | |
children | be7787c36e58 |
line wrap: on
line source
package de.mpiwg.gazetteer.servlet; import static edu.harvard.iq.dataverse.util.JsfHelper.JH; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.LinkedList; import java.util.List; import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import org.apache.commons.lang.StringUtils; import org.primefaces.json.JSONArray; import org.primefaces.json.JSONException; import org.primefaces.json.JSONObject; import edu.harvard.iq.dataverse.DataFile; import edu.harvard.iq.dataverse.DataFileServiceBean; import edu.harvard.iq.dataverse.FileMetadata; import edu.harvard.iq.dataverse.api.DownloadInfo; import edu.harvard.iq.dataverse.api.DownloadInstance; import edu.harvard.iq.dataverse.authorization.AuthenticationRequest; import edu.harvard.iq.dataverse.authorization.CredentialsAuthenticationProvider; import edu.harvard.iq.dataverse.authorization.exceptions.AuthenticationFailedException; import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser; import edu.harvard.iq.dataverse.export.DDIExportServiceBean; public class GetDatafile extends AbstractMonographServlet{ private static final Logger logger = Logger.getLogger(GetDatafile.class.getName()); @EJB DataFileServiceBean dataFileService; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); JSONObject jsonResponse = new JSONObject(); Long fileId = Long.parseLong(request.getParameter("fileId")); if(fileId != null){ // get datafile by fileId System.out.println("getting file... fileId=" + fileId); DataFile df = dataFileService.find(fileId); try { if (df == null) { logger.warning("Access: datafile service could not locate a DataFile object for id "+fileId+"!"); jsonResponse.put("state", "error"); } else { JSONObject jsonFile = new JSONObject(); jsonFile.put("fileLabel", df.getFileMetadata().getLabel()); jsonFile.put("fileName", df.getFileSystemName()); jsonFile.put("fileSize", df.getFilesize()); // get file data from file system //Path filePath = df.getSavedOriginalFile(); // only works on tab-data Path filePath = null; if (df.getFileSystemName() != null && df.getFileSystemName().startsWith("/")) { filePath = Paths.get(df.getFileSystemName()); } else { Path studyDirectoryPath = df.getOwner().getFileSystemDirectory(); if (studyDirectoryPath == null) { jsonResponse.put("state", "error"); //return; } String studyDirectory = studyDirectoryPath.toString(); filePath = Paths.get(studyDirectory, df.getFileSystemName()); } if (filePath != null) { String dataString = ""; File fileDir = new File(filePath.toString()); BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream(fileDir), "UTF8")); String str; while ((str = in.readLine()) != null) { // TODO file may not be from LGServices which are not in the right format we can parse here dataString += str.replace("\t", ","); dataString += "\n"; } in.close(); jsonFile.put("dataString", dataString); jsonResponse.put("file", jsonFile); jsonResponse.put("state", "ok"); } } } catch (JSONException e) { e.printStackTrace(); } } // ====================== response.setHeader("Access-Control-Allow-Origin", "*"); java.io.PrintWriter out = response.getWriter(); out.print(jsonResponse); out.flush(); } }