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 com.gallatinsystems.notification;
  
  import javax.servlet.http.HttpServletRequest;
  
  import com.gallatinsystems.framework.rest.RestError;
  import com.gallatinsystems.framework.rest.RestRequest;
  
  /**
   * Encapsulates requests to the notification task queue
   * 
   * @author Christopher Fagiani
   */
  public class NotificationRequest extends RestRequest {
  
      private static final long serialVersionUID = 5751114948240808962L;
      public static final String DELIMITER = "||";
      public static final String DEST_PARAM = "destinations";
      public static final String SUB_ENTITY_PARAM = "subEntityId";
      public static final String NOTIF_ENTITY_PARAM = "notifEntityId";
      public static final String TYPE_PARAM = "type";
      public static final String METHOD_PARAM = "method";
      public static final String DEST_OPT_PARAM = "destOptions";
  
      private String destinations;
      private Long subEntityId;
      private Long notifEntityId;
      private String type;
      private String method;
      private String destOptions;
  
      public String getDestOptions() {
          return destOptions;
      }
  
      public void setDestOptions(String destOptions) {
          this.destOptions = destOptions;
      }
  
      public String getDestinations() {
          return destinations;
      }
  
      public void setDestinations(String destinations) {
          this.destinations = destinations;
      }
  
      public Long getSubEntityId() {
          return subEntityId;
      }
  
      public void setSubEntityId(Long entityId) {
          this.subEntityId = entityId;
      }
  
      public String getType() {
          return type;
      }
  
      public void setType(String type) {
          this.type = type;
      }
  
      public String getMethod() {
          return method;
      }
  
      public void setMethod(String method) {
          this.method = method;
      }
  
      @Override
      protected void populateErrors() {
          if (subEntityId == null) {
              addError(new RestError(RestError.MISSING_PARAM_ERROR_CODE,
                      RestError.MISSING_PARAM_ERROR_MESSAGE, SUB_ENTITY_PARAM
                              + " is mandatory"));
          } else if (type == null || type.length() == 0) {
              addError(new RestError(RestError.MISSING_PARAM_ERROR_CODE,
                      RestError.MISSING_PARAM_ERROR_MESSAGE, TYPE_PARAM
                              + " is mandatory"));
          }
      }
  
      @Override
      protected void populateFields(HttpServletRequest req) throws Exception {
          if (req.getParameter(SUB_ENTITY_PARAM) != null) {
              try {
                  subEntityId = Long
                          .parseLong(req.getParameter(SUB_ENTITY_PARAM));
              } catch (NumberFormatException e) {
                  // no-op
              }
          }
          if (req.getParameter(NOTIF_ENTITY_PARAM) != null) {
              try {
                  notifEntityId = Long.parseLong(req
                          .getParameter(NOTIF_ENTITY_PARAM));
              } catch (NumberFormatException e) {
                  // no-op
              }
          }
          if (req.getParameter(TYPE_PARAM) != null) {
              type = req.getParameter(TYPE_PARAM).trim();
          }
          if (notifEntityId == null) {
              notifEntityId = subEntityId;
          }
          destinations = req.getParameter(DEST_PARAM);
          destOptions = req.getParameter(DEST_OPT_PARAM);
          method = req.getParameter(METHOD_PARAM);
  
      }
  
      public void setNotifEntityId(Long notifEntityId) {
          this.notifEntityId = notifEntityId;
      }
  
      public Long getNotifEntityId() {
          return notifEntityId;
      }
  }
  