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();
+		
+	}
+}