Mercurial > hg > LGServices
view src/main/java/de/mpiwg/gazetteer/utils/UpdateFileStatus.java @ 88:f4242db6206b
Refactoring : replace getCurrentSession with openSession for nested transaction exception
author | Calvin Yeh <cyeh@mpipw-berlin.mpg.com> |
---|---|
date | Wed, 21 Jun 2017 05:56:02 +0200 |
parents | 2e1662afc81c |
children |
line wrap: on
line source
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(); } }