001package io.ebeaninternal.server.type;
002
003import io.ebean.text.TextException;
004import io.ebeaninternal.server.core.BasicTypeConverter;
005import io.ebeanservice.docstore.api.mapping.DocPropertyType;
006import com.fasterxml.jackson.core.JsonGenerator;
007import com.fasterxml.jackson.core.JsonParser;
008
009import java.io.DataInput;
010import java.io.DataOutput;
011import java.io.IOException;
012import java.sql.SQLException;
013import java.sql.Types;
014
015/**
016 * ScalarType for Short and short.
017 */
018public class ScalarTypeShort extends ScalarTypeBase<Short> {
019
020  public ScalarTypeShort() {
021    super(Short.class, true, Types.SMALLINT);
022  }
023
024  @Override
025  public void bind(DataBind b, Short value) throws SQLException {
026    if (value == null) {
027      b.setNull(Types.SMALLINT);
028    } else {
029      b.setShort(value);
030    }
031  }
032
033  @Override
034  public Short read(DataReader dataReader) throws SQLException {
035    return dataReader.getShort();
036  }
037
038  @Override
039  public Object toJdbcType(Object value) {
040    return BasicTypeConverter.toShort(value);
041  }
042
043  @Override
044  public Short toBeanType(Object value) {
045    return BasicTypeConverter.toShort(value);
046  }
047
048  @Override
049  public String formatValue(Short v) {
050    return v.toString();
051  }
052
053  @Override
054  public Short parse(String value) {
055    return Short.valueOf(value);
056  }
057
058  @Override
059  public Short convertFromMillis(long systemTimeMillis) {
060    throw new TextException("Not Supported");
061  }
062
063  @Override
064  public boolean isDateTimeCapable() {
065    return false;
066  }
067
068  @Override
069  public Short readData(DataInput dataInput) throws IOException {
070    if (!dataInput.readBoolean()) {
071      return null;
072    } else {
073      return dataInput.readShort();
074    }
075  }
076
077  @Override
078  public void writeData(DataOutput dataOutput, Short value) throws IOException {
079
080    if (value == null) {
081      dataOutput.writeBoolean(false);
082    } else {
083      dataOutput.writeBoolean(true);
084      dataOutput.writeShort(value);
085    }
086  }
087
088  @Override
089  public Short jsonRead(JsonParser parser) throws IOException {
090    return parser.getShortValue();
091  }
092
093  @Override
094  public void jsonWrite(JsonGenerator writer, Short value) throws IOException {
095    writer.writeNumber(value);
096  }
097
098  @Override
099  public DocPropertyType getDocType() {
100    return DocPropertyType.SHORT;
101  }
102
103}