org.obiba.onyx.magma.OnyxAttributeHelper.java Source code

Java tutorial

Introduction

Here is the source code for org.obiba.onyx.magma.OnyxAttributeHelper.java

Source

/*******************************************************************************
 * Copyright 2008(c) The OBiBa Consortium. All rights reserved.
 * 
 * This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/
package org.obiba.onyx.magma;

import java.util.Locale;

import org.obiba.magma.AttributeAwareBuilder;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.MessageSourceResolvable;
import org.springframework.context.NoSuchMessageException;

/**
 * Helper class for provisioning a variable with localized attributes.
 */
public class OnyxAttributeHelper implements ApplicationContextAware {

    public static final String PII_ATTRIBUTE = "pii";

    public static final String IDENTIFIER_ATTRIBUTE = "identifier";

    public static final String LABEL = "label";

    public static final String VALIDATION = "validation";

    public static final String CONDITION = "condition";

    public static final String CAPTUREMETHOD = "captureMethod";

    public static final String ISMANUALCAPTUREALLOWED = "isManualCaptureAllowed";

    public static final String SOURCE = "source";

    public static final String OCCURRENCECOUNT = "occurrenceCount";

    public static final String REQUIRED = "required";

    public static final String MINCOUNT = "minCount";

    public static final String MAXCOUNT = "maxCount";

    public static final String GROUP = "group";

    public static final String VENDORNAME = "vendorName";

    private ApplicationContext applicationContext;

    public OnyxAttributeHelper() {
        super();
    }

    public OnyxAttributeHelper(ApplicationContext applicationContext) {
        super();
        this.applicationContext = applicationContext;
    }

    /**
     * Add "label" localized attributes for the given property.
     * @param variable
     * @param property
     */
    public void addLocalizedAttributes(AttributeAwareBuilder<?> builder, String property) {
        addLocalizedAttributes(builder, LABEL, property);
    }

    /**
     * Add localized attributes for the given key/property.
     * @param variable
     * @param key
     * @param property
     */
    public void addLocalizedAttributes(AttributeAwareBuilder<?> builder, String key, String property) {
        if (property != null) {
            for (Locale locale : getLocales()) {
                try {
                    String message = applicationContext.getMessage(property, null, locale);
                    if (message.trim().length() > 0) {
                        addAttribute(builder, locale, key, message);
                    }
                } catch (NoSuchMessageException ex) {
                    // ignore
                }
            }
        }
    }

    /**
     * Add "label" localized attributes for the given message source.
     * @param variable
     * @param resolvable
     */
    public void addLocalizedAttributes(AttributeAwareBuilder<?> builder, MessageSourceResolvable resolvable) {
        addLocalizedAttributes(builder, LABEL, resolvable);
    }

    /**
     * Add localized attributes for the given key/message source.
     * @param variable
     * @param key
     * @param resolvable
     */
    public void addLocalizedAttributes(AttributeAwareBuilder<?> builder, String key,
            MessageSourceResolvable resolvable) {
        if (resolvable != null) {
            for (Locale locale : getLocales()) {
                try {
                    String message = applicationContext.getMessage(resolvable, locale);
                    if (message.trim().length() > 0) {
                        addAttribute(builder, locale, key, message);
                    }
                } catch (NoSuchMessageException ex) {
                    // ignore
                }
            }
        }
    }

    /**
     * Get the locales.
     * @return
     */
    private Locale[] getLocales() {
        // TODO get the list of available languages !
        return new Locale[] { Locale.ENGLISH, Locale.FRENCH };
    }

    /**
     * Add "label" localized attributes from the variable name.
     * @param variable
     */
    // public void addLocalizedAttributes(Variable variable) {
    // addLocalizedAttributes(variable, variable.getName());
    // }
    public static void addIsManualCaptureAllowedAttribute(AttributeAwareBuilder<?> builder, Object source) {
        addAttribute(builder, ISMANUALCAPTUREALLOWED, source);
    }

    public static void addDefaultCaptureMethodAttribute(AttributeAwareBuilder<?> builder, Object source) {
        addAttribute(builder, CAPTUREMETHOD, source);
    }

    public static void addVendorNameAttribute(AttributeAwareBuilder<?> builder, Object source) {
        addAttribute(builder, VENDORNAME, source);
    }

    public static void addConditionAttribute(AttributeAwareBuilder<?> builder, Object source) {
        addAttribute(builder, CONDITION, source);
    }

    public static <T extends AttributeAwareBuilder<?>> void addValidationAttribute(T builder, Object source) {
        addAttribute(builder, VALIDATION, source);
    }

    public static <T extends AttributeAwareBuilder<?>> void addSourceAttribute(T builder, Object source) {
        addAttribute(builder, SOURCE, source);
    }

    public static <T extends AttributeAwareBuilder<?>> void addRequiredAttribute(T builder, Object source) {
        addAttribute(builder, REQUIRED, source);
    }

    public static <T extends AttributeAwareBuilder<?>> void addMinCountAttribute(T builder, Object source) {
        addAttribute(builder, MINCOUNT, source);
    }

    public static <T extends AttributeAwareBuilder<?>> void addMaxCountAttribute(T builder, Object source) {
        addAttribute(builder, MAXCOUNT, source);
    }

    public static <T extends AttributeAwareBuilder<?>> void addOccurrenceCountAttribute(T builder, Object source) {
        addAttribute(builder, OCCURRENCECOUNT, source);
    }

    public static <T extends AttributeAwareBuilder<?>> void addGroupAttribute(T builder, Object source) {
        addAttribute(builder, GROUP, source);
    }

    public static <T extends AttributeAwareBuilder<?>> void addAttribute(T builder, String key, Object source) {
        if (source != null) {
            builder.addAttribute(key, source.toString());
        }
    }

    public static <T extends AttributeAwareBuilder<?>> void addAttribute(T builder, Locale locale, String key,
            Object source) {
        if (source != null) {
            builder.addAttribute(key, source.toString(), locale);
        }
    }

    public static <T extends AttributeAwareBuilder<?>> void addPiiAttribute(T builder) {
        builder.addAttribute(PII_ATTRIBUTE, "true");
    }

    public static <T extends AttributeAwareBuilder<?>> void addIdentifierAttribute(T builder) {
        builder.addAttribute(IDENTIFIER_ATTRIBUTE, "true");
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

}