/** * */ package net.combase.desktopcrm.data; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.List; import java.util.TreeSet; import net.combase.desktopcrm.domain.AbstractCrmObject; import net.combase.desktopcrm.domain.EmailTemplate; /** * @author "Till Freier" * */ public final class CrmHelper { private CrmHelper() { } private static Collection<EmailTemplate> emailTemplateCache = null; public static synchronized void updateEmailTemplateCache() { emailTemplateCache = new TreeSet<>(new Comparator<EmailTemplate>() { @Override public int compare(EmailTemplate o1, EmailTemplate o2) { return o1.getTitle().compareTo(o2.getTitle()); } }); emailTemplateCache.addAll(CrmManager.getEmailTemplateList()); } public static synchronized Collection<EmailTemplate> getCachedEmailTemplates() { if (emailTemplateCache == null) { updateEmailTemplateCache(); } return emailTemplateCache; } public static List<AbstractCrmObject> getActionObjects() { List<AbstractCrmObject> result = new ArrayList<>(); List<AbstractCrmObject> checkList = new ArrayList<>(); if (DataStoreManager.getSettings().isCaseReminder()) checkList.addAll(CrmManager.getCaseList()); if (DataStoreManager.getSettings().isOpportunityReminder()) checkList.addAll(CrmManager.getOpportunityList()); if (DataStoreManager.getSettings().isLeadReminder()) checkList.addAll(CrmManager.getLeadList()); for (final AbstractCrmObject lead : checkList) { System.out.println("check " + lead.getTitle() + " for actions."); if (!hasActionsPlanned(lead)) result.add(lead); } System.out.println("found " + result.size() + " action items."); return result; } /** * @param lead * @return */ public static boolean hasActionsPlanned(final AbstractCrmObject lead) { boolean noAction = CrmManager.getOpenTaskListByParent(lead.getId()).isEmpty(); if (noAction) noAction = CrmManager.getMeetingListByParent(lead.getId()).isEmpty(); if (noAction) noAction = CrmManager.getCallListByParent(lead.getId()).isEmpty(); return !noAction; } public static List<AbstractCrmObject> getGlobalActionObjects() { List<AbstractCrmObject> result = new ArrayList<>(); List<AbstractCrmObject> checkList = new ArrayList<>(); checkList.addAll(CrmManager.getGlobalCaseList()); checkList.addAll(CrmManager.getGlobalOpportunityList()); checkList.addAll(CrmManager.getGlobalLeadList()); for (final AbstractCrmObject lead : checkList) { System.out.println("check " + lead.getTitle() + " for actions."); if (!hasActionsPlanned(lead)) result.add(lead); } System.out.println("found " + result.size() + " action items."); return result; } }