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}