de.ingrid.portal.forms.ContactForm.java Source code

Java tutorial

Introduction

Here is the source code for de.ingrid.portal.forms.ContactForm.java

Source

/*
 * **************************************************-
 * Ingrid Portal Apps
 * ==================================================
 * Copyright (C) 2014 - 2015 wemove digital solutions GmbH
 * ==================================================
 * Licensed under the EUPL, Version 1.1 or  as soon they will be
 * approved by the European Commission - subsequent versions of the
 * EUPL (the "Licence");
 * 
 * You may not use this work except in compliance with the Licence.
 * You may obtain a copy of the Licence at:
 * 
 * http://ec.europa.eu/idabc/eupl5
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the Licence is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the Licence for the specific language governing permissions and
 * limitations under the Licence.
 * **************************************************#
 */
/*
 * Copyright (c) 2006 wemove digital solutions. All rights reserved.
 */
package de.ingrid.portal.forms;

import java.io.UnsupportedEncodingException;
import java.util.List;

import javax.portlet.PortletRequest;

import org.apache.commons.fileupload.FileItem;

import de.ingrid.portal.config.PortalConfig;
import de.ingrid.portal.global.Utils;

/**
 * Form Handler for Contact page. Stores and validates form input.
 * 
 * @author Martin Maidhof
 */
public class ContactForm extends ActionForm {

    private static final long serialVersionUID = -8772366310279327463L;

    /** attribute name of action form in session */
    public static final String SESSION_KEY = "contact_form";

    public static final String FIELD_MESSAGE = "message";

    public static final String FIELD_FIRSTNAME = "firstname";

    public static final String FIELD_LASTNAME = "lastname";

    public static final String FIELD_COMPANY = "company";

    public static final String FIELD_PHONE = "phone";

    public static final String FIELD_EMAIL = "email";

    public static final String FIELD_ACTIVITY = "activity";

    public static final String FIELD_INTEREST = "interest";

    public static final String FIELD_NEWSLETTER = "newsletter";

    public static final String FIELD_JCAPTCHA = "jcaptcha";

    public static final String FIELD_UPLOAD = "upload";

    /**
     * @see de.ingrid.portal.forms.ActionForm#init()
     */
    public void init() {
        clearInput();
        // no default data to set
    }

    /**
     * @see de.ingrid.portal.forms.ActionForm#populate(javax.portlet.PortletRequest)
     */
    public void populate(PortletRequest request) {
        clearInput();
        setInput(FIELD_MESSAGE, request.getParameter(FIELD_MESSAGE));
        setInput(FIELD_FIRSTNAME, request.getParameter(FIELD_FIRSTNAME));
        setInput(FIELD_LASTNAME, request.getParameter(FIELD_LASTNAME));
        setInput(FIELD_COMPANY, request.getParameter(FIELD_COMPANY));
        setInput(FIELD_PHONE, request.getParameter(FIELD_PHONE));
        setInput(FIELD_EMAIL, request.getParameter(FIELD_EMAIL));
        setInput(FIELD_ACTIVITY, request.getParameter(FIELD_ACTIVITY));
        setInput(FIELD_INTEREST, request.getParameter(FIELD_INTEREST));
        setInput(FIELD_NEWSLETTER, request.getParameter(FIELD_NEWSLETTER));
        setInput(FIELD_JCAPTCHA, request.getParameter(FIELD_JCAPTCHA));
    }

    /**
     * @see de.ingrid.portal.forms.ActionForm#validate()
     */
    public boolean validate() {
        boolean allOk = true;
        clearErrors();

        if (!hasInput(FIELD_MESSAGE)) {
            setError(FIELD_MESSAGE, "contact.error.noMessage");
            allOk = false;
        }
        if (!hasInput(FIELD_FIRSTNAME)) {
            setError(FIELD_FIRSTNAME, "contact.error.noFirstName");
            allOk = false;
        }
        if (!hasInput(FIELD_LASTNAME)) {
            setError(FIELD_LASTNAME, "contact.error.noLastName");
            allOk = false;
        }

        if (!hasInput(FIELD_EMAIL)) {
            setError(FIELD_EMAIL, "contact.error.noEmail");
            allOk = false;
        } else {
            String myEmail = getInput(FIELD_EMAIL);
            if (!Utils.isValidEmailAddress(myEmail)) {
                setError(FIELD_EMAIL, "contact.error.emailNotValid");
                allOk = false;
            }
        }

        if (PortalConfig.getInstance().getBoolean("portal.contact.enable.captcha", Boolean.TRUE)) {
            if (!hasInput(FIELD_JCAPTCHA)) {
                setError(FIELD_JCAPTCHA, "contact.error.noJCapture");
                allOk = false;
            }
        }

        return allOk;
    }

    public void setErrorCaptcha() {
        clearErrors();
        setError(FIELD_JCAPTCHA, "contact.jcaptcha.error");
    }

    public void setErrorUpload() {
        clearErrors();
        setError(FIELD_UPLOAD, "contact.error.upload");
    }

    public void populate(List<FileItem> items) throws UnsupportedEncodingException {
        if (items != null) {
            clearInput();
            for (FileItem item : items) {
                if (item.getFieldName().equals(FIELD_MESSAGE)) {
                    setInput(FIELD_MESSAGE, item.getString("UTF-8"));
                } else if (item.getFieldName().equals(FIELD_FIRSTNAME)) {
                    setInput(FIELD_FIRSTNAME, item.getString("UTF-8"));
                } else if (item.getFieldName().equals(FIELD_LASTNAME)) {
                    setInput(FIELD_LASTNAME, item.getString("UTF-8"));
                } else if (item.getFieldName().equals(FIELD_COMPANY)) {
                    setInput(FIELD_COMPANY, item.getString("UTF-8"));
                } else if (item.getFieldName().equals(FIELD_PHONE)) {
                    setInput(FIELD_PHONE, item.getString("UTF-8"));
                } else if (item.getFieldName().equals(FIELD_EMAIL)) {
                    setInput(FIELD_EMAIL, item.getString("UTF-8"));
                } else if (item.getFieldName().equals(FIELD_ACTIVITY)) {
                    setInput(FIELD_ACTIVITY, item.getString());
                } else if (item.getFieldName().equals(FIELD_INTEREST)) {
                    setInput(FIELD_INTEREST, item.getString());
                } else if (item.getFieldName().equals(FIELD_NEWSLETTER)) {
                    setInput(FIELD_NEWSLETTER, item.getString());
                } else if (item.getFieldName().equals(FIELD_JCAPTCHA)) {
                    setInput(FIELD_JCAPTCHA, item.getString());
                }
            }
        }
    }

}