at.spardat.xma.mdl.IAtomic Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2003, 2007 s IT Solutions AT Spardat GmbH .
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* s IT Solutions AT Spardat GmbH - initial API and implementation
*******************************************************************************/
// @(#) $Id: IAtomic.java 2089 2007-11-28 13:56:13Z s3460 $
package at.spardat.xma.mdl;
import java.math.BigDecimal;
import java.util.Date;
import at.spardat.enterprise.fmt.IFmt;
/**
* Classes implementing IAtomic are the types used in XMA to represent atomic values
* both at the client and at the server side.
* To facilitate transport over the network, this
* type has a type (from {@link at.spardat.enterprise.util.Types Types}) and
* a String encoded atomic value.
*
* The typed values which are held by this are string encoded.
* The encodings are as follows:
*
* TYPE ENCODING
* ---------------------------------------------------------------------------------------
* T_BOOLEAN "J" or "N"
* T_STRING the string itself
* T_BCD canonic string format of ABcd, see ABcd.toString(). Example: -12000.32
* T_DATE canonic string format of ADate yyyyMMdd, see ADate.toString()
* T_TIMESTAMP encoding as defined in {@link at.spardat.enterprise.util.TimeStampUtil}.
* T_DOM key of the domain value, see {@link at.spardat.xma.datasource.ADomX}.
*
*
* An Atom may be created from and converted to the most JDK supplied types. The following table
* lists the conversions:
*
* TYPE may be converted to, may be constructed from
* ---------------------------------------------------------------------------------------
* T_BOOLEAN Boolean
* T_STRING String
* T_BCD Double, Integer
* T_DATE java.util.Date
* T_TIMESTAMP java.sql.Timestamp
*
*
* @author YSD, 05.06.2003 09:20:54
*/
public interface IAtomic {
/**
* Returns true if this Atom holds a value.
*
* @return true if this has a non empty value.
*/
public abstract boolean hasValue();
/**
* Returns the type constant.
*
* @return the type constant.
*/
public abstract byte getType();
/**
* Maps this Atom to string representation using a IFmt object.
* The provided formatter is only used if it is type compatible
* with the type of this Atom. Otherwise, or if formatter is
* null, the internal String encoding is returned.
*
* @param formatter the IFmt formatter. May be null.
* @return non null String.
*/
public abstract String toString(IFmt formatter);
/**
* Returns a String representing the value of this. Depending on the type of this, the following
* formats are returned:
*
* T_BOOLEAN "J" or "N"
* T_STRING the string itself
* T_BCD -12000.32
* T_DATE yyyyMMdd
* example: 20001231, the last day in the year 2000
* T_TIMESTAMP yyyyMMdd HH:mm:ss.SSS z
* example: 20001231 23:59:59.999 CET denoting the last millisecond in the year 2000, central european time.
* T_DOM key of the domain value
*
* The empty string is returned if this does not store a value.
*
* @return the above defined encodings or the empty string if this is unvalued (!hasValue()).
*/
public String toString();
/**
* Extracts a double from this. Returns 0.0 if getType() is not equal to T_BCD or !hasValue().
*
* @return the double value of this
* @exception NumberFormatException if this does not fit into a double.
*/
public abstract double toDouble();
/**
* Extracts a float from this. Returns 0.0 if getType() is not equal to T_BCD or !hasValue().
*
* @return the float value of this
* @exception NumberFormatException if this does not fit into a float.
*/
public abstract float toFloat ();
/**
* Returns the value of this as int. Requires that this is either empty or contains an
* integer T_BCD value. If !hasValue()
* or the type of this is not T_BCD, zero is returned.
*
* @return the contained integer
* @exception NumberFormatException if this does not fit into an int
*/
public abstract int toInt();
/**
* Returns the value of this as long. Requires that this is either empty or contains an
* T_BCD value. If !hasValue()
* or the type of this is not T_BCD, zero is returned.
*
* @return the contained value as long
* @exception NumberFormatException if this does not fit into an long
*/
public abstract long toLong();
/**
* Returns the value of this as byte. Requires that this is either empty or contains
* an T_BCD value. If !hasValue()
* or the type of this is not T_BCD, zero is returned.
*
* @return the contained value as long
* @exception NumberFormatException if this does not fit into an byte
*/
public abstract byte toByte();
/**
* Returns the value of this as short. Requires that this is either empty or contains
* an T_BCD value. If !hasValue()
* or the type of this is not T_BCD, zero is returned.
*
* @return the contained value as long
* @exception NumberFormatException if this does not fit into a short
*/
public abstract short toShort();
/**
* Returns a newly constructed java.util.Date object representing the value of this.
*
* @return null if the type is not equal to T_DATE or T_TIMESTAMP or !hasValue().
*/
public abstract Date toDate();
/**
* Returns true if getType() equals T_BOOLEAN and the stored value equals TRUE. If
* there is no value stored or the stored value is not TRUE, false is returned.
*
* @return boolean indicating the value in this.
*/
public abstract boolean isTrue();
/**
* If the type of this is T_BCD, the numeric value is returned as a BigDecimal.
* If the type is another than T_BCD or !hasValue() is true, then null
* is returned.
*/
public abstract BigDecimal toBigDecimal ();
/**
* Returns the String encoded value of this. Returns the empty String if !hasValue().
*/
public abstract String getEncodedValue ();
/**
* Returns the value of this as Byte or null if !hasValue() or the
* type is not T_BCD.
*
* @exception RuntimeException if the value stored in this does not fit into a Byte.
*/
public Byte toBYTE ();
/**
* Returns the value of this as Short or null if !hasValue() or the
* type is not T_BCD.
*
* @exception RuntimeException if the value stored in this does not fit into a Short.
*/
public Short toSHORT();
/**
* Returns the value of this as Integer or null if !hasValue() or the
* type is not T_BCD.
*
* @exception RuntimeException if the value stored in this does not fit into a Integer.
*/
public Integer toINTEGER();
/**
* Returns the value of this as Long or null if !hasValue() or the
* type is not T_BCD.
*
* @exception RuntimeException if the value stored in this does not fit into a Long.
*/
public Long toLONG();
/**
* Returns the value of this as Float or null if !hasValue() or the
* type is not T_BCD.
*/
public Float toFLOAT();
/**
* Returns the value of this as Double or null if !hasValue() or the
* type is not T_BCD.
*/
public Double toDOUBLE();
}