org.hoteia.qalingo.core.domain.AbstractAttribute.java Source code

Java tutorial

Introduction

Here is the source code for org.hoteia.qalingo.core.domain.AbstractAttribute.java

Source

/**
 * Most of the code in the Qalingo project is copyrighted Hoteia and licensed
 * under the Apache License Version 2.0 (release version 0.8.0)
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 *                   Copyright (c) Hoteia, 2012-2014
 * http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com
 *
 */
package org.hoteia.qalingo.core.domain;

import java.text.ParseException;
import java.util.Date;

import org.apache.commons.lang.BooleanUtils;

public abstract class AbstractAttribute<E> extends AbstractEntity<E> {

    /**
     * Generated UID
     */
    private static final long serialVersionUID = 2397084953607874647L;

    // TODO : ENUM OR NOT ?
    public final static String MARKET_AREA_ATTRIBUTE_EMAIL_FROM_ADDRESS = "MARKET_AREA_EMAIL_FROM_ADDRESS";
    public final static String MARKET_AREA_ATTRIBUTE_EMAIL_FROM_NAME = "MARKET_AREA_EMAIL_FROM_NAME";
    public final static String MARKET_AREA_ATTRIBUTE_EMAIL_TO_CONTACT = "MARKET_AREA_EMAIL_CONTACT";
    public final static String MARKET_AREA_ATTRIBUTE_DOMAIN_NAME = "MARKET_AREA_DOMAIN_NAME";
    public final static String MARKET_AREA_ATTRIBUTE_SHARE_OPTIONS = "MARKET_AREA_SHARE_OPTIONS";
    public final static String MARKET_AREA_ATTRIBUTE_SAVE_PAYMENT_INFORMATION = "MARKET_AREA_SAVE_PAYMENT_INFORMATION";
    public final static String MARKET_AREA_ATTRIBUTE_ORDER_CONFIRMATION_TEMPLATE = "MARKET_AREA_ORDER_CONFIRMATION_TEMPLATE";
    public final static String MARKET_AREA_ATTRIBUTE_SHIPPING_CONFIRMATION_TEMPLATE = "MARKET_AREA_SHIPPING_CONFIRMATION_TEMPLATE";
    public final static String MARKET_AREA_ATTRIBUTE_INVOICE_TEMPLATE = "MARKET_AREA_INVOICE_TEMPLATE";

    public final static String CUSTOMER_ATTRIBUTE_SCREENAME = "CUSTOMER_SCREENNAME";

    public final static String CATALOG_CATEGORY_ATTRIBUTE_I18N_NAME = "CATALOG_CATEGORY_I18N_NAME";
    public final static String CATALOG_CATEGORY_ATTRIBUTE_I18N_DESCRIPTION = "CATALOG_CATEGORY_I18N_DESCRIPTION";

    public final static String PRODUCT_MARKETING_ATTRIBUTE_I18N_NAME = "PRODUCT_MARKETING_I18N_NAME";
    public final static String PRODUCT_MARKETING_ATTRIBUTE_I18N_DESCRIPTION = "PRODUCT_MARKETING_I18N_DESCRIPTION";
    public final static String PRODUCT_MARKETING_ATTRIBUTE_FEATURED = "PRODUCT_MARKETING_FEATURED";

    public final static String PRODUCT_SKU_ATTRIBUTE_I18N_NAME = "PRODUCT_SKU_I18N_NAME";
    public final static String PRODUCT_SKU_ATTRIBUTE_I18N_DESCRIPTION = "PRODUCT_SKU_I18N_DESCRIPTION";
    public final static String PRODUCT_SKU_ATTRIBUTE_WIDTH = "PRODUCT_SKU_WIDTH";
    public final static String PRODUCT_SKU_ATTRIBUTE_HEIGHT = "PRODUCT_SKU_HEIGHT";
    public final static String PRODUCT_SKU_ATTRIBUTE_LENGTH = "PRODUCT_SKU_LENGTH";
    public final static String PRODUCT_SKU_ATTRIBUTE_WEIGHT = "PRODUCT_SKU_WEIGHT";
    public final static String PRODUCT_SKU_ATTRIBUTE_ENABLED_B2B = "PRODUCT_SKU_ENABLED_B2B";
    public final static String PRODUCT_SKU_ATTRIBUTE_ENABLED_B2C = "PRODUCT_SKU_ENABLED_B2C";
    public final static String PRODUCT_SKU_ATTRIBUTE_SALABLE_B2B = "PRODUCT_SKU_SALABLE_B2B";
    public final static String PRODUCT_SKU_ATTRIBUTE_SALABLE_B2C = "PRODUCT_SKU_SALABLE_B2C";

    public final static String PRODUCT_SKU_OPTION_DEFINITION_ATTRIBUTE_I18N_NAME = "PRODUCT_SKU_OPTION_DEFINITION_I18N_NAME";
    public final static String PRODUCT_SKU_OPTION_DEFINITION_ATTRIBUTE_I18N_DESCRIPTION = "PRODUCT_SKU_OPTION_DEFINITION_I18N_DESCRIPTION";
    public final static String PRODUCT_SKU_OPTION_DEFINITION_TYPE_ATTRIBUTE_I18N_NAME = "PRODUCT_SKU_OPTION_DEFINITION_TYPE_I18N_NAME";
    public final static String PRODUCT_SKU_OPTION_DEFINITION_TYPE_ATTRIBUTE_I18N_DESCRIPTION = "PRODUCT_SKU_OPTION_DEFINITION_TYPE_I18N_DESCRIPTION";

    public final static String PRODUCT_BRAND_ATTRIBUTE_I18N_NAME = "PRODUCT_BRAND_I18N_NAME";
    public final static String PRODUCT_BRAND_ATTRIBUTE_I18N_LONG_DESCRIPTION = "PRODUCT_BRAND_I18N_LONG_DESCRIPTION";
    public final static String PRODUCT_BRAND_ATTRIBUTE_I18N_SHORT_DESCRIPTION = "PRODUCT_BRAND_I18N_SHORT_DESCRIPTION";
    public final static String PRODUCT_BRAND_ATTRIBUTE_I18N_ORIGIN_COUNTRY_CODE = "PRODUCT_BRAND_I18N_ORIGIN_COUNTRY_CODE";
    public final static String PRODUCT_BRAND_ATTRIBUTE_DISPLAY_MODE = "PRODUCT_BRAND_DISPLAY_MODE";

    public final static String RETAILER_ATTRIBUTE_I18N_NAME = "RETAILER_I18N_NAME";
    public final static String RETAILER_ATTRIBUTE_I18N_DESCRIPTION = "RETAILER_I18N_DESCRIPTION";

    public final static String STORE_ATTRIBUTE_I18N_NAME = "STORE_I18N_NAME";
    public final static String STORE_ATTRIBUTE_I18N_DESCRIPTION = "STORE_I18N_DESCRIPTION";
    public final static String STORE_ATTRIBUTE_I18N_CITY_NAME = "STORE_I18N_CITY_NAME";

    public final static String PAYMENT_GATEWAY_ATTRIBUTE_CLIENT_TOKEN = "PAYMENT_GATEWAY_CLIENT_TOKEN";

    public final static String MANGOPAY_PAYIN_ID = "MANGOPAY_PAYIN_ID";
    public final static String MANGOPAY_WALLET_ID = "MANGOPAY_WALLET_ID";
    public final static String MANGOPAY_BANK_ACCOUNT_ID = "MANGOPAY_BANK_ACCOUNT_ID";
    public final static String MANGOPAY_USER_ACCOUNT_ID = "MANGOPAY_USER_ACCOUNT_ID";

    public final static String TAG_ATTRIBUTE_I18N_NAME = "TAG_I18N_NAME";

    public final static String CMS_MENU_ATTRIBUTE_I18N_NAME = "CMS_MENU_I18N_NAME";

    public abstract AttributeDefinition getAttributeDefinition();

    public abstract String getShortStringValue();

    public abstract void setShortStringValue(String value);

    public abstract String getLongStringValue();

    public abstract void setLongStringValue(String longStringValue);

    public abstract Integer getIntegerValue();

    public abstract void setIntegerValue(Integer value);

    public abstract Double getDoubleValue();

    public abstract void setDoubleValue(Double value);

    public abstract Float getFloatValue();

    public abstract void setFloatValue(Float value);

    public abstract byte[] getBlobValue();

    public abstract void setBlobValue(byte[] value);

    public abstract Boolean getBooleanValue();

    public abstract void setBooleanValue(Boolean value);

    public abstract Date getDateValue();

    public abstract void setDateValue(Date value);

    public abstract Long getMarketAreaId();

    public abstract void setMarketAreaId(Long marketAreaId);

    public abstract String getLocalizationCode();

    public abstract void setLocalizationCode(String localizationCode);

    public Object getValue() {
        AttributeDefinition attributeDefinition = getAttributeDefinition();
        if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_SHORT_STRING) {
            return (Object) getShortStringValue();
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_LONG_STRING) {
            return (Object) getLongStringValue();
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_DOUBLE) {
            return (Object) getDoubleValue();
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_FLOAT) {
            return (Object) getFloatValue();
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_INTEGER) {
            return (Object) getIntegerValue();
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_BLOB) {
            return (Object) getBlobValue();
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_BOOLEAN) {
            return (Object) getBooleanValue();
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_DATE) {
            return (Object) getDateValue();
        }
        return null;
    }

    public String getValueAsString() {
        if (getAttributeDefinition().getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_SHORT_STRING) {
            if (getShortStringValue() != null) {
                return getShortStringValue();
            }
        } else if (getAttributeDefinition().getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_LONG_STRING) {
            if (getLongStringValue() != null) {
                return getLongStringValue();
            }
        } else if (getAttributeDefinition().getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_DOUBLE) {
            if (getDoubleValue() != null) {
                return getDoubleValue().toString();
            }
        } else if (getAttributeDefinition().getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_FLOAT) {
            if (getFloatValue() != null) {
                return getFloatValue().toString();
            }
        } else if (getAttributeDefinition().getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_INTEGER) {
            if (getIntegerValue() != null) {
                return getIntegerValue().toString();
            }
        } else if (getAttributeDefinition().getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_BLOB) {
            if (getBlobValue() != null) {
                return getBlobValue().toString();
            }
        } else if (getAttributeDefinition().getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_BOOLEAN) {
            if (getBooleanValue() != null) {
                return getBooleanValue().toString();
            }
        } else if (getAttributeDefinition().getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_DATE) {
            if (getDateValue() != null) {
                return AttributeDefinition.fullAttributeDateFormat.format(getDateValue());
            }
        }
        return null;
    }

    public void setValue(String value) throws ParseException {
        AttributeDefinition attributeDefinition = getAttributeDefinition();
        if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_SHORT_STRING) {
            setShortStringValue(value);
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_LONG_STRING) {
            setLongStringValue(value);
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_DOUBLE) {
            setDoubleValue(new Double(value));
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_FLOAT) {
            setFloatValue(new Float(value));
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_INTEGER) {
            setIntegerValue(new Integer(value));
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_BLOB) {
            setBlobValue(value.getBytes());
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_BOOLEAN) {
            setBooleanValue(BooleanUtils.toBoolean(value));
        } else if (attributeDefinition.getAttributeType() == AttributeDefinition.ATTRIBUTE_TYPE_DATE) {
            setDateValue(AttributeDefinition.fullAttributeDateFormat.parse(value));
        }
    }

}