/*
* Copyright (C) 2010-2016 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.dto;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import com.gallatinsystems.framework.rest.RestRequest;
/**
* encapsulates requests to the SurveyManager apis
*
* @author Christopher Fagiani
*/
public class SurveyManagerRequest extends RestRequest {
private static final long serialVersionUID = -1914332708852551948L;
public static final String GET_AVAIL_DEVICE_SURVEY_ACTION = "getAvailableSurveysDevice";
public static final String GET_SURVEY_HEADER_ACTION = "getSurveyHeader";
public static final String GET_ZIP_FILE_URL_ACTION = "getZipFileUrls";
private static final String SURVEY_INSTANCE_PARAM = "surveyInstanceId";
private static final String SURVEY_ID_PARAM = "surveyId";
private static final String VERSION_PARAM = "ver";
private static final String SURVEY_DOC_PARAM = "surveyDocument";
private static final String IMEI_PARAM = "imei";
private static final String PHONE_NUM_PARAM = "devicePhoneNumber";
@Deprecated
private static final String PHONE_NUM_ALT_PARAM = "phoneNumber";
private static final String FILE_START_DATE_PARAM = "startDate";
private static final String DEVICE_ID_PARAM = "devId";
private static final String ANDROID_ID = "androidId";
public static final String GET_AVAIL_DEVICE_SURVEYGROUP_ACTION = "getAvailableSurveyGroupsDevice";
private Long surveyId;
private Long surveyInstanceId;
private String surveyDoc;
private String phoneNumber;
private String imei;
private Date startDate;
private String deviceId;
private String version;
private String androidId;
public String getImei() {
return imei;
}
public void setImei(String imei) {
this.imei = imei;
}
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public Long getSurveyId() {
return surveyId;
}
public void setSurveyId(Long surveyId) {
this.surveyId = surveyId;
}
public Long getSurveyInstanceId() {
return surveyInstanceId;
}
public void setSurveyInstanceId(Long surveyInstanceId) {
this.surveyInstanceId = surveyInstanceId;
}
public String getSurveyDoc() {
return surveyDoc;
}
public void setSurveyDoc(String surveyDoc) {
this.surveyDoc = surveyDoc;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public void setStartDate(String dateString) throws Exception {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd");
Date convertedDate = dateFormat.parse(dateString);
setStartDate(convertedDate);
} catch (Exception ex) {
throw new Exception("Could not parse date param");
}
}
@Override
protected void populateFields(HttpServletRequest req) throws Exception {
surveyInstanceId = parseLong(req.getParameter(SURVEY_INSTANCE_PARAM),
SURVEY_INSTANCE_PARAM);
phoneNumber = req.getParameter(PHONE_NUM_PARAM);
if (phoneNumber == null || phoneNumber.trim().length() == 0) {
phoneNumber = req.getParameter(PHONE_NUM_ALT_PARAM);
}
imei = req.getParameter(IMEI_PARAM);
version = req.getParameter(VERSION_PARAM);
androidId = req.getParameter(ANDROID_ID);
deviceId = req.getParameter(DEVICE_ID_PARAM).trim();
surveyId = parseLong(req.getParameter(SURVEY_ID_PARAM), SURVEY_ID_PARAM);
surveyDoc = req.getParameter(SURVEY_DOC_PARAM);
if (req.getParameter(FILE_START_DATE_PARAM) != null)
setStartDate(req.getParameter(FILE_START_DATE_PARAM));
}
@Override
public void populateErrors() {
// no-op right now?
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getStartDate() {
return startDate;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getAndroidId() {
return androidId;
}
public void setAndroidId(String androidId) {
this.androidId = androidId;
}
}