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