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.notification;
  
  import java.util.TreeMap;
  
  import com.gallatinsystems.common.util.MailUtil;
  import com.gallatinsystems.common.util.PropertyUtil;
  import com.gallatinsystems.notification.NotificationHandler;
  import com.gallatinsystems.notification.dao.NotificationSubscriptionDao;
  import com.gallatinsystems.notification.domain.NotificationHistory;
  
  /**
   * base for functionality common across notification handlers
   * 
   * @author Christopher Fagiani
   */
  public abstract class BaseNotificationHandler implements NotificationHandler {
      private final static String EMAIL_FROM_ADDRESS_KEY = "emailFromAddress";
      protected static String FROM_ADDRESS;
      protected NotificationSubscriptionDao dao;
  
      protected BaseNotificationHandler() {
          FROM_ADDRESS = PropertyUtil.getProperty(EMAIL_FROM_ADDRESS_KEY);
          dao = new NotificationSubscriptionDao();
      }
  
      protected NotificationHistory getHistory(String type, Long id) {
  
          NotificationHistory hist = dao.findNotificationHistory(type, id);
          if (hist == null) {
              hist = new NotificationHistory();
              hist.setType(type);
              hist.setEntityId(id);
          }
          return hist;
      }
  
      /**
       * sends a mail
       * 
       * @param recipients
       * @param subject
       * @param body
       * @return
       */
      protected Boolean sendMail(TreeMap<String, String> recipients,
              String subject, String body) {
          return MailUtil.sendMail(FROM_ADDRESS, "FLOW", recipients, subject,
                  body);
      }
  
  }
  