/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.wcs.newsletter.dto; /* * #%L * Webstar Newsletter * %% * Copyright (C) 2013 Webstar Csoport Kft. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.model.User; import com.liferay.portal.service.UserLocalServiceUtil; import com.wcs.newsletter.model.Category; import com.wcs.newsletter.model.Newsletter; import com.wcs.newsletter.model.Subscription; import com.wcs.newsletter.model.SubscriptionCategory; import com.wcs.newsletter.service.SubscriptionCategoryLocalServiceUtil; import com.wcs.tool.StringUtil; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; /** * * @author csaba */ public class NewsletterSenderList { private List<SendListElem> recipients; public List<SendListElem> getRecipients() { return recipients; } public void setRecipients(List<SendListElem> recipients) { this.recipients = recipients; } public NewsletterSenderList(Newsletter newsletter, String testEmail) { try { recipients = new ArrayList<SendListElem>(); SendListElem listElem = new SendListElem(); InternetAddress internetAddress = new InternetAddress(testEmail); listElem.setSubscriptionEmail(internetAddress); listElem.setCategoryName("Test - "+testEmail); recipients.add(listElem); } catch (AddressException ex) { Logger.getLogger(NewsletterSenderList.class.getName()).log(Level.SEVERE, null, ex); } } public NewsletterSenderList(Newsletter newsletter) { try { // initNewsletterCategory(); // newsletterCategory = NewsletterCategoryLocalServiceUtil.getNewsletterCategories(0, NewsletterCategoryLocalServiceUtil.getNewsletterCategoriesCount()); recipients = new ArrayList<SendListElem>(); List<Category> categories = newsletter.getCategories(); for (Category category : categories) { Long categoryId = category.getCategoryId(); List<SubscriptionCategory> subscriptionCategories = SubscriptionCategoryLocalServiceUtil.findByCategoryId(categoryId); for (SubscriptionCategory subscriptionCategory : subscriptionCategories) { if (!subscriptionCategory.isConfirmed()) { continue; } Subscription subscription = null; try { subscription = subscriptionCategory.getSubscription(); } catch (Exception ex) { // logger.error(ex); } if (subscription == null) { continue; } String email = subscription.getEmailString(); if (StringUtil.isNotEmpty(email)) { SendListElem listElem = new SendListElem(); if (subscription.getUserId() != Long.MIN_VALUE && subscription.getUserId() != 0) { User newletterRecipUser = UserLocalServiceUtil.getUser(subscription.getUserId()); listElem.setNewsletterUser(newletterRecipUser); } listElem.setCategoryName(category.getName()); InternetAddress internetAddress = new InternetAddress(email); listElem.setSubscriptionEmail(internetAddress); listElem.setNewsletterSubscription(subscription); listElem.setNewsletterSubscriptionCategory(subscriptionCategory); recipients.add(listElem); } } } } catch (AddressException ex) { Logger.getLogger(NewsletterSenderList.class.getName()).log(Level.SEVERE, null, ex); } catch (PortalException ex) { Logger.getLogger(NewsletterSenderList.class.getName()).log(Level.SEVERE, null, ex); } catch (SystemException ex) { Logger.getLogger(NewsletterSenderList.class.getName()).log(Level.SEVERE, null, ex); } } }