view src/main/java/de/mpiwg/monographs/servlet/RemoveFileMetadata.java @ 0:fcb8807fbd84

Fist commit!
author "jurzua <jurzua@mpiwg-berlin.mpg.de>"
date Tue, 10 Mar 2015 15:15:30 +0100
parents
children
line wrap: on
line source

package de.mpiwg.monographs.servlet;

import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import org.swordapp.server.AuthCredentials;
import org.swordapp.server.SwordServerException;

import edu.harvard.iq.dvn.api.datadeposit.SwordAuth;
import edu.harvard.iq.dvn.core.admin.VDCUser;
import edu.harvard.iq.dvn.core.study.EditStudyFilesService;
import edu.harvard.iq.dvn.core.study.EditStudyService;
import edu.harvard.iq.dvn.core.study.Study;
import edu.harvard.iq.dvn.core.study.StudyFileEditBean;

public class RemoveFileMetadata extends AbstractMonographServlet {
	
	private static final Logger logger = Logger.getLogger("monographs.RemoveFileMetadata");
	
	private EditStudyFilesService editStudyFilesService;
	private Context ctx = null;
	
	@Inject
	private SwordAuth swordAuth;
	
	public void init() throws ServletException {}

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		JSONObject jsonResponse = new JSONObject();
		
		String studyGlobalId = request.getParameter("studyId");
		String user = request.getParameter("user");
		String password = request.getParameter("password");
		Long fileMetadataId = null;
		
		try{
			fileMetadataId = Long.parseLong(request.getParameter("fileMetadataId"));
		}catch(Exception e){
			e.printStackTrace();
		}
		
        try {
            
            editStudyFilesService = (EditStudyFilesService) getCtx().lookup("java:comp/env/editStudyFiles");

        } catch (NamingException e) {
            e.printStackTrace();
            FacesContext context = FacesContext.getCurrentInstance();
            FacesMessage errMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), null);
            context.addMessage(null, errMessage);
        }
        
        Study study = null;
        try {
        	study = getStudy(studyGlobalId);
        	editStudyFilesService.setStudyVersion(study.getId());//ok
        } catch (Exception e) {
			logger.log(Level.WARNING, "Study no found. " + studyGlobalId);
			error(jsonResponse, e);
		}
        
        try {
			
        	for(Object obj : editStudyFilesService.getCurrentFiles()){
        		StudyFileEditBean file = (StudyFileEditBean)obj;
        		
        		if(file.getFileMetadata().getId().equals(fileMetadataId)){
        			file.setDeleteFlag(true);
        		}
        	}
        	
        	AuthCredentials authCredentials = new AuthCredentials(user, password, null);
        	VDCUser vdcUser = swordAuth.auth(authCredentials);
        	
        	editStudyFilesService.save(vdcUser.getId(), vdcUser.getId());
        	
        	jsonResponse.put("status", "ok");
        	
        	
		} catch (Exception e) {
			logger.log(Level.SEVERE, e.getMessage());
			error(jsonResponse, e);
		}
        
		java.io.PrintWriter out = response.getWriter();
		out.print(jsonResponse);
		out.flush();
	}
}