Mercurial > hg > LGServices
diff src/main/java/de/mpiwg/gazetteer/utils/UpdateFileStatus.java @ 34:2e1662afc81c
new: add synchronization for files uploaded to LGDataverse
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Mon, 02 Nov 2015 16:05:21 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/gazetteer/utils/UpdateFileStatus.java Mon Nov 02 16:05:21 2015 +0100 @@ -0,0 +1,96 @@ +package de.mpiwg.gazetteer.utils; + + +import java.io.IOException; +import java.util.Date; +import java.util.List; +import java.util.logging.Logger; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import de.mpiwg.gazetteer.bo.LGFile; +import de.mpiwg.gazetteer.dataverse.DataverseUtils; + + +public class UpdateFileStatus extends HttpServlet{ + + + private static final Logger logger = Logger.getLogger(UpdateFileStatus.class.getName()); + + + 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(); + + String datasetId = request.getParameter("datasetId"); + //logger.info("datasetId: " + datasetId); + + JSONObject filesJson = DataverseUtils.getAllFilesInDataset(datasetId); + + String datasetPersistentId = request.getParameter("datasetPersistentId"); + logger.info("sync files for dataset: " + datasetPersistentId); + + try { + + if(StringUtils.equals(filesJson.getString("status"), "OK")){ + // get all files with "datasetPersistentId=datasetPersistentId" from db + List<LGFile> filesInLGFile = DBService.getLGFileInDatasetFromDB(datasetPersistentId); + + //logger.info("files in dataset in LGServices: " + filesInLGFile); + //logger.info("files: "); + + // find files in the "filesInLGFile" but not in the "filesJson" + JSONArray data = filesJson.getJSONArray("data"); + + for (int i = 0; i < filesInLGFile.size(); i ++) { + Long fileIdInDv = filesInLGFile.get(i).getFileIdInDv(); + boolean updateFileIdInDv2Null = true; + + for (int j = 0 ; j < data.length(); j ++) { + int id = data.getJSONObject(j).getJSONObject("datafile").getInt("id"); + //logger.info("id= "+id + ", fileIdInDv= "+fileIdInDv); + + if (id == fileIdInDv) { + // found file, so don't update fileIdInDv + updateFileIdInDv2Null = false; + break; + } + } + + if (updateFileIdInDv2Null) { + // update file in LGServices database.File + logger.info("update fileIdInDv2=" + fileIdInDv + " for file (id): " + filesInLGFile.get(i).getId() ); + filesInLGFile.get(i).setFileIdInDv(null); + + Date date = new Date(); + DBService.saveDBEntry(filesInLGFile.get(i), date); + } + } + + jsonResponse.put("status", "OK"); + } + } catch (JSONException e1) { + e1.printStackTrace(); + } + + // ====================== + + response.setHeader("Access-Control-Allow-Origin", "*"); + + java.io.PrintWriter out = response.getWriter(); + out.print(jsonResponse); + out.flush(); + + } +}