view DVN-web/src/main/java/de/mpiwg/monographs/servlet/GetStudies.java @ 5:dd9adfc73390

adding class de.mpiwg.monographs.servlet.GetStudies.
author "jurzua <jurzua@mpiwg-berlin.mpg.de>"
date Thu, 07 May 2015 16:18:48 +0200
parents
children
line wrap: on
line source

package de.mpiwg.monographs.servlet;

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

import javax.ejb.EJB;
import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

import edu.harvard.iq.dvn.api.datadeposit.SwordAuth;
import edu.harvard.iq.dvn.core.admin.RoleServiceLocal;
import edu.harvard.iq.dvn.core.admin.UserServiceLocal;
import edu.harvard.iq.dvn.core.admin.VDCUser;
import edu.harvard.iq.dvn.core.study.StudyServiceLocal;
import edu.harvard.iq.dvn.core.vdc.VDCServiceLocal;
import edu.harvard.iq.dvn.core.web.study.StudyUI;

public class GetStudies extends AbstractMonographServlet{
	
	private static final long serialVersionUID = -5284971577250313161L;

	private static Logger LOGGER = Logger.getLogger(GetStudies.class.getCanonicalName());
	
    @EJB VDCServiceLocal vdcService;
    @EJB RoleServiceLocal roleService;
    @EJB UserServiceLocal userService;
    
	@Inject
	private SwordAuth swordAuth;
    private @EJB StudyServiceLocal studyService;
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		LOGGER.info("XXXXXXXXXXXXXXX GetStudies XXXXXXXXXXXXXXXXXXX");
		
		JSONObject jsonResponse = new JSONObject();	
		try {
			
			response.setContentType("application/json");
			
			
			String userName = request.getParameter("user");
			String password = request.getParameter("password");
			
			AuthCredentials authCredentials = new AuthCredentials(userName, password, null);
			VDCUser user = swordAuth.auth(authCredentials);
			
			if(user != null){
				
				String orderBy = "s.createTime";
				Boolean ascending = true;
				List studyVersionIds = studyService.getAllStudyVersionIdsByContributor(user.getId(), orderBy, ascending);
				List deaccessionedStudyVersionIds = studyService.getAllDeaccessionedStudyVersionIdsByContributor(user.getId(), orderBy, ascending);
				
				JSONArray studiesArray = new JSONArray();
				for (Object studyVersionId: studyVersionIds) {
					 StudyUI studyUI = new StudyUI((Long)studyVersionId,user);
					 
					 JSONObject studyJson = MonographUtils.jsonStudyUI(studyUI);
					 studiesArray.put(studyJson);
				}
				jsonResponse.put("studies", studiesArray);
				jsonResponse.put("state", "ok");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		java.io.PrintWriter out = response.getWriter();
		out.print(jsonResponse);
		out.flush();
		
	}

}