/*
* Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation)
*
* This file is part of Akvo FLOW.
*
* Akvo FLOW is free software: you can redistribute it and modify it under the terms of
* the GNU Affero General Public License (AGPL) as published by the Free Software Foundation,
* either version 3 of the License or any later version.
*
* Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License included below for more details.
*
* The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>.
*/
package org.waterforpeople.mapping.app.web;
import javax.servlet.http.HttpServletRequest;
import org.waterforpeople.mapping.app.web.dto.SurveyEventRequest;
import com.gallatinsystems.framework.rest.AbstractRestApiServlet;
import com.gallatinsystems.framework.rest.RestRequest;
import com.gallatinsystems.framework.rest.RestResponse;
import com.gallatinsystems.notification.helper.NotificationHelper;
/**
* Servlet that can handle responding to survey events (approval, submission).
*
* @author Christopher Fagiani
*/
public class SurveyEventHandlerServlet extends AbstractRestApiServlet {
private static final long serialVersionUID = -8115326670034354961L;
@Override
protected RestRequest convertRequest() throws Exception {
HttpServletRequest req = getRequest();
RestRequest restRequest = new SurveyEventRequest();
restRequest.populateFromHttpRequest(req);
return restRequest;
}
@Override
protected RestResponse handleRequest(RestRequest req) throws Exception {
SurveyEventRequest eventReq = (SurveyEventRequest) req;
RestResponse response = new RestResponse();
// if we have other ways of handling an event, will probably want to
// refactor this to look at the event type but for now, we just send
// notifications
generateNotifications(eventReq.getEventType(), eventReq.getSurveyId(),
eventReq.getSurveyInstanceId());
return response;
}
private void generateNotifications(String type, Long surveyId,
Long surveyInstanceId) {
NotificationHelper helper = new NotificationHelper(type, surveyId,
surveyInstanceId);
helper.execute();
}
@Override
protected void writeOkResponse(RestResponse resp) throws Exception {
getResponse().setStatus(200);
}
}