org.agnitas.web.forms.MailingBaseForm.java Source code

Java tutorial

Introduction

Here is the source code for org.agnitas.web.forms.MailingBaseForm.java

Source

/*********************************************************************************
 * The contents of this file are subject to the Common Public Attribution
 * License Version 1.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.openemm.org/cpal1.html. The License is based on the Mozilla
 * Public License Version 1.1 but Sections 14 and 15 have been added to cover
 * use of software over a computer network and provide for limited attribution
 * for the Original Developer. In addition, Exhibit A has been modified to be
 * consistent with Exhibit B.
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 * 
 * The Original Code is OpenEMM.
 * The Original Developer is the Initial Developer.
 * The Initial Developer of the Original Code is AGNITAS AG. All portions of
 * the code written by AGNITAS AG are Copyright (c) 2007 AGNITAS AG. All Rights
 * Reserved.
 * 
 * Contributor(s): AGNITAS AG. 
 ********************************************************************************/

package org.agnitas.web.forms;

import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import javax.mail.internet.InternetAddress;
import javax.servlet.http.HttpServletRequest;
import org.agnitas.beans.Campaign;
import org.agnitas.beans.Mailing;
import org.agnitas.beans.MailingBase;
import org.agnitas.beans.Mediatype;
import org.agnitas.beans.MediatypeEmail;
import org.agnitas.target.Target;
import org.agnitas.util.AgnUtils;
import org.agnitas.web.MailingBaseAction;
import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

/**
 *
 * @author  mhe, Nicole Serek
 */
public class MailingBaseForm extends StrutsFormBase {

    private static final long serialVersionUID = 8995916091799817822L;
    public static final int TEXTAREA_WIDTH = 75;

    /** 
      * Holds value of property mailinglistID. 
      */
    private int mailingID;

    /**
     * Holds value of property campaignID. 
     */
    private int campaignID;

    /**
     * Holds value of property shortname. 
     */
    protected String shortname = "";

    /**
     * Holds value of property description. 
     */
    private String description;

    /**
     * Holds value of property emailCharset. 
     */
    private String emailCharset;

    /**
     * Holds value of property action. 
     */
    protected int action;

    /**
     * Holds value of property emailLinefeed.
     */
    private int emailLinefeed;

    /**
     * Holds value of property mailingType. 
     */
    protected int mailingType;

    /**
     * Holds value of property targetID. 
     */
    protected int targetID;

    /**
     * Holds value of property mailinglistID. 
     */
    protected int mailinglistID;

    /**
     * Holds value of property templateID. 
     */
    private int templateID;

    /**
     * Holds value of property worldMailingSend.
     */
    protected boolean worldMailingSend;

    /**
     * Holds value of property showTemplate.
     */
    private boolean showTemplate;

    /**
     * Holds value of property targetGroups.
     */
    protected Collection<Integer> targetGroups;

    /**
     * Holds value of property isTemplate.
     */
    private boolean isTemplate = false;

    /**
     * Holds value of property oldMailingID.
     */
    private int oldMailingID;

    /**
      * Holds value of property oldMailFormat.
      */
    private int oldMailFormat;

    /**
     * Holds value of property copyFlag.
     */
    private boolean copyFlag;

    /**
     * Holds value of property needsTarget.
     */
    private boolean needsTarget;

    /**
     * Holds value of property targetMode.
     */
    private int targetMode = Mailing.TARGET_MODE_AND;

    /**
     * The id of mailing that was clones (is used
    * for cloning CMS content of the mailing)
     */
    private int originalMailingId;

    /**
     * Holds value of property replyEmail.
     */
    protected String emailReplytoEmail;

    /**
     * Holds value of property replyFullname.
     */
    protected String emailReplytoFullname;

    protected Map<String, String> actions;

    protected ActionMessages messages;

    protected ActionMessages errors;

    /**
     * Code for previous action (used in "confirm delete" dialogs to jump back to last view on cancel)
     */
    protected int previousAction;

    protected boolean templateContainerVisible;
    protected boolean otherMediaContainerVisible;
    protected boolean generalContainerVisible;
    protected boolean targetgroupsContainerVisible;

    /**
    * @return the templateContainerVisible
    */
    public boolean isTemplateContainerVisible() {
        return templateContainerVisible;
    }

    /**
     * @param templateContainerVisible the templateContainerVisible to set
     */
    public void setTemplateContainerVisible(boolean templateContainerVisible) {
        this.templateContainerVisible = templateContainerVisible;
    }

    /**
     * @return the otherMediaContainerVisible
     */
    public boolean isOtherMediaContainerVisible() {
        return otherMediaContainerVisible;
    }

    /**
     * @param otherMediaContainerVisible the otherMediaContainerVisible to set
     */
    public void setOtherMediaContainerVisible(boolean otherMediaContainerVisible) {
        this.otherMediaContainerVisible = otherMediaContainerVisible;
    }

    /**
     * @return the generalContainerVisible
     */
    public boolean isGeneralContainerVisible() {
        return generalContainerVisible;
    }

    /**
     * @param generalContainerVisible the generalContainerVisible to set
     */
    public void setGeneralContainerVisible(boolean generalContainerVisible) {
        this.generalContainerVisible = generalContainerVisible;
    }

    /**
     * @return the targetgroupsContainerVisible
     */
    public boolean isTargetgroupsContainerVisible() {
        return targetgroupsContainerVisible;
    }

    /**
     * @param targetgroupsContainerVisible the targetgroupsContainerVisible to set
     */
    public void setTargetgroupsContainerVisible(boolean targetgroupsContainerVisible) {
        this.targetgroupsContainerVisible = targetgroupsContainerVisible;
    }

    /**
     * Holds list of MailingBase.
     */
    protected List<MailingBase> templateMailingBases;

    /**
     * Holds template shortname selected by templateID.
     */
    protected String templateShortname;

    /**
     * Holds list of mailing lists.
     */
    protected List mailingLists;

    /**
     * Holds list of campaigns.
     */
    protected List<Campaign> campaigns;

    /**
     * Holds list of targets.
     */
    protected List<Target> targets;

    /**
     * Holds list of targets selected by ids from targetGroups.
     */
    protected List<Target> targetGroupsList;

    /** 
      * Creates a new instance of TemplateForm 
      */
    public MailingBaseForm() {
    }

    /**
     * Initialization.
     */
    public void clearData(int companyID, int defaultMediaType) throws Exception {
        this.targetID = 0;
        this.mailinglistID = 0;
        this.templateID = 0;
        this.campaignID = 0;
        this.mailingType = Mailing.TYPE_NORMAL;

        this.shortname = "";
        this.description = "";

        mediatypes = new HashMap<Integer, Mediatype>();
        Mediatype mt = (Mediatype) getWebApplicationContext().getBean("MediatypeEmail");
        mt.setStatus(Mediatype.STATUS_ACTIVE);
        mediatypes.put(new Integer(0), mt);
        this.emailReplytoEmail = "";
        this.emailReplytoFullname = "";
        this.emailCharset = "UTF-8";
        this.emailLinefeed = 72;
        this.emailOnepixel = MediatypeEmail.ONEPIXEL_TOP;

        this.worldMailingSend = false;
        this.targetGroups = null;
        this.showTemplate = false;
        this.copyFlag = false;
        this.archived = false;
        this.needsTarget = false;
        this.targetMode = Mailing.TARGET_MODE_AND;

        this.templateContainerVisible = false;
        this.otherMediaContainerVisible = false;
        this.generalContainerVisible = false;
        this.targetgroupsContainerVisible = false;

    }

    @Override
    public void reset(ActionMapping map, HttpServletRequest request) {
        this.archived = false;
        this.templateContainerVisible = false;
        this.otherMediaContainerVisible = false;
        this.generalContainerVisible = false;
        this.targetgroupsContainerVisible = false;
        this.dynamicTemplate = false;

        super.reset(map, request);
    }

    /**
     * Validate the properties that have been set from this HTTP request,
     * and return an <code>ActionErrors</code> object that encapsulates any
     * validation errors that have been found.  If no errors are found, return
     * <code>null</code> or an <code>ActionErrors</code> object with no
     * recorded error messages.
     * 
     * @param mapping The mapping used to select this instance
     * @param request The servlet request we are processing
     * @return errors
     */
    @Override
    public ActionErrors formSpecificValidate(ActionMapping mapping, HttpServletRequest request) {

        ActionErrors errors = new ActionErrors();
        Mailing aMailing = null;

        if (action == MailingBaseAction.ACTION_SAVE) {

            if (this.shortname.length() > 99)
                errors.add("global", new ActionMessage("error.shortname_too_long"));

            if (this.mailinglistID == 0) {
                errors.add("global", new ActionMessage("error.mailing.noMailinglist"));
            }

            if (request.getParameter("addtarget") != null
                    && request.getParameter("addtarget").equals("addtarget")) {
                //this.action=MailingBaseAction.ACTION_VIEW_WITHOUT_LOAD;
                if (this.targetID != 0) {
                    if (this.targetGroups == null) {
                        this.targetGroups = new HashSet<Integer>();
                    }
                    this.targetGroups.add(new Integer(this.targetID));
                }
            }

            Enumeration allNames = request.getParameterNames();
            String aName = null;
            int tmpTarget = 0;
            while (allNames.hasMoreElements()) {
                aName = (String) allNames.nextElement();
                if (aName.startsWith("removetarget") && StringUtils.isNotEmpty(request.getParameter(aName))) {
                    try {
                        tmpTarget = Integer.parseInt(aName.substring(12));
                    } catch (Exception e) {
                        AgnUtils.logger().error("validate: " + e.getMessage());
                    }
                }
            }
            if (tmpTarget != 0) {
                this.targetID = tmpTarget;
                this.action = MailingBaseAction.ACTION_REMOVE_TARGET;
            }
        }

        if (action == MailingBaseAction.ACTION_SAVE) {
            if ((this.isIsTemplate() == false) && this.isNeedsTarget() && this.targetGroups == null) {
                errors.add("global", new ActionMessage("error.mailing.rulebased_without_target"));
            }

            if (this.shortname.length() < 3) {
                errors.add("shortname", new ActionMessage("error.nameToShort"));
            }

            // NEW CODE (to be inserted):
            if (this.emailReplytoFullname != null && this.emailReplytoFullname.length() > 255) {
                errors.add("replyFullname", new ActionMessage("error.reply_fullname_too_long"));
            }
            if (getSenderFullname() != null && getSenderFullname().length() > 255) {
                errors.add("senderFullname", new ActionMessage("error.sender_fullname_too_long"));
            }
            if (this.emailReplytoFullname != null && this.emailReplytoFullname.trim().length() == 0) {
                this.emailReplytoFullname = getSenderFullname();
            }

            if (this.targetGroups == null && this.mailingType == Mailing.TYPE_DATEBASED) {
                errors.add("global", new ActionMessage("error.mailing.rulebased_without_target"));
            }

            // NEW CODE (to be inserted):
            if (getMediaEmail().getFromEmail().length() < 3)
                errors.add("shortname", new ActionMessage("error.invalid.email"));

            if (getEmailSubject().length() < 2) {
                errors.add("subject", new ActionMessage("error.mailing.subject.too_short"));
            }

            try {
                InternetAddress adr = new InternetAddress(getMediaEmail().getFromEmail());
                if (adr.getAddress().indexOf("@") == -1) {
                    errors.add("sender", new ActionMessage("error.mailing.sender_adress"));
                }
            } catch (Exception e) {
                if (getMediaEmail().getFromEmail().indexOf("[agn") == -1) {
                    errors.add("sender", new ActionMessage("error.mailing.sender_adress"));
                }
            }

            try {
                aMailing = (Mailing) getWebApplicationContext().getBean("Mailing");
                aMailing.setCompanyID(this.getCompanyID(request));
                aMailing.findDynTagsInTemplates(this.getEmailSubject(), this.getWebApplicationContext());
                aMailing.findDynTagsInTemplates(this.getSenderFullname(), this.getWebApplicationContext());
            } catch (Exception e) {
                AgnUtils.logger().error("validate: " + e);
                errors.add("subject", new ActionMessage("error.template.dyntags"));
            }

            try {
                aMailing = (Mailing) getWebApplicationContext().getBean("Mailing");
                aMailing.setCompanyID(this.getCompanyID(request));
                aMailing.personalizeText(this.getEmailSubject(), 0, this.getWebApplicationContext());
                aMailing.personalizeText(this.getSenderFullname(), 0, this.getWebApplicationContext());
            } catch (Exception e) {
                errors.add("subject", new ActionMessage("error.personalization_tag"));
            }

            //            if(getTextTemplate().length() != 0) {
            //                // Just a syntax-check, no MailingID required
            //                aMailing = (Mailing) getWebApplicationContext().getBean("Mailing");
            //                aMailing.setCompanyID(this.getCompanyID(request));
            //                
            //                try {
            //                    aMailing.personalizeText(new String(this.getTextTemplate()), 0, this.getWebApplicationContext());
            //                } catch (Exception e) {
            //                    errors.add("texttemplate", new ActionMessage("error.personalization_tag"));
            //                }
            //                
            //                try {
            //                    aMailing.findDynTagsInTemplates(new String(getTextTemplate()), this.getWebApplicationContext());
            //                } catch (Exception e) {
            //                    errors.add("texttemplate", new ActionMessage("error.template.dyntags"));
            //                }
            //                
            //            }
            //            
            //            if(getHtmlTemplate().length() != 0) {
            //                // Just a syntax-check, no MailingID required
            //                aMailing = (Mailing) getWebApplicationContext().getBean("Mailing");
            //                aMailing.setCompanyID(this.getCompanyID(request));
            //                
            //                try {
            //                    aMailing.personalizeText(new String(this.getHtmlTemplate()), 0, this.getWebApplicationContext());
            //                } catch (Exception e) {
            //                    errors.add("texttemplate", new ActionMessage("error.personalization_tag"));
            //                }
            //                
            //                try {
            //                    aMailing.findDynTagsInTemplates(new String(getHtmlTemplate()), this.getWebApplicationContext());
            //                } catch (Exception e) {
            //                    AgnUtils.logger().error("validate: find "+e);
            //                    errors.add("texttemplate", new ActionMessage("error.template.dyntags"));
            //                }
            //            }
        }
        return errors;
    }

    @Override
    protected ActionErrors checkForHtmlTags(HttpServletRequest request) {
        if (action != MailingBaseAction.ACTION_VIEW_WITHOUT_LOAD) {
            return super.checkForHtmlTags(request);
        }
        return new ActionErrors();
    }

    /**
     * Getter for property templateID.
     *
     * @return Value of property templateID.
     */
    public int getMailingID() {
        return this.mailingID;
    }

    /**
     * Setter for property templateID.
     * 
     * @param mailingID New value of property mailingID.
     */
    public void setMailingID(int mailingID) {
        this.mailingID = mailingID;
    }

    /**
     * Getter for property campaignID.
     *
     * @return Value of property campaignID.
     */
    public int getCampaignID() {
        return this.campaignID;
    }

    /**
     * Setter for property campaignID.
     * 
     * @param campaignID New value of property campaignID.
     */
    public void setCampaignID(int campaignID) {
        this.campaignID = campaignID;
    }

    /**
     * Getter for property shortname.
     *
     * @return Value of property shortname.
     */
    public String getShortname() {
        return this.shortname;
    }

    /** 
     * Setter for property shortname.
     *
     * @param shortname New value of property shortname.
     */
    public void setShortname(String shortname) {
        this.shortname = shortname;
    }

    /**
     * Getter for property description.
     *
     * @return Value of property description.
     */
    public String getDescription() {
        return this.description;
    }

    /** 
     * Setter for property description.
     *
     * @param description New value of property description.
     */
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * Getter for property charset.
     *
     * @return Value of property charset.
     */
    public String getEmailCharset() {
        return this.emailCharset;
    }

    /**
     * Setter for property charset.
     * 
     * @param emailCharset New value of property emailCharset.
     */
    public void setEmailCharset(String emailCharset) {
        this.emailCharset = emailCharset;
    }

    /**
     * Getter for property action.
     *
     * @return Value of property action.
     */
    public int getAction() {
        return this.action;
    }

    /** 
     * Setter for property action.
     *
     * @param action New value of property action.
     */
    public void setAction(int action) {
        this.action = action;
    }

    /** 
     * Getter for property subject.
     *
     * @return Value of property subject.
     */
    public String getEmailSubject() {
        return getMediaEmail().getSubject();
    }

    /** 
     * Setter for property subject.
     *
     * @param subject New value of property subject.
     */
    public void setEmailSubject(String subject) {
        getMediaEmail().setSubject(subject);
    }

    /** 
     * Getter for property emailLinefeed.
     *
     * @return Value of property emailLinefeed.
     */
    public int getEmailLinefeed() {
        return this.emailLinefeed;
    }

    /**
     * Setter for property emailLinefeed.
     *
     * @param emailLinefeed New value of property emailLinefeed.
     */
    public void setEmailLinefeed(int emailLinefeed) {
        this.emailLinefeed = emailLinefeed;
    }

    /**
     * Getter for property mailingType.
     *
     * @return Value of property mailingType.
     */
    public int getMailingType() {
        return this.mailingType;
    }

    /**
     * Setter for property mailingType.
     *
     * @param mailingType New value of property mailingType.
     */
    public void setMailingType(int mailingType) {
        this.mailingType = mailingType;
    }

    /** 
     * Getter for property targetID.
     *
     * @return Value of property targetID.
     */
    public int getTargetID() {
        return this.targetID;
    }

    /**
     * Setter for property targetID.
     *
     * @param targetID New value of property targetID.
     */
    public void setTargetID(int targetID) {
        this.targetID = targetID;
    }

    /** 
     * Getter for property mailinglistID.
     *
     * @return Value of property mailinglistID.
     */
    public int getMailinglistID() {
        return this.mailinglistID;
    }

    /**
     * Setter for property mailinglistID.
     *
     * @param mailinglistID New value of property mailinglistID.
     */
    public void setMailinglistID(int mailinglistID) {
        this.mailinglistID = mailinglistID;
    }

    /**
     * Getter for property templateID.
     *
     * @return Value of property templateID.
     */
    public int getTemplateID() {
        return this.templateID;
    }

    /**
     * Setter for property templateID.
     *
     * @param templateID New value of property templateID.
     */
    public void setTemplateID(int templateID) {
        this.templateID = templateID;
    }

    /**
     * Getter for property worldMailingSend.
     *
     * @return Value of property worldMailingSend.
     */
    public boolean isWorldMailingSend() {
        return this.worldMailingSend;
    }

    /**
     * Setter for property worldMailingSend.
     *
     * @param worldMailingSend New value of property worldMailingSend.
     */
    public void setWorldMailingSend(boolean worldMailingSend) {
        this.worldMailingSend = worldMailingSend;
    }

    /**
     * Getter for property htmlTemplate.
     * 
     * @return Value of property htmlTemplate.
     */
    public String getHtmlTemplate() {
        return getMediaEmail().getHtmlTemplate();
    }

    /**
     * Setter for property htmlTemplate.
     *
     * @param htmlTemplate New value of property htmlTemplate.
     */
    public void setHtmlTemplate(String htmlTemplate) {
        getMediaEmail().setHtmlTemplate(htmlTemplate);
    }

    /**
     * Getter for property textTemplate.
     *
     * @return Value of property textTemplate.
     */
    public String getTextTemplate() {
        return getMediaEmail().getTemplate();
    }

    /**
     * Setter for property textTemplate.
     *
     * @param textTemplate New value of property textTemplate.
     */
    public void setTextTemplate(String textTemplate) {
        getMediaEmail().setTemplate(textTemplate);
    }

    /**
     * Getter for property showTemplate.
     *
     * @return Value of property showTemplate.
     */
    public boolean isShowTemplate() {
        return this.showTemplate;
    }

    /**
     * Setter for property showTemplate.
     *
     * @param showTemplate New value of property showTemplate.
     */
    public void setShowTemplate(boolean showTemplate) {
        this.showTemplate = showTemplate;
    }

    /**
     * Getter for property targetGroups.
     *
     * @return Value of property targetGroups.
     */
    public Collection<Integer> getTargetGroups() {
        return this.targetGroups;
    }

    /**
     * Setter for property targetGroups.
     *
     * @param targetGroups New value of property targetGroups.
     */
    public void setTargetGroups(Collection<Integer> targetGroups) {
        this.targetGroups = targetGroups;
    }

    /**
     * Getter for property isTemplate.
     *
     * @return Value of property isTemplate.
     */
    public boolean isIsTemplate() {
        return this.isTemplate;
    }

    /**
     * Setter for property isTemplate.
     *
     * @param isTemplate New value of property isTemplate.
     */
    public void setIsTemplate(boolean isTemplate) {
        this.isTemplate = isTemplate;
    }

    /**
     * Getter for property oldMailingID.
     *
     * @return Value of property oldMailingID.
     */
    public int getOldMailingID() {
        return this.oldMailingID;
    }

    /**
     * Setter for property oldMailingID.
     *
     * @param oldMailingID New value of property oldMailingID.
     */
    public void setOldMailingID(int oldMailingID) {
        this.oldMailingID = oldMailingID;
    }

    /**
     * Getter for property copyFlag.
     *
     * @return Value of property copyFlag.
     */
    public boolean isCopyFlag() {
        return this.copyFlag;
    }

    /**
     * Setter for property copyFlag.
     *
     * @param copyFlag New value of property copyFlag.
     */
    public void setCopyFlag(boolean copyFlag) {
        this.copyFlag = copyFlag;
    }

    /**
     * Getter for property needsTarget.
     *
     * @return Value of property needsTarget.
     */
    public boolean isNeedsTarget() {
        return this.needsTarget;
    }

    /**
     * Setter for property needsTarget.
     *
     * @param needsTarget New value of property needsTarget.
     */
    public void setNeedsTarget(boolean needsTarget) {
        this.needsTarget = needsTarget;
    }

    /**
     * Getter for property targetMode.
     *
     * @return Value of property targetMode.
     */
    public int getTargetMode() {
        return this.targetMode;
    }

    /**
     * Setter for property targetMode.
     *
     * @param targetMode New value of property targetMode.
     */
    public void setTargetMode(int targetMode) {
        this.targetMode = targetMode;
    }

    /**
     * Getter for property senderFullname.
     *
     * @return Value of property senderFullname.
     */
    public String getSenderFullname() {
        return getMediaEmail().getFromFullname();
    }

    /**
     * Setter for property senderFullname.
     *
     * @param senderFullname New value of property senderFullname.
     */
    public void setSenderFullname(String senderFullname) {
        getMediaEmail().setFromFullname(senderFullname);
    }

    /**
     * Getter for property replyEmail.
     *
     * @return Value of property replyEmail.
     */
    public String getEmailReplytoEmail() {

        return this.emailReplytoEmail;
    }

    /**
     * Setter for property replyEmail.
     *
     * @param replyEmail New value of property replyEmail.
     */
    public void setEmailReplytoEmail(String replyEmail) {

        this.emailReplytoEmail = replyEmail;
    }

    /**
     * Getter for property replyFullname.
     *
     * @return Value of property replyFullname.
     */
    public String getEmailReplytoFullname() {

        return this.emailReplytoFullname;
    }

    /**
    * Getter for property originalMailingId.
     *
     * @return Value of property originalMailingId.
    */
    public int getOriginalMailingId() {
        return originalMailingId;
    }

    /**
      * Setter for property originalMailingId.
      *
      * @param originalMailingId New value of property originalMailingId.
      */
    public void setOriginalMailingId(int originalMailingId) {
        this.originalMailingId = originalMailingId;
    }

    /**
      * Setter for property replyFullname.
      *
      * @param replyFullname New value of property replyFullname.
      */
    public void setEmailReplytoFullname(String replyFullname) {

        this.emailReplytoFullname = replyFullname;
    }

    /**
     * Holds value of property emailOnepixel.
     */
    private String emailOnepixel;

    /**
     * Getter for property emailOnepixel.
     *
     * @return Value of property emailOnepixel.
     */
    public String getEmailOnepixel() {

        return this.emailOnepixel;
    }

    /**
     * Setter for property emailOnepixel.
     *
     * @param emailOnepixel New value of property emailOnepixel.
     */
    public void setEmailOnepixel(String emailOnepixel) {

        this.emailOnepixel = emailOnepixel;
    }

    protected Map<Integer, Mediatype> mediatypes;

    /**
     * Getter for property mediatypes.
     *
     * @return Value of property mediatypes.
     */
    public Map<Integer, Mediatype> getMediatypes() {
        if (mediatypes == null) {
            mediatypes = new HashMap<Integer, Mediatype>();
        }
        return mediatypes;
    }

    public Mediatype getMedia(int id) {
        Mediatype mt = (Mediatype) getMediatypes().get(new Integer(id));

        if (mt == null) {
            switch (id) {
            case 0:
                mt = (Mediatype) getWebApplicationContext().getBean("MediatypeEmail");
                break;
            default:
                return null;
            }
            mediatypes.put(new Integer(id), mt);
        }
        return mt;
    }

    public MediatypeEmail getMediaEmail() {
        return (MediatypeEmail) getMedia(0);
    }

    /**
     * Setter for property mediatypes.
     *
     * @param mediatypes New value of property mediatypes.
     */
    public void setMediatypes(Map<Integer, Mediatype> mediatypes) {
        this.mediatypes = mediatypes;
    }

    /**
     * Holds value of property archived.
     */
    private boolean archived = false;

    /**
     * Getter for property archived.
     * @return Value of property archived.
     */
    public boolean isArchived() {
        return this.archived;
    }

    /**
     * Setter for property archived.
     * @param archived New value of property archived.
     */
    public void setArchived(boolean archived) {
        this.archived = archived;
    }

    public Map<String, String> getActions() {
        return actions;
    }

    public void setActions(Map<String, String> actions) {
        this.actions = actions;
    }

    /**
      * Holds value of property mailingTypeNormal.
      */
    protected boolean mailingTypeNormal = true;

    /**
     * Holds value of property mailingTypeEvent.
     */
    protected boolean mailingTypeEvent;

    /**
     * Holds value of property mailingTypeDate.
     */
    protected boolean mailingTypeDate;

    /**
     * Holds value of property types.
     */
    protected String types = "";

    private boolean dynamicTemplate;

    /**
     * Getter for property mailingTypeDate.
     *
     * @return Value of property mailingTypeDate.
     */
    public boolean getMailingTypeDate() {
        return mailingTypeDate;
    }

    /**
      * Setter for property mailingTypeDate.
      *
      * @param mailingTypeDate New value of property mailingTypeDate.
      */
    public void setMailingTypeDate(boolean mailingTypeDate) {
        this.mailingTypeDate = mailingTypeDate;
    }

    /**
      * Getter for property mailingTypeEvent.
      *
      * @return Value of property mailingTypeEvent.
      */
    public boolean getMailingTypeEvent() {
        return mailingTypeEvent;
    }

    /**
      * Setter for property mailingTypeEvent.
      *
      * @param mailingTypeEvent New value of property mailingTypeEvent.
      */
    public void setMailingTypeEvent(boolean mailingTypeEvent) {
        this.mailingTypeEvent = mailingTypeEvent;
    }

    /**
      * Getter for property mailingTypeNormal.
      *
      * @return Value of property mailingTypeNormal.
      */
    public boolean getMailingTypeNormal() {
        return mailingTypeNormal;
    }

    /**
      * Setter for property mailingTypeNormal.
      *
      * @param mailingTypeNormal New value of property mailingTypeNormal.
      */
    public void setMailingTypeNormal(boolean mailingTypeNormal) {
        this.mailingTypeNormal = mailingTypeNormal;
    }

    public void setMessages(ActionMessages messages) {
        this.messages = messages;
    }

    public ActionMessages getMessages() {
        return this.messages;
    }

    /**
      * Getter for property mailingType.
      *
      * @return Value of property mailingType.
      */
    public String getTypes() {
        types = "";
        if (mailingTypeNormal) {
            types = "0";
        }
        if (mailingTypeEvent) {
            if (!types.equals("")) {
                types = types + ",";
            }
            types = types + "1";
        }
        if (mailingTypeDate) {
            if (!types.equals("")) {
                types = types + ",";
            }
            types = types + "2";
        }
        if (types.equals("")) {
            types = "100";
        }
        return types;
    }

    public int getPreviousAction() {
        return previousAction;
    }

    public void setPreviousAction(int previousAction) {
        this.previousAction = previousAction;
    }

    public int getOldMailFormat() {
        return oldMailFormat;
    }

    public void setOldMailFormat(int oldMailFormat) {
        this.oldMailFormat = oldMailFormat;
    }

    public void setErrors(ActionMessages errors) {
        this.errors = errors;
    }

    public ActionMessages getErrors() {
        return this.errors;
    }

    public List<MailingBase> getTemplateMailingBases() {
        return templateMailingBases;
    }

    public void setTemplateMailingBases(List<MailingBase> templateMailingBases) {
        this.templateMailingBases = templateMailingBases;
    }

    public String getTemplateShortname() {
        return templateShortname;
    }

    public void setTemplateShortname(String templateShortname) {
        this.templateShortname = templateShortname;
    }

    public List getMailingLists() {
        return mailingLists;
    }

    public void setMailingLists(List mailingLists) {
        this.mailingLists = mailingLists;
    }

    public List<Campaign> getCampaigns() {
        return campaigns;
    }

    public void setCampaigns(List<Campaign> campaigns) {
        this.campaigns = campaigns;
    }

    public List<Target> getTargets() {
        return targets;
    }

    public void setTargets(List<Target> targets) {
        this.targets = targets;
    }

    public List<Target> getTargetGroupsList() {
        return targetGroupsList;
    }

    public void setTargetGroupsList(List<Target> targetGroupsList) {
        this.targetGroupsList = targetGroupsList;
    }

    public void setUseDynamicTemplate(boolean dynamicTemplate) {
        this.dynamicTemplate = dynamicTemplate;
    }

    public boolean getUseDynamicTemplate() {
        return this.dynamicTemplate;
    }

    public void setDynamicTemplateString(String dynamicTemplateString) {
        if (dynamicTemplateString == null)
            this.dynamicTemplate = false;
        else
            this.dynamicTemplate = dynamicTemplateString.equals("on") || dynamicTemplateString.equals("on")
                    || dynamicTemplateString.equals("true");
    }

    public String getDynamicTemplateString() {
        if (dynamicTemplate)
            return "on";
        else
            return "";
    }

    @Override
    protected boolean isParameterExcludedForUnsafeHtmlTagCheck(String parameterName, HttpServletRequest request) {
        return parameterName.equals("textTemplate") || parameterName.equals("htmlTemplate");
    }
}