package org.apache.cayenne.testdo.return_types.auto;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.math.BigDecimal;
import java.util.Date;

import org.apache.cayenne.CayenneDataObject;
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.exp.property.BaseProperty;
import org.apache.cayenne.exp.property.DateProperty;
import org.apache.cayenne.exp.property.NumericProperty;
import org.apache.cayenne.exp.property.PropertyFactory;
import org.apache.cayenne.exp.property.StringProperty;

/**
 * Class _ReturnTypesMap1 was generated by Cayenne.
 * It is probably a good idea to avoid changing this class manually,
 * since it may be overwritten next time code is regenerated.
 * If you need to make any customizations, please use subclass.
 */
public abstract class _ReturnTypesMap1 extends CayenneDataObject {

    private static final long serialVersionUID = 1L; 

    public static final NumericProperty<Integer> AAAID_PK_PROPERTY = PropertyFactory.createNumeric(ExpressionFactory.dbPathExp("AAAID"), Integer.class);
    public static final String AAAID_PK_COLUMN = "AAAID";

    public static final NumericProperty<Long> BIGINT_COLUMN = PropertyFactory.createNumeric("bigintColumn", Long.class);
    public static final BaseProperty<Boolean> BIT_COLUMN = PropertyFactory.createBase("bitColumn", Boolean.class);
    public static final BaseProperty<Boolean> BOOLEAN_COLUMN = PropertyFactory.createBase("booleanColumn", Boolean.class);
    public static final StringProperty<String> CHAR_COLUMN = PropertyFactory.createString("charColumn", String.class);
    public static final DateProperty<Date> DATE_COLUMN = PropertyFactory.createDate("dateColumn", Date.class);
    public static final NumericProperty<BigDecimal> DECIMAL_COLUMN = PropertyFactory.createNumeric("decimalColumn", BigDecimal.class);
    public static final NumericProperty<Double> DOUBLE_COLUMN = PropertyFactory.createNumeric("doubleColumn", Double.class);
    public static final NumericProperty<Float> FLOAT_COLUMN = PropertyFactory.createNumeric("floatColumn", Float.class);
    public static final NumericProperty<Integer> INTEGER_COLUMN = PropertyFactory.createNumeric("integerColumn", Integer.class);
    public static final StringProperty<String> LONGNVARCHAR_COLUMN = PropertyFactory.createString("longnvarcharColumn", String.class);
    public static final StringProperty<String> LONGVARCHAR_COLUMN = PropertyFactory.createString("longvarcharColumn", String.class);
    public static final StringProperty<String> NCHAR_COLUMN = PropertyFactory.createString("ncharColumn", String.class);
    public static final NumericProperty<BigDecimal> NUMERIC_COLUMN = PropertyFactory.createNumeric("numericColumn", BigDecimal.class);
    public static final StringProperty<String> NVARCHAR_COLUMN = PropertyFactory.createString("nvarcharColumn", String.class);
    public static final NumericProperty<Float> REAL_COLUMN = PropertyFactory.createNumeric("realColumn", Float.class);
    public static final NumericProperty<Short> SMALLINT_COLUMN = PropertyFactory.createNumeric("smallintColumn", Short.class);
    public static final DateProperty<Date> TIME_COLUMN = PropertyFactory.createDate("timeColumn", Date.class);
    public static final DateProperty<Date> TIMESTAMP_COLUMN = PropertyFactory.createDate("timestampColumn", Date.class);
    public static final NumericProperty<Byte> TINYINT_COLUMN = PropertyFactory.createNumeric("tinyintColumn", Byte.class);
    public static final StringProperty<String> VARCHAR_COLUMN = PropertyFactory.createString("varcharColumn", String.class);

    protected Long bigintColumn;
    protected Boolean bitColumn;
    protected Boolean booleanColumn;
    protected String charColumn;
    protected Date dateColumn;
    protected BigDecimal decimalColumn;
    protected Double doubleColumn;
    protected Float floatColumn;
    protected Integer integerColumn;
    protected String longnvarcharColumn;
    protected String longvarcharColumn;
    protected String ncharColumn;
    protected BigDecimal numericColumn;
    protected String nvarcharColumn;
    protected Float realColumn;
    protected Short smallintColumn;
    protected Date timeColumn;
    protected Date timestampColumn;
    protected Byte tinyintColumn;
    protected String varcharColumn;


    public void setBigintColumn(Long bigintColumn) {
        beforePropertyWrite("bigintColumn", this.bigintColumn, bigintColumn);
        this.bigintColumn = bigintColumn;
    }

    public Long getBigintColumn() {
        beforePropertyRead("bigintColumn");
        return this.bigintColumn;
    }

    public void setBitColumn(Boolean bitColumn) {
        beforePropertyWrite("bitColumn", this.bitColumn, bitColumn);
        this.bitColumn = bitColumn;
    }

    public Boolean getBitColumn() {
        beforePropertyRead("bitColumn");
        return this.bitColumn;
    }

    public void setBooleanColumn(Boolean booleanColumn) {
        beforePropertyWrite("booleanColumn", this.booleanColumn, booleanColumn);
        this.booleanColumn = booleanColumn;
    }

    public Boolean getBooleanColumn() {
        beforePropertyRead("booleanColumn");
        return this.booleanColumn;
    }

    public void setCharColumn(String charColumn) {
        beforePropertyWrite("charColumn", this.charColumn, charColumn);
        this.charColumn = charColumn;
    }

    public String getCharColumn() {
        beforePropertyRead("charColumn");
        return this.charColumn;
    }

    public void setDateColumn(Date dateColumn) {
        beforePropertyWrite("dateColumn", this.dateColumn, dateColumn);
        this.dateColumn = dateColumn;
    }

    public Date getDateColumn() {
        beforePropertyRead("dateColumn");
        return this.dateColumn;
    }

    public void setDecimalColumn(BigDecimal decimalColumn) {
        beforePropertyWrite("decimalColumn", this.decimalColumn, decimalColumn);
        this.decimalColumn = decimalColumn;
    }

    public BigDecimal getDecimalColumn() {
        beforePropertyRead("decimalColumn");
        return this.decimalColumn;
    }

    public void setDoubleColumn(Double doubleColumn) {
        beforePropertyWrite("doubleColumn", this.doubleColumn, doubleColumn);
        this.doubleColumn = doubleColumn;
    }

    public Double getDoubleColumn() {
        beforePropertyRead("doubleColumn");
        return this.doubleColumn;
    }

    public void setFloatColumn(Float floatColumn) {
        beforePropertyWrite("floatColumn", this.floatColumn, floatColumn);
        this.floatColumn = floatColumn;
    }

    public Float getFloatColumn() {
        beforePropertyRead("floatColumn");
        return this.floatColumn;
    }

    public void setIntegerColumn(Integer integerColumn) {
        beforePropertyWrite("integerColumn", this.integerColumn, integerColumn);
        this.integerColumn = integerColumn;
    }

    public Integer getIntegerColumn() {
        beforePropertyRead("integerColumn");
        return this.integerColumn;
    }

    public void setLongnvarcharColumn(String longnvarcharColumn) {
        beforePropertyWrite("longnvarcharColumn", this.longnvarcharColumn, longnvarcharColumn);
        this.longnvarcharColumn = longnvarcharColumn;
    }

    public String getLongnvarcharColumn() {
        beforePropertyRead("longnvarcharColumn");
        return this.longnvarcharColumn;
    }

    public void setLongvarcharColumn(String longvarcharColumn) {
        beforePropertyWrite("longvarcharColumn", this.longvarcharColumn, longvarcharColumn);
        this.longvarcharColumn = longvarcharColumn;
    }

    public String getLongvarcharColumn() {
        beforePropertyRead("longvarcharColumn");
        return this.longvarcharColumn;
    }

    public void setNcharColumn(String ncharColumn) {
        beforePropertyWrite("ncharColumn", this.ncharColumn, ncharColumn);
        this.ncharColumn = ncharColumn;
    }

    public String getNcharColumn() {
        beforePropertyRead("ncharColumn");
        return this.ncharColumn;
    }

    public void setNumericColumn(BigDecimal numericColumn) {
        beforePropertyWrite("numericColumn", this.numericColumn, numericColumn);
        this.numericColumn = numericColumn;
    }

    public BigDecimal getNumericColumn() {
        beforePropertyRead("numericColumn");
        return this.numericColumn;
    }

    public void setNvarcharColumn(String nvarcharColumn) {
        beforePropertyWrite("nvarcharColumn", this.nvarcharColumn, nvarcharColumn);
        this.nvarcharColumn = nvarcharColumn;
    }

    public String getNvarcharColumn() {
        beforePropertyRead("nvarcharColumn");
        return this.nvarcharColumn;
    }

    public void setRealColumn(Float realColumn) {
        beforePropertyWrite("realColumn", this.realColumn, realColumn);
        this.realColumn = realColumn;
    }

    public Float getRealColumn() {
        beforePropertyRead("realColumn");
        return this.realColumn;
    }

    public void setSmallintColumn(Short smallintColumn) {
        beforePropertyWrite("smallintColumn", this.smallintColumn, smallintColumn);
        this.smallintColumn = smallintColumn;
    }

    public Short getSmallintColumn() {
        beforePropertyRead("smallintColumn");
        return this.smallintColumn;
    }

    public void setTimeColumn(Date timeColumn) {
        beforePropertyWrite("timeColumn", this.timeColumn, timeColumn);
        this.timeColumn = timeColumn;
    }

    public Date getTimeColumn() {
        beforePropertyRead("timeColumn");
        return this.timeColumn;
    }

    public void setTimestampColumn(Date timestampColumn) {
        beforePropertyWrite("timestampColumn", this.timestampColumn, timestampColumn);
        this.timestampColumn = timestampColumn;
    }

    public Date getTimestampColumn() {
        beforePropertyRead("timestampColumn");
        return this.timestampColumn;
    }

    public void setTinyintColumn(Byte tinyintColumn) {
        beforePropertyWrite("tinyintColumn", this.tinyintColumn, tinyintColumn);
        this.tinyintColumn = tinyintColumn;
    }

    public Byte getTinyintColumn() {
        beforePropertyRead("tinyintColumn");
        return this.tinyintColumn;
    }

    public void setVarcharColumn(String varcharColumn) {
        beforePropertyWrite("varcharColumn", this.varcharColumn, varcharColumn);
        this.varcharColumn = varcharColumn;
    }

    public String getVarcharColumn() {
        beforePropertyRead("varcharColumn");
        return this.varcharColumn;
    }

    @Override
    public Object readPropertyDirectly(String propName) {
        if(propName == null) {
            throw new IllegalArgumentException();
        }

        switch(propName) {
            case "bigintColumn":
                return this.bigintColumn;
            case "bitColumn":
                return this.bitColumn;
            case "booleanColumn":
                return this.booleanColumn;
            case "charColumn":
                return this.charColumn;
            case "dateColumn":
                return this.dateColumn;
            case "decimalColumn":
                return this.decimalColumn;
            case "doubleColumn":
                return this.doubleColumn;
            case "floatColumn":
                return this.floatColumn;
            case "integerColumn":
                return this.integerColumn;
            case "longnvarcharColumn":
                return this.longnvarcharColumn;
            case "longvarcharColumn":
                return this.longvarcharColumn;
            case "ncharColumn":
                return this.ncharColumn;
            case "numericColumn":
                return this.numericColumn;
            case "nvarcharColumn":
                return this.nvarcharColumn;
            case "realColumn":
                return this.realColumn;
            case "smallintColumn":
                return this.smallintColumn;
            case "timeColumn":
                return this.timeColumn;
            case "timestampColumn":
                return this.timestampColumn;
            case "tinyintColumn":
                return this.tinyintColumn;
            case "varcharColumn":
                return this.varcharColumn;
            default:
                return super.readPropertyDirectly(propName);
        }
    }

    @Override
    public void writePropertyDirectly(String propName, Object val) {
        if(propName == null) {
            throw new IllegalArgumentException();
        }

        switch (propName) {
            case "bigintColumn":
                this.bigintColumn = (Long)val;
                break;
            case "bitColumn":
                this.bitColumn = (Boolean)val;
                break;
            case "booleanColumn":
                this.booleanColumn = (Boolean)val;
                break;
            case "charColumn":
                this.charColumn = (String)val;
                break;
            case "dateColumn":
                this.dateColumn = (Date)val;
                break;
            case "decimalColumn":
                this.decimalColumn = (BigDecimal)val;
                break;
            case "doubleColumn":
                this.doubleColumn = (Double)val;
                break;
            case "floatColumn":
                this.floatColumn = (Float)val;
                break;
            case "integerColumn":
                this.integerColumn = (Integer)val;
                break;
            case "longnvarcharColumn":
                this.longnvarcharColumn = (String)val;
                break;
            case "longvarcharColumn":
                this.longvarcharColumn = (String)val;
                break;
            case "ncharColumn":
                this.ncharColumn = (String)val;
                break;
            case "numericColumn":
                this.numericColumn = (BigDecimal)val;
                break;
            case "nvarcharColumn":
                this.nvarcharColumn = (String)val;
                break;
            case "realColumn":
                this.realColumn = (Float)val;
                break;
            case "smallintColumn":
                this.smallintColumn = (Short)val;
                break;
            case "timeColumn":
                this.timeColumn = (Date)val;
                break;
            case "timestampColumn":
                this.timestampColumn = (Date)val;
                break;
            case "tinyintColumn":
                this.tinyintColumn = (Byte)val;
                break;
            case "varcharColumn":
                this.varcharColumn = (String)val;
                break;
            default:
                super.writePropertyDirectly(propName, val);
        }
    }

    private void writeObject(ObjectOutputStream out) throws IOException {
        writeSerialized(out);
    }

    private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        readSerialized(in);
    }

    @Override
    protected void writeState(ObjectOutputStream out) throws IOException {
        super.writeState(out);
        out.writeObject(this.bigintColumn);
        out.writeObject(this.bitColumn);
        out.writeObject(this.booleanColumn);
        out.writeObject(this.charColumn);
        out.writeObject(this.dateColumn);
        out.writeObject(this.decimalColumn);
        out.writeObject(this.doubleColumn);
        out.writeObject(this.floatColumn);
        out.writeObject(this.integerColumn);
        out.writeObject(this.longnvarcharColumn);
        out.writeObject(this.longvarcharColumn);
        out.writeObject(this.ncharColumn);
        out.writeObject(this.numericColumn);
        out.writeObject(this.nvarcharColumn);
        out.writeObject(this.realColumn);
        out.writeObject(this.smallintColumn);
        out.writeObject(this.timeColumn);
        out.writeObject(this.timestampColumn);
        out.writeObject(this.tinyintColumn);
        out.writeObject(this.varcharColumn);
    }

    @Override
    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException {
        super.readState(in);
        this.bigintColumn = (Long)in.readObject();
        this.bitColumn = (Boolean)in.readObject();
        this.booleanColumn = (Boolean)in.readObject();
        this.charColumn = (String)in.readObject();
        this.dateColumn = (Date)in.readObject();
        this.decimalColumn = (BigDecimal)in.readObject();
        this.doubleColumn = (Double)in.readObject();
        this.floatColumn = (Float)in.readObject();
        this.integerColumn = (Integer)in.readObject();
        this.longnvarcharColumn = (String)in.readObject();
        this.longvarcharColumn = (String)in.readObject();
        this.ncharColumn = (String)in.readObject();
        this.numericColumn = (BigDecimal)in.readObject();
        this.nvarcharColumn = (String)in.readObject();
        this.realColumn = (Float)in.readObject();
        this.smallintColumn = (Short)in.readObject();
        this.timeColumn = (Date)in.readObject();
        this.timestampColumn = (Date)in.readObject();
        this.tinyintColumn = (Byte)in.readObject();
        this.varcharColumn = (String)in.readObject();
    }

}
