/**
* 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));
}
}
}