DmailUtil.java

package sk.iway.iwcm.dmail;

import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import sk.iway.iwcm.Cache;
import sk.iway.iwcm.common.CloudToolsForCore;

/**
 * Various util methods for emails/newsletters
 */
public class DmailUtil {

    private DmailUtil() {
        //this is Util class with only static methods
    }

    /**
     * Returns unsubscribed emails, cached for 2 minutes (for use during excel import)
     * @return
     */
    public static Set<String> getUnsubscribedEmails() {
        Cache cache = Cache.getInstance();
        String cacheKey = "sk.iway.iwcm.dmail.unsubscribedEmails-"+CloudToolsForCore.getDomainId();
        @SuppressWarnings("unchecked")
        Set<String> unsubscribedEmailsSet = cache.getObject(cacheKey, Set.class);
        if (unsubscribedEmailsSet == null) {
            Map<String, Integer> unsubscribedEmailsTable = EmailDB.getHashtableFromUnsubscribedEmails();
            unsubscribedEmailsSet = new HashSet<>();
            unsubscribedEmailsSet.addAll(unsubscribedEmailsTable.keySet());
            cache.setObjectSeconds(cacheKey, unsubscribedEmailsSet, 120, true);
        }
        return unsubscribedEmailsSet;
    }

    /**
     * Extract email:
     * from "Janko Tester <tester@test.sk>" -> "tester@test.sk"
     * from "janko@test.sk" -> "janko@test.sk"
     * @param email
     * @return
     */
    public static String parseEmailFromNameEmailFormat(String email) {
        String fixed = email;
        //fixed = email.replaceAll(".*<([^<>]+)>.*|^([^<>]+)$", "$1$2");
        if (email.contains("<") && email.contains(">")) {
            fixed = email.replaceAll(".*<([^<>]+)>.*", "$1");
        }
        return fixed;
    }

}