content: /*
   *  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 javax.servlet.http.HttpServletRequest;
  
  import com.gallatinsystems.framework.rest.RestError;
  import com.gallatinsystems.framework.rest.RestRequest;
  
  public class SpreadsheetImportRequest extends RestRequest {
  
      private static final long serialVersionUID = 8472898722818764987L;
  
      public static final String PROCESS_FILE_ACTION = "processFile";
  
      private static final String ID_PARAM = "identifier";
      private static final String TYPE_PARAM = "type";
      private static final String START_ROW_PARAM = "startRow";
      private static final String GROUP_ID_PARAM = "questionGroupId";
      private static final String ST_PARAM = "sessionToken";
  
      private String identifier;
      private String type;
      private int startRow = 0;
      private long groupId;
      private byte[] key = null;
      private String keySpec = null;
  
      private String sessionToken;
  
      public String getSessionToken() {
          return sessionToken;
      }
  
      public void setSessionToken(String sessionToken) {
          this.sessionToken = sessionToken;
      }
  
      public int getStartRow() {
          return startRow;
      }
  
      public void setStartRow(int startRow) {
          this.startRow = startRow;
      }
  
      public long getGroupId() {
          return groupId;
      }
  
      public void setGroupId(long groupId) {
          this.groupId = groupId;
      }
  
      public String getIdentifier() {
          return identifier;
      }
  
      public void setIdentifier(String identifier) {
          this.identifier = identifier;
      }
  
      public String getType() {
          return type;
      }
  
      public void setType(String type) {
          this.type = type;
      }
  
      @Override
      protected void populateFields(HttpServletRequest req) throws Exception {
          identifier = req.getParameter(ID_PARAM);
          type = req.getParameter(TYPE_PARAM);
          sessionToken = req.getParameter(ST_PARAM);
          key = req.getParameter("privateKey").getBytes();
          keySpec = req.getParameter("keySpec");
          String start = req.getParameter(START_ROW_PARAM);
          String groupId = req.getParameter(GROUP_ID_PARAM);
  
          if (start != null) {
              try {
                  startRow = Integer.parseInt(start);
              } catch (NumberFormatException e) {
                  addError(new RestError(RestError.BAD_DATATYPE_CODE,
                          RestError.BAD_DATATYPE_MESSAGE,
                          "Start row must be an integer"));
              }
          }
          if (groupId != null) {
              try {
                  this.groupId = Long.parseLong(groupId);
              } catch (NumberFormatException e) {
                  addError(new RestError(RestError.BAD_DATATYPE_CODE,
                          RestError.BAD_DATATYPE_MESSAGE,
                          "GroupId must be an integer"));
              }
          }
      }
  
      @Override
      public void populateErrors() {
          if (getAction() == null) {
              String errorMsg = ACTION_PARAM + " is mandatory";
              addError(new RestError(RestError.MISSING_PARAM_ERROR_CODE,
                      RestError.MISSING_PARAM_ERROR_MESSAGE, errorMsg));
          }
      }
  
      public void setKey(byte[] key) {
          this.key = key;
      }
  
      public byte[] getKey() {
          return key;
      }
  
      public void setKeySpec(String keySpec) {
          this.keySpec = keySpec;
      }
  
      public String getKeySpec() {
          return keySpec;
      }
  
  }
  