@Override protected PDataCodec getKeyRangeCodec(PDataType columnDataType) { return columnDataType == PTimestamp.INSTANCE ? PDate.INSTANCE.getCodec() : columnDataType == PUnsignedTimestamp.INSTANCE ? PUnsignedDate.INSTANCE.getCodec() : super.getKeyRangeCodec(columnDataType); }
private PDateArray() { super("DATE ARRAY", PDataType.ARRAY_TYPE_BASE + PDate.INSTANCE.getSqlType(), PhoenixArray.class, null, 40); }
@Override public boolean isCoercibleTo(PDataType targetType, Object value) { return PDate.INSTANCE.isCoercibleTo(targetType, value); }
@Override public byte[] toBytes(Object object) { byte[] bytes = new byte[getByteSize()]; toBytes(object, bytes, 0); return bytes; }
@Override public int toBytes(Object object, byte[] bytes, int offset) { if (object == null) { getCodec().encodeLong(0l, bytes, offset); return this.getByteSize(); } getCodec().encodeLong(((java.util.Date) object).getTime(), bytes, offset); return this.getByteSize(); }
@Override public Object toObject(Object object, PDataType actualType) { if (object == null) { return null; } if (equalsAny(actualType, PTime.INSTANCE, PUnsignedTime.INSTANCE)) { return new Date(((java.sql.Time) object).getTime()); } else if (equalsAny(actualType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { return new Date(((java.sql.Timestamp) object).getTime()); } else if (equalsAny(actualType, PDate.INSTANCE, PUnsignedDate.INSTANCE)) { return object; } else if (equalsAny(actualType, PLong.INSTANCE, PUnsignedLong.INSTANCE)) { return new Date((Long) object); } else if (actualType == PDecimal.INSTANCE) { return new Date(((BigDecimal) object).longValueExact()); } else if (actualType == PVarchar.INSTANCE) { return DateUtil.parseDate((String) object); } return throwConstraintViolationException(actualType, this); }
@Override public byte[] toBytes(Object object) { return PDate.INSTANCE.toBytes(object); }
@Override public Object toObject(String value) { return PDate.INSTANCE.toObject(value); }
@Override public Date toObject(byte[] b, int o, int l, PDataType actualType, SortOrder sortOrder, Integer maxLength, Integer scale) { if (l == 0) { return null; } if (actualType.getCodec() != null ) { return new Date(actualType.getCodec().decodeLong(b, o, sortOrder)); } else if (actualType == PTimestamp.INSTANCE) { return new Date(PDate.INSTANCE.getCodec().decodeLong(b, o, sortOrder)); } else if (actualType == PUnsignedTimestamp.INSTANCE) { return new Date(PUnsignedDate.INSTANCE.getCodec().decodeLong(b, o, sortOrder)); } else if (actualType == PDecimal.INSTANCE) { BigDecimal bd = (BigDecimal) actualType.toObject(b, o, l, actualType, sortOrder); return new Date(bd.longValueExact()); } throwConstraintViolationException(actualType, this); return null; }
@Override public boolean isCastableTo(PDataType targetType) { return PDate.INSTANCE.isCastableTo(targetType); }
@Override public boolean isCoercibleTo(PDataType targetType) { return equalsAny(targetType, PDate.INSTANCE, PTime.INSTANCE, PTimestamp.INSTANCE, PVarbinary.INSTANCE, PBinary.INSTANCE); }
@Override public Integer getByteSize() { return PDate.INSTANCE.getByteSize(); }
@Override public int compareTo(Object lhs, Object rhs, PDataType rhsType) { return PDate.INSTANCE.compareTo(lhs, rhs, rhsType); }
@Override public int toBytes(Object object, byte[] bytes, int offset) { return PDate.INSTANCE.toBytes(object, bytes, offset); }
@Override public Object toObject(Object object, PDataType actualType) { Date d = (Date) PDate.INSTANCE.toObject(object, actualType); throwIfNonNegativeDate(d); return d; }
@Override public byte[] toBytes(Object object) { byte[] bytes = new byte[getByteSize()]; toBytes(object, bytes, 0); return bytes; }
@Override public int toBytes(Object object, byte[] bytes, int offset) { if (object == null) { getCodec().encodeLong(0l, bytes, offset); return this.getByteSize(); } getCodec().encodeLong(((java.util.Date) object).getTime(), bytes, offset); return this.getByteSize(); }
@Override public Date toObject(byte[] b, int o, int l, PDataType actualType, SortOrder sortOrder, Integer maxLength, Integer scale) { if (l == 0) { return null; } if (actualType.getCodec() != null ) { return new Date(actualType.getCodec().decodeLong(b, o, sortOrder)); } else if (actualType == PTimestamp.INSTANCE) { return new Date(PDate.INSTANCE.getCodec().decodeLong(b, o, sortOrder)); } else if (actualType == PUnsignedTimestamp.INSTANCE) { return new Date(PUnsignedDate.INSTANCE.getCodec().decodeLong(b, o, sortOrder)); } else if (actualType == PDecimal.INSTANCE) { BigDecimal bd = (BigDecimal) actualType.toObject(b, o, l, actualType, sortOrder); return new Date(bd.longValueExact()); } throwConstraintViolationException(actualType, this); return null; }
@Override public Object toObject(Object object, PDataType actualType) { if (object == null) { return null; } if (equalsAny(actualType, PTime.INSTANCE, PUnsignedTime.INSTANCE)) { return new Date(((java.sql.Time) object).getTime()); } else if (equalsAny(actualType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { return new Date(((java.sql.Timestamp) object).getTime()); } else if (equalsAny(actualType, PDate.INSTANCE, PUnsignedDate.INSTANCE)) { return object; } else if (equalsAny(actualType, PLong.INSTANCE, PUnsignedLong.INSTANCE)) { return new Date((Long) object); } else if (actualType == PDecimal.INSTANCE) { return new Date(((BigDecimal) object).longValueExact()); } else if (actualType == PVarchar.INSTANCE) { return DateUtil.parseDate((String) object); } return throwConstraintViolationException(actualType, this); }
@Override public boolean isCastableTo(PDataType targetType) { return PDate.INSTANCE.isCastableTo(targetType); }