/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
*     bdoughan - Mar 17/2009 - 2.0 - Initial implementation
******************************************************************************/
package org.eclipse.persistence.testing.sdo.helper.classgen.dynamicimpl;

public interface DataTypes {

   public java.lang.Object getAnySimpleTypeProperty();

   public void setAnySimpleTypeProperty(java.lang.Object value);

   public commonj.sdo.DataObject getAnyTypeProperty();

   public void setAnyTypeProperty(commonj.sdo.DataObject value);

   public java.lang.String getAnyURIProperty();

   public void setAnyURIProperty(java.lang.String value);

   public byte[] getBase64BinaryProperty();

   public void setBase64BinaryProperty(byte[] value);

   public boolean isBooleanProperty();

   public void setBooleanProperty(boolean value);

   public byte getByteProperty();

   public void setByteProperty(byte value);

   public java.lang.String getDateProperty();

   public void setDateProperty(java.lang.String value);

   public java.lang.String getDateTimeProperty();

   public void setDateTimeProperty(java.lang.String value);

   public java.math.BigDecimal getDecimalProperty();

   public void setDecimalProperty(java.math.BigDecimal value);

   public double getDoubleProperty();

   public void setDoubleProperty(double value);

   public java.lang.String getDurationProperty();

   public void setDurationProperty(java.lang.String value);

   public java.util.List getENTITIESProperty();

   public void setENTITIESProperty(java.util.List value);

   public java.lang.String getENTITYProperty();

   public void setENTITYProperty(java.lang.String value);

   public float getFloatProperty();

   public void setFloatProperty(float value);

   public java.lang.String getGDayProperty();

   public void setGDayProperty(java.lang.String value);

   public java.lang.String getGMonthProperty();

   public void setGMonthProperty(java.lang.String value);

   public java.lang.String getGMonthDayProperty();

   public void setGMonthDayProperty(java.lang.String value);

   public java.lang.String getGYearProperty();

   public void setGYearProperty(java.lang.String value);

   public java.lang.String getGYearMonthProperty();

   public void setGYearMonthProperty(java.lang.String value);

   public byte[] getHexBinaryProperty();

   public void setHexBinaryProperty(byte[] value);

   public java.lang.String getIDProperty();

   public void setIDProperty(java.lang.String value);

   public java.lang.String getIDREFProperty();

   public void setIDREFProperty(java.lang.String value);

   public int getIntProperty();

   public void setIntProperty(int value);

   public java.math.BigInteger getIntegerProperty();

   public void setIntegerProperty(java.math.BigInteger value);

   public java.lang.String getLanguageProperty();

   public void setLanguageProperty(java.lang.String value);

   public long getLongProperty();

   public void setLongProperty(long value);

   public java.lang.String getNameProperty();

   public void setNameProperty(java.lang.String value);

   public java.lang.String getNCNameProperty();

   public void setNCNameProperty(java.lang.String value);

   public java.math.BigInteger getNegativeIntegerProperty();

   public void setNegativeIntegerProperty(java.math.BigInteger value);

   public java.lang.String getNMTOKENProperty();

   public void setNMTOKENProperty(java.lang.String value);

   public java.util.List getNMTOKENSProperty();

   public void setNMTOKENSProperty(java.util.List value);

   public java.math.BigInteger getNonNegativeIntegerProperty();

   public void setNonNegativeIntegerProperty(java.math.BigInteger value);

   public java.math.BigInteger getNonPositiveIntegerProperty();

   public void setNonPositiveIntegerProperty(java.math.BigInteger value);

   public java.lang.String getNormalizedStringProperty();

   public void setNormalizedStringProperty(java.lang.String value);

   public java.lang.String getNOTATION();

   public void setNOTATION(java.lang.String value);

   public java.math.BigInteger getPositiveIntegerProperty();

   public void setPositiveIntegerProperty(java.math.BigInteger value);

   public java.lang.String getQName();

   public void setQName(java.lang.String value);

   public short getShort();

   public void setShort(short value);

   public java.lang.String getString();

   public void setString(java.lang.String value);

   public java.lang.String getTime();

   public void setTime(java.lang.String value);

   public java.lang.String getToken();

   public void setToken(java.lang.String value);

   public short getUnsignedByte();

   public void setUnsignedByte(short value);

   public long getUnsignedInt();

   public void setUnsignedInt(long value);

   public java.math.BigInteger getUnsignedLong();

   public void setUnsignedLong(java.math.BigInteger value);

   public int getUnsignedShort();

   public void setUnsignedShort(int value);


}
