/****************************************************************************** * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * * by the Free Software Foundation. This program is distributed in the hope * * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * * For the text or an alternative of this public license, you may reach us * * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * * or via info@compiere.org or http://www.compiere.org/license.html * *****************************************************************************/ package org.compiere.model; import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Properties; import org.compiere.util.DisplayType; import org.compiere.util.KeyNamePair; /** * Attribute Instance Model (Instance of attribute for a particular attribute set instance record) * * @author Jorg Janke * @version $Id: MAttributeInstance.java,v 1.3 2006/07/30 00:51:02 jjanke Exp $ */ public class MAttributeInstance extends X_M_AttributeInstance { /** * generated serial id */ private static final long serialVersionUID = 5697542928282761922L; /** * UUID based Constructor * @param ctx Context * @param M_AttributeInstance_UU UUID key * @param trxName Transaction */ public MAttributeInstance(Properties ctx, String M_AttributeInstance_UU, String trxName) { super(ctx, M_AttributeInstance_UU, trxName); } /** * @param ctx context * @param ignored ignored * @param trxName transaction */ public MAttributeInstance (Properties ctx, int ignored, String trxName) { super(ctx, 0, trxName); if (ignored != 0) throw new IllegalArgumentException("Multi-Key"); } // MAttributeInstance /** * Load Constructor * @param ctx context * @param rs result set * @param trxName transaction */ public MAttributeInstance (Properties ctx, ResultSet rs, String trxName) { super(ctx, rs, trxName); } // MAttributeInstance /** * General Constructor * * @param ctx context * @param M_Attribute_ID attribute * @param M_AttributeSetInstance_ID instance * @param trxName transaction */ public MAttributeInstance(Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, String trxName) { super(ctx, 0, trxName); setM_Attribute_ID(M_Attribute_ID); setM_AttributeSetInstance_ID(M_AttributeSetInstance_ID); } // MAttributeInstance /** * String Value Constructor * @param ctx context * @param M_Attribute_ID attribute * @param M_AttributeSetInstance_ID instance * @param Value string value * @param trxName transaction */ public MAttributeInstance (Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, String Value, String trxName) { this(ctx, M_Attribute_ID, M_AttributeSetInstance_ID, trxName); setValue (Value); } // MAttributeInstance /** * Number Value Constructor * @param ctx context * @param M_Attribute_ID attribute * @param M_AttributeSetInstance_ID instance * @param BDValue number value * @param trxName transaction */ public MAttributeInstance (Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, BigDecimal BDValue, String trxName) { this(ctx, M_Attribute_ID, M_AttributeSetInstance_ID, trxName); setValueNumber(BDValue); } // MAttributeInstance /** * Selection Value Constructor * @param ctx context * @param M_Attribute_ID attribute * @param M_AttributeSetInstance_ID instance * @param M_AttributeValue_ID selection * @param Value String representation for fast display * @param trxName transaction */ public MAttributeInstance(Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, int M_AttributeValue_ID, String Value, String trxName) { this(ctx, M_Attribute_ID, M_AttributeSetInstance_ID, trxName); setM_AttributeValue_ID(M_AttributeValue_ID); setValue(Value); } // MAttributeInstance /** * Integer Value Constructor * @param ctx * @param M_Attribute_ID * @param M_AttributeSetInstance_ID * @param Value * @param trxName */ public MAttributeInstance (Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, int Value, String trxName) { this(ctx, M_Attribute_ID, M_AttributeSetInstance_ID, trxName); setValueNumber(BigDecimal.valueOf(Value)); } // MAttributeInstance /** * TimeStamp Value Constructor * @param ctx * @param M_Attribute_ID * @param M_AttributeSetInstance_ID * @param value * @param trxName */ public MAttributeInstance(Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, Timestamp value, String trxName) { this(ctx, M_Attribute_ID, M_AttributeSetInstance_ID, trxName); setValueDate(value); } // MAttributeInstance /** * Multiple Selection Value Constructor * @param ctx * @param M_Attribute_ID * @param M_AttributeSetInstance_ID * @param multiSelectValue * @param multiSelectDisplayValue * @param trxName */ public MAttributeInstance(Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, String multiSelectValue, String multiSelectDisplayValue, String trxName) { this(ctx, M_Attribute_ID, M_AttributeSetInstance_ID, trxName); setMultiSelectValueAndDisplay(multiSelectValue, multiSelectDisplayValue); } // MAttributeInstance /** * KeyNamePair Value Constructor * Use for table direct or table type reference * @param ctx * @param M_Attribute_ID * @param M_AttributeSetInstance_ID * @param value * @param trxName */ public MAttributeInstance(Properties ctx, int M_Attribute_ID, int M_AttributeSetInstance_ID, KeyNamePair value, String trxName) { this(ctx, M_Attribute_ID, M_AttributeSetInstance_ID, trxName); setValueKeyNamePair(value); } // MAttributeInstance /** * @param ctx * @param M_AttributeInstance_ID * @param trxName * @param virtualColumns */ public MAttributeInstance(Properties ctx, int M_AttributeInstance_ID, String trxName, String... virtualColumns) { super(ctx, M_AttributeInstance_ID, trxName, virtualColumns); } /** * Set ValueNumber * @param ValueNumber number */ public void setValueNumber (BigDecimal ValueNumber) { super.setValueNumber (ValueNumber); if (ValueNumber == null) { setValue(null); return; } if (ValueNumber.signum() == 0) { setValue("0"); return; } // Display number w/o decimal 0 char[] chars = ValueNumber.toString().toCharArray(); StringBuilder display = new StringBuilder(); boolean add = false; for (int i = chars.length-1; i >= 0; i--) { char c = chars[i]; if (add) display.insert(0, c); else { if (c == '0') continue; else if (c == '.') // decimal point add = true; else { display.insert(0, c); add = true; } } } setValue(display.toString()); } // setValueNumber /** * Set valueDate * * @param valueDate */ public void setValueDate(Timestamp valueDate) { super.setValueDate(valueDate); if (valueDate == null) { setValue(null); return; } SimpleDateFormat sdf = null; MAttribute attribute = MAttribute.get(getCtx(), getM_Attribute_ID()); int displayType = attribute.getAD_Reference_ID(); if (MAttribute.ATTRIBUTEVALUETYPE_Date.equals(attribute.getAttributeValueType())) sdf = DisplayType.getDateFormat_JDBC(); // Based on reference type, Format timestamp into string value else if (displayType == DisplayType.DateTime) sdf = DisplayType.getTimestampFormat_Default(); else if (displayType == DisplayType.Time) sdf = DisplayType.getTimeFormat_Default(); else sdf = DisplayType.getDateFormat_JDBC(); setValue(sdf.format(valueDate)); } // setValueDate /** * Set valueMultipleSelection * @param value - comma separated IDs * @param displayValue - comma separated display values */ public void setMultiSelectValueAndDisplay(String value, String displayValue) { setValueMultipleSelection(value); setValue(displayValue); } /** * Set ValueInt * * @param valueInt */ public void setValueInt(int valueInt) { super.setValueNumber(BigDecimal.valueOf(valueInt)); String value = String.valueOf(valueInt); setValue(value); } // setValueInt /** * Get Value as Integer * * @return integer value */ public int getValueInt() { if (super.getValueNumber() == null) return 0; else return super.getValueNumber().intValue(); } // getValueInt /** * Set Value as keyNamePair * @param value */ public void setValueKeyNamePair(KeyNamePair value) { super.setValueNumber(BigDecimal.valueOf(value.getKey())); setValue(value.getName()); } // setValueKeyNamePair /** * String Representation * @return info */ @Override public String toString() { return getValue(); } // toString } // MAttributeInstance