/*
* 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.dto;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import com.gallatinsystems.framework.rest.RestError;
import com.gallatinsystems.framework.rest.RestRequest;
/**
* encapsulates requests to the bootstrap generator servlet
*
* @author Christopher Fagiani
*/
public class BootstrapGeneratorRequest extends RestRequest {
private static final long serialVersionUID = 9041460970737380174L;
public static final String GEN_ACTION = "generate";
public static final String SURVEY_ID_LIST_PARAM = "surveyIds";
public static final String EMAIL_PARAM = "email";
public static final String DB_PARAM = "dbInstructions";
public static final String DELMITER = "||";
private String email;
private String dbInstructions;
private List<Long> surveyIds;
@Override
protected void populateErrors() {
if (surveyIds == null || surveyIds.size() == 0) {
if (dbInstructions == null || dbInstructions.trim().length() == 0) {
addError(new RestError(RestError.MISSING_PARAM_ERROR_CODE,
RestError.MISSING_PARAM_ERROR_MESSAGE, SURVEY_ID_LIST_PARAM
+ " cannot be null or empty if " + DB_PARAM + " is also null"));
}
}
if (email == null) {
addError(new RestError(RestError.MISSING_PARAM_ERROR_CODE,
RestError.MISSING_PARAM_ERROR_MESSAGE, EMAIL_PARAM
+ " cannot be null or empty"));
}
}
@Override
protected void populateFields(HttpServletRequest req) throws Exception {
email = req.getParameter(EMAIL_PARAM);
dbInstructions = req.getParameter(DB_PARAM);
String ids = req.getParameter(SURVEY_ID_LIST_PARAM);
if (ids != null && ids.trim().length() > 0) {
surveyIds = new ArrayList<Long>();
StringTokenizer strTok = new StringTokenizer(ids, DELMITER);
while (strTok.hasMoreTokens()) {
String id = strTok.nextToken().trim();
try {
surveyIds.add(new Long(id));
} catch (NumberFormatException e) {
addError(new RestError(
RestError.BAD_DATATYPE_CODE,
RestError.BAD_DATATYPE_MESSAGE,
SURVEY_ID_LIST_PARAM
+ " must only contain integers delimited by "
+ DELMITER));
}
}
}
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getDbInstructions() {
return dbInstructions;
}
public void setDbInstructions(String dbInstructions) {
this.dbInstructions = dbInstructions;
}
public List<Long> getSurveyIds() {
return surveyIds;
}
public void setSurveyIds(List<Long> surveyIds) {
this.surveyIds = surveyIds;
}
}