Package com.casamind.adware.server.servlet.rpc

Source Code of com.casamind.adware.server.servlet.rpc.MailServiceImpl

package com.casamind.adware.server.servlet.rpc;

import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Logger;

import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;

import com.casamind.adware.client.service.MailService;
import com.casamind.adware.server.billing.BillingFactory;
import com.casamind.adware.server.domain.Slot;
import com.casamind.adware.server.proxy.GDataDocumentsProxy;
import com.casamind.adware.shared.MailTaskCategories;
import com.casamind.adware.shared.MailTaskTypes;
import com.casamind.adware.shared.model.CompanySummaryDTO;
import com.casamind.adware.shared.model.SlotDTO;
import com.google.appengine.api.taskqueue.QueueFactory;
import com.google.appengine.api.taskqueue.TaskOptions;
import com.google.appengine.api.users.UserServiceFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

@SuppressWarnings("serial")
public class MailServiceImpl extends RemoteServiceServlet implements
    MailService {

  private static final Logger log = Logger.getLogger(MailServiceImpl.class.getName());
  private String gdataWebLogin, gdataWebPassword, gdataAdminLogin,
      documentsFeedUrl, spreadsheetFeedUrl, gdataAdminPassword,
      adminSpreadsheet, advertizingSlotsFrameURL,
      readonlyCalendarFrameURL;
  private GDataDocumentsProxy gdataProxy;
  private long gdataThreadSleep;
  private long gdataConnectTimeout;

  @Override
  public void init(ServletConfig config) throws ServletException {
    super.init(config);
    ServletContext context = config.getServletContext();
    gdataThreadSleep = Long.parseLong(context.getInitParameter("gdataThreadSleep"));
    gdataConnectTimeout = Long.parseLong(context.getInitParameter("gdataConnectTimeout"));
    gdataWebLogin = context.getInitParameter("gdataWebLogin");
    gdataWebPassword = context.getInitParameter("gdataWebPassword");
    gdataAdminLogin = context.getInitParameter("gdataAdminLogin");
    gdataAdminPassword = context.getInitParameter("gdataAdminPassword");
    adminSpreadsheet = context.getInitParameter("adminSpreadsheet");
    documentsFeedUrl = context.getInitParameter("documentsFeedUrl");
    spreadsheetFeedUrl = context.getInitParameter("spreadsheetFeedUrl");
    advertizingSlotsFrameURL = context.getInitParameter("advertizingSlotsFrameURL");
    readonlyCalendarFrameURL = context.getInitParameter("readonlyCalendarFrameURL");
    gdataProxy = new GDataDocumentsProxy(documentsFeedUrl, spreadsheetFeedUrl, gdataWebLogin, gdataWebPassword, gdataThreadSleep, gdataConnectTimeout);
  }

  @Override
  public void slotsCancelled(List<SlotDTO> objects, String reason) {
    // the provided list may contain slots from different companies.
    // one should sort the list into distinct lists of slots by company
    // the followin map will contain this sorted list
    // Key = companyId, Value = list of slots' ids (belonging to this
    // company)
    for (Map.Entry<CompanySummaryDTO, List<SlotDTO>> entry : Slot.sortByCompany(objects).entrySet()) {
      String entityIds = "";
      String out = "Queuing cancellation mail task for company " + entry.getKey().getDisplayName() + " with the following slots ";
      for (SlotDTO dto : entry.getValue()) {
        entityIds += dto.getId() + ",";
      }
      if (entityIds.endsWith(",")) {
        entityIds = entityIds.substring(0, entityIds.length() - 1);
      }
      out += "[" + entityIds + "]";
      log.info(out);
      try {
        QueueFactory.getQueue("mail").add(TaskOptions.Builder.withUrl("/tasks/mail")
            .param("category", MailTaskCategories.SLOT)
            .param("task", MailTaskTypes.SLOT_CANCELLED)
            .param("companyId", entry.getKey().getId().toString())
            .param("entityIds", entityIds)
            .param("reason", reason)
            .param("userEmail", UserServiceFactory.getUserService().getCurrentUser().getEmail())
            .param("userNickname", UserServiceFactory.getUserService().getCurrentUser().getNickname()));
        log.info("Taske queued successfully!");
      } catch (Exception e) {
        log.warning("Exception occured. See bellow for more details!");
        e.printStackTrace();
      }
    }
  }

  @Override
  public void slotsRejected(List<SlotDTO> objects, String reason) {
    for (Map.Entry<CompanySummaryDTO, List<SlotDTO>> entry : Slot.sortByCompany(objects).entrySet()) {
      String entityIds = "";
      String out = "Queuing rejection mail task for company " + entry.getKey().getDisplayName() + " with the following slots ";
      for (SlotDTO dto : entry.getValue()) {
        entityIds += dto.getId() + ",";
      }
      if (entityIds.endsWith(",")) {
        entityIds = entityIds.substring(0, entityIds.length() - 1);
      }
      out += "[" + entityIds + "]";
      log.info(out);
      try {
        QueueFactory.getQueue("mail").add(TaskOptions.Builder.withUrl("/tasks/mail")
            .param("category", MailTaskCategories.SLOT)
            .param("task", MailTaskTypes.SLOT_REJECTED)
            .param("companyId", entry.getKey().getId().toString())
            .param("entityIds", entityIds)
            .param("reason", reason)
            .param("userEmail", UserServiceFactory.getUserService().getCurrentUser().getEmail())
            .param("userNickname", UserServiceFactory.getUserService().getCurrentUser().getNickname()));
        log.info("Taske queued successfully!");
      } catch (Exception e) {
        log.warning("Exception occured. See bellow for more details!");
        e.printStackTrace();
      }
    }
  }

  @Override
  public void slotsApproved(List<SlotDTO> objects) {
    for (Map.Entry<CompanySummaryDTO, List<SlotDTO>> entry : Slot.sortByCompany(objects).entrySet()) {
      String entityIds = "";
      String out = "Queuing approval mail task for company " + entry.getKey().getDisplayName() + " with the following slots ";
      for (SlotDTO dto : entry.getValue()) {
        entityIds += dto.getId() + ",";
      }
      if (entityIds.endsWith(",")) {
        entityIds = entityIds.substring(0, entityIds.length() - 1);
      }
      out += "[" + entityIds + "]";
      log.info(out);
      try {
        QueueFactory.getQueue("mail").add(TaskOptions.Builder.withUrl("/tasks/mail")
            .param("category", MailTaskCategories.SLOT)
            .param("task", MailTaskTypes.SLOT_APPROVED)
            .param("companyId", entry.getKey().getId().toString())
            .param("entityIds", entityIds)
            .param("userEmail", UserServiceFactory.getUserService().getCurrentUser().getEmail())
            .param("userNickname", UserServiceFactory.getUserService().getCurrentUser().getNickname()));
        log.info("Taske queued successfully!");
      } catch (Exception e) {
        log.warning("Exception occured. See bellow for more details!");
        e.printStackTrace();
      }
    }
  }

  @Override
  public void slotsInvoiced(List<SlotDTO> objects, Date dueDate) {
    for (Map.Entry<CompanySummaryDTO, List<SlotDTO>> entry : Slot.sortByCompany(objects).entrySet()) {
      String entityIds = "";
      String out = "Queuing invoice mail task for company " + entry.getKey().getDisplayName() + " with the following slots ";
      for (SlotDTO dto : entry.getValue()) {
        entityIds += dto.getId() + ",";
      }
      if (entityIds.endsWith(",")) {
        entityIds = entityIds.substring(0, entityIds.length() - 1);
      }
      out += "[" + entityIds + "]";
      log.info(out);
      try {
        String billDownloadlink = BillingFactory.invoice(gdataProxy, objects, dueDate);
        QueueFactory.getQueue("mail").add(TaskOptions.Builder.withUrl("/tasks/mail")
            .param("category", MailTaskCategories.SLOT)
            .param("task", MailTaskTypes.SLOT_INVOICED)
            .param("companyId", entry.getKey().getId().toString())
            .param("entityIds", entityIds)
            .param("billDownloadlink", billDownloadlink)
            .param("dueDate", DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE).format(dueDate))
            .param("userEmail", UserServiceFactory.getUserService().getCurrentUser().getEmail())
            .param("userNickname", UserServiceFactory.getUserService().getCurrentUser().getNickname()));
        log.info("Taske queued successfully!");
      } catch (Exception e) {
        log.warning("Exception occured. See bellow for more details!");
        e.printStackTrace();
      }
    }
  }

  @Override
  public void slotsOrdered(List<SlotDTO> objects) {
    for (Map.Entry<CompanySummaryDTO, List<SlotDTO>> entry : Slot.sortByCompany(objects).entrySet()) {
      String entityIds = "";
      String out = "Queuing approval mail task for company " + entry.getKey().getDisplayName() + " with the following slots ";
      for (SlotDTO dto : entry.getValue()) {
        entityIds += dto.getId() + ",";
      }
      if (entityIds.endsWith(",")) {
        entityIds = entityIds.substring(0, entityIds.length() - 1);
      }
      out += "[" + entityIds + "]";
      log.info(out);
      try {
        QueueFactory.getQueue("mail").add(TaskOptions.Builder.withUrl("/tasks/mail")
            .param("category", MailTaskCategories.SLOT)
            .param("task", MailTaskTypes.SLOT_OREDERED)
            .param("companyId", entry.getKey().getId().toString())
            .param("entityIds", entityIds)
            .param("userEmail", UserServiceFactory.getUserService().getCurrentUser().getEmail())
            .param("userNickname", UserServiceFactory.getUserService().getCurrentUser().getNickname()));
        log.info("Taske queued successfully!");
      } catch (Exception e) {
        log.warning("Exception occured. See bellow for more details!");
        e.printStackTrace();
      }
    }
  }

  @Override
  public void schedulePublished(Long scheduleId) {
    log.info("Queuing publication mail task for schedule: " + scheduleId);
    try {
      QueueFactory.getQueue("mail").add(TaskOptions.Builder.withUrl("/tasks/mail").param("category", MailTaskCategories.SCHEDULE).param("task", MailTaskTypes.SCHEDULE_PUBLISHED).param("entityId", scheduleId != null ? scheduleId.toString() : ""));
      log.info("Taske queued successfully!");
    } catch (Exception e) {
      log.warning("Exception occured. See bellow for more details!");
      e.printStackTrace();
    }
  }
}
TOP

Related Classes of com.casamind.adware.server.servlet.rpc.MailServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.