fr.paris.lutece.portal.web.user.attribute.AttributeFieldJspBean.java Source code

Java tutorial

Introduction

Here is the source code for fr.paris.lutece.portal.web.user.attribute.AttributeFieldJspBean.java

Source

/*
 * Copyright (c) 2002-2013, Mairie de Paris
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *  1. Redistributions of source code must retain the above copyright notice
 *     and the following disclaimer.
 *
 *  2. Redistributions in binary form must reproduce the above copyright notice
 *     and the following disclaimer in the documentation and/or other materials
 *     provided with the distribution.
 *
 *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
 *     contributors may be used to endorse or promote products derived from
 *     this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * License 1.0
 */
package fr.paris.lutece.portal.web.user.attribute;

import fr.paris.lutece.portal.business.user.attribute.AttributeField;
import fr.paris.lutece.portal.business.user.attribute.IAttribute;
import fr.paris.lutece.portal.service.message.AdminMessage;
import fr.paris.lutece.portal.service.message.AdminMessageService;
import fr.paris.lutece.portal.service.template.AppTemplateService;
import fr.paris.lutece.portal.service.user.attribute.AdminUserFieldService;
import fr.paris.lutece.portal.service.user.attribute.AttributeFieldService;
import fr.paris.lutece.portal.service.user.attribute.AttributeService;
import fr.paris.lutece.portal.web.admin.AdminFeaturesPageJspBean;
import fr.paris.lutece.portal.web.constants.Messages;
import fr.paris.lutece.util.html.HtmlTemplate;

import org.apache.commons.lang.StringUtils;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

/**
 * AttributeFieldJspBean
 */
public class AttributeFieldJspBean extends AdminFeaturesPageJspBean {
    /**
     * Generated serial version UID
     */
    private static final long serialVersionUID = 3304151197655135630L;

    // CONSTANTS
    private static final String QUESTION_MARK = "?";
    private static final String EQUAL = "=";
    private static final String AMPERSAND = "&";

    // PROPERTIES
    private static final String PROPERTY_CREATE_ATTRIBUTE_FIELDS_PAGETITLE = "portal.users.create_attribute_field.pageTitle";
    private static final String PROPERTY_MODIFY_ATTRIBUTE_FIELDS_PAGETITLE = "portal.users.modify_attribute_field.pageTitle";
    private static final String PROPERTY_MESSAGE_CONFIRM_REMOVE_ATTRIBUTE_FIELD = "portal.users.modify_attribute.message.removeAttributeField";

    // TEMPLATES
    private static final String TEMPLATE_CREATE_ATTRIBUTE_FIELD = "admin/user/attribute/create_attribute_field.html";
    private static final String TEMPLATE_MODIFY_ATTRIBUTE_FIELD = "admin/user/attribute/modify_attribute_field.html";

    // PARAMETERS
    private static final String PARAMETER_CANCEL = "cancel";
    private static final String PARAMETER_ID_ATTRIBUTE = "id_attribute";
    private static final String PARAMETER_TITLE = "title";
    private static final String PARAMETER_VALUE = "value";
    private static final String PARAMETER_DEFAULT_VALUE = "default_value";
    private static final String PARAMETER_ID_FIELD = "id_field";

    // MARKS
    private static final String MARK_ATTRIBUTE_FIELD = "attribute_field";
    private static final String MARK_ATTRIBUTE = "attribute";

    // JSP
    private static final String JSP_MODIFY_ATTRIBUTE = "ModifyAttribute.jsp";
    private static final String JSP_URL_REMOVE_ATTRIBUTE_FIELD = "jsp/admin/user/attribute/DoRemoveAttributeField.jsp";
    private static final AttributeService _attributeService = AttributeService.getInstance();
    private static final AttributeFieldService _attributeFieldService = AttributeFieldService.getInstance();

    /**
     * Create attribute field
     * @param request HttpServletRequest
     * @return the html form
     */
    public String getCreateAttributeField(HttpServletRequest request) {
        setPageTitleProperty(PROPERTY_CREATE_ATTRIBUTE_FIELDS_PAGETITLE);

        String strIdAttribute = request.getParameter(PARAMETER_ID_ATTRIBUTE);
        int nIdAttribute = Integer.parseInt(strIdAttribute);

        IAttribute attribute = _attributeService.getAttributeWithoutFields(nIdAttribute, getLocale());

        HtmlTemplate template;
        Map<String, Object> model = new HashMap<String, Object>();
        model.put(MARK_ATTRIBUTE, attribute);

        template = AppTemplateService.getTemplate(TEMPLATE_CREATE_ATTRIBUTE_FIELD, getLocale(), model);

        return getAdminPage(template.getHtml());
    }

    /**
     *
     * @param request the HttpServletRequest
     * @return Url
     */
    public String doCreateAttributeField(HttpServletRequest request) {
        String strIdAttribute = request.getParameter(PARAMETER_ID_ATTRIBUTE);
        int nIdAttribute = Integer.parseInt(strIdAttribute);
        String strTitle = request.getParameter(PARAMETER_TITLE);
        String strValue = request.getParameter(PARAMETER_VALUE);
        String strDefaultValue = request.getParameter(PARAMETER_DEFAULT_VALUE);
        String strCancel = request.getParameter(PARAMETER_CANCEL);

        if (StringUtils.isEmpty(strCancel)) {
            if (StringUtils.isBlank(strTitle)) {
                return AdminMessageService.getMessageUrl(request, Messages.MANDATORY_FIELDS,
                        AdminMessage.TYPE_STOP);
            }

            if (StringUtils.isBlank(strValue)) {
                return AdminMessageService.getMessageUrl(request, Messages.MANDATORY_FIELDS,
                        AdminMessage.TYPE_STOP);
            }

            AttributeField attributeField = new AttributeField();
            attributeField.setTitle(strTitle);
            attributeField.setValue(strValue);
            attributeField.setDefaultValue(strDefaultValue != null);

            IAttribute attribute = _attributeService.getAttributeWithoutFields(nIdAttribute, getLocale());
            attributeField.setAttribute(attribute);
            _attributeFieldService.createAttributeField(attributeField);
        }

        String strUrl = JSP_MODIFY_ATTRIBUTE + QUESTION_MARK + PARAMETER_ID_ATTRIBUTE + EQUAL + nIdAttribute;

        return strUrl;
    }

    /**
     * Modify an attribute field
     * @param request HttpServletRequest
     * @return the html form
     */
    public String getModifyAttributeField(HttpServletRequest request) {
        setPageTitleProperty(PROPERTY_MODIFY_ATTRIBUTE_FIELDS_PAGETITLE);

        String strIdField = request.getParameter(PARAMETER_ID_FIELD);
        int nIdField = Integer.parseInt(strIdField);
        String strIdAttribute = request.getParameter(PARAMETER_ID_ATTRIBUTE);
        int nIdAttribute = Integer.parseInt(strIdAttribute);

        IAttribute attribute = _attributeService.getAttributeWithoutFields(nIdAttribute, getLocale());

        AttributeField attributeField = _attributeFieldService.getAttributeField(nIdField);

        HtmlTemplate template;
        Map<String, Object> model = new HashMap<String, Object>();
        model.put(MARK_ATTRIBUTE_FIELD, attributeField);
        model.put(MARK_ATTRIBUTE, attribute);

        template = AppTemplateService.getTemplate(TEMPLATE_MODIFY_ATTRIBUTE_FIELD, getLocale(), model);

        return getAdminPage(template.getHtml());
    }

    /**
     * Modify an attribute field
     * @param request HttpServletRequest
     * @return The Jsp URL of the process result
     */
    public String doModifyAttributeField(HttpServletRequest request) {
        String strTitle = request.getParameter(PARAMETER_TITLE);
        String strValue = request.getParameter(PARAMETER_VALUE);
        String strDefaultValue = request.getParameter(PARAMETER_DEFAULT_VALUE);
        String strIdField = request.getParameter(PARAMETER_ID_FIELD);
        int nIdField = Integer.parseInt(strIdField);
        String strIdAttribute = request.getParameter(PARAMETER_ID_ATTRIBUTE);
        String strCancel = request.getParameter(PARAMETER_CANCEL);

        if (StringUtils.isEmpty(strCancel)) {
            if (StringUtils.isBlank(strTitle)) {
                return AdminMessageService.getMessageUrl(request, Messages.MANDATORY_FIELDS,
                        AdminMessage.TYPE_STOP);
            }

            if (StringUtils.isBlank(strValue)) {
                return AdminMessageService.getMessageUrl(request, Messages.MANDATORY_FIELDS,
                        AdminMessage.TYPE_STOP);
            }

            AttributeField attributeField = new AttributeField();
            attributeField.setIdField(nIdField);
            attributeField.setTitle(strTitle);
            attributeField.setValue(strValue);
            attributeField.setDefaultValue(strDefaultValue != null);
            _attributeFieldService.updateAttributeField(attributeField);
        }

        return JSP_MODIFY_ATTRIBUTE + QUESTION_MARK + PARAMETER_ID_ATTRIBUTE + EQUAL + strIdAttribute;
    }

    /**
     * Confirm the removal of the attribute field
     * @param request HttpServletRequest
     * @return the html form
     */
    public String doConfirmRemoveAttributeField(HttpServletRequest request) {
        String strIdAttribute = request.getParameter(PARAMETER_ID_ATTRIBUTE);
        String strIdField = request.getParameter(PARAMETER_ID_FIELD);
        String strUrlRemove = JSP_URL_REMOVE_ATTRIBUTE_FIELD + QUESTION_MARK + PARAMETER_ID_ATTRIBUTE + EQUAL
                + strIdAttribute + AMPERSAND + PARAMETER_ID_FIELD + EQUAL + strIdField;

        String strUrl = AdminMessageService.getMessageUrl(request, PROPERTY_MESSAGE_CONFIRM_REMOVE_ATTRIBUTE_FIELD,
                strUrlRemove, AdminMessage.TYPE_CONFIRMATION);

        return strUrl;
    }

    /**
     * Remove the attribute field
     * @param request HttpServletRequest
     * @return The Jsp URL of the process result
     */
    public String doRemoveAttributeField(HttpServletRequest request) {
        String strIdAttribute = request.getParameter(PARAMETER_ID_ATTRIBUTE);
        String strIdField = request.getParameter(PARAMETER_ID_FIELD);

        if (StringUtils.isNotBlank(strIdField) && StringUtils.isNumeric(strIdField)) {
            int nIdField = Integer.parseInt(strIdField);

            _attributeFieldService.removeAttributeFieldFromIdField(nIdField);
            AdminUserFieldService.doRemoveUserFieldsByIdField(nIdField);
        }

        return JSP_MODIFY_ATTRIBUTE + QUESTION_MARK + PARAMETER_ID_ATTRIBUTE + EQUAL + strIdAttribute;
    }

    /**
     * Move up the position of the attribute field
     * @param request HttpServletRequest
     * @return The Jsp URL of the process result
     */
    public String doMoveUpAttributeField(HttpServletRequest request) {
        String strIdAttribute = request.getParameter(PARAMETER_ID_ATTRIBUTE);
        String strIdField = request.getParameter(PARAMETER_ID_FIELD);

        if (StringUtils.isNotBlank(strIdField) && StringUtils.isNumeric(strIdField)
                && StringUtils.isNotBlank(strIdAttribute) && StringUtils.isNumeric(strIdAttribute)) {
            int nIdAttribute = Integer.parseInt(strIdAttribute);
            int nIdField = Integer.parseInt(strIdField);

            IAttribute attribute = _attributeService.getAttributeWithFields(nIdAttribute, getLocale());
            List<AttributeField> listAttributeFields = attribute.getListAttributeFields();

            if (listAttributeFields.size() > 0) {
                AttributeField previousField = null;
                AttributeField currentField = null;

                Iterator<AttributeField> it = listAttributeFields.iterator();
                previousField = it.next();
                currentField = it.next();

                while (it.hasNext() && (currentField.getIdField() != nIdField)) {
                    previousField = currentField;
                    currentField = it.next();
                }

                int previousFieldPosition = previousField.getPosition();
                int currentFieldPosition = currentField.getPosition();
                previousField.setPosition(currentFieldPosition);
                currentField.setPosition(previousFieldPosition);
                _attributeFieldService.updateAttributeField(previousField);
                _attributeFieldService.updateAttributeField(currentField);
            }
        }

        return JSP_MODIFY_ATTRIBUTE + "?" + PARAMETER_ID_ATTRIBUTE + "=" + strIdAttribute;
    }

    /**
     * Move down the position of the attribute field
     * @param request HttpServletRequest
     * @return The Jsp URL of the process result
     */
    public String doMoveDownAttributeField(HttpServletRequest request) {
        String strIdAttribute = request.getParameter(PARAMETER_ID_ATTRIBUTE);
        String strIdField = request.getParameter(PARAMETER_ID_FIELD);

        if (StringUtils.isNotBlank(strIdField) && StringUtils.isNumeric(strIdField)
                && StringUtils.isNotBlank(strIdAttribute) && StringUtils.isNumeric(strIdAttribute)) {
            int nIdAttribute = Integer.parseInt(strIdAttribute);
            int nIdField = Integer.parseInt(strIdField);

            IAttribute attribute = _attributeService.getAttributeWithFields(nIdAttribute, getLocale());
            List<AttributeField> listAttributeFields = attribute.getListAttributeFields();

            if (listAttributeFields.size() > 0) {
                AttributeField currentField = null;
                AttributeField nextField = null;

                Iterator<AttributeField> it = listAttributeFields.iterator();
                currentField = it.next();
                nextField = it.next();

                while (it.hasNext() && (currentField.getIdField() != nIdField)) {
                    currentField = nextField;
                    nextField = it.next();
                }

                int nextFieldPosition = nextField.getPosition();
                int currentFieldPosition = currentField.getPosition();
                nextField.setPosition(currentFieldPosition);
                currentField.setPosition(nextFieldPosition);

                _attributeFieldService.updateAttributeField(nextField);
                _attributeFieldService.updateAttributeField(currentField);
            }
        }

        return JSP_MODIFY_ATTRIBUTE + "?" + PARAMETER_ID_ATTRIBUTE + "=" + strIdAttribute;
    }
}