@Override public boolean isCoercibleTo(PDataType targetType) { return equalsAny(targetType, this, PVarbinary.INSTANCE, PBinary.INSTANCE); }
@Override public boolean isCoercibleTo(PDataType targetType, Object value) { if (value != null) { if (targetType.equals(PUnsignedTimestamp.INSTANCE)) { return ((java.util.Date) value).getTime() >= 0; } else if (equalsAny(targetType, PUnsignedDate.INSTANCE, PUnsignedTime.INSTANCE)) { return ((java.util.Date) value).getTime() >= 0 && ((java.sql.Timestamp) value).getNanos() == 0; } else if (equalsAny(targetType, PDate.INSTANCE, PTime.INSTANCE)) { return ((java.sql.Timestamp) value).getNanos() == 0; } } return super.isCoercibleTo(targetType, value); }
@Override public int compareTo(Object lhs, Object rhs, PDataType rhsType) { if (lhs == rhs) { return 0; } if (lhs == null) { return -1; } if (rhs == null) { return 1; } if (equalsAny(rhsType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { return ((java.sql.Timestamp) lhs).compareTo((java.sql.Timestamp) rhs); } int c = ((java.util.Date) lhs).compareTo((java.util.Date) rhs); if (c != 0) return c; return ((java.sql.Timestamp) lhs).getNanos(); }
@Override public Object toObject(Object object, PDataType actualType) { if (object == null) { return null; } if (equalsAny(actualType, PDate.INSTANCE, PUnsignedDate.INSTANCE, PTime.INSTANCE, PUnsignedTime.INSTANCE)) { return new java.sql.Timestamp(((java.util.Date) object).getTime()); } else if (equalsAny(actualType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { return object; } else if (equalsAny(actualType, PLong.INSTANCE, PUnsignedLong.INSTANCE)) { return new java.sql.Timestamp((Long) object); } else if (actualType == PDecimal.INSTANCE) { BigDecimal bd = (BigDecimal) object; long ms = bd.longValue(); int nanos = (bd.remainder(BigDecimal.ONE).multiply(QueryConstants.BD_MILLIS_NANOS_CONVERSION)) .intValue(); return DateUtil.getTimestamp(ms, nanos); } else if (actualType == PVarchar.INSTANCE) { return DateUtil.parseTimestamp((String) object); } return throwConstraintViolationException(actualType, this); }
if (equalsAny(actualType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { long millisDeserialized = DateUtil.getCodecFor(actualType).decodeLong(b, o, sortOrder); nanosDeserialized < MAX_NANOS_VALUE_EXCLUSIVE ? v.getNanos() + nanosDeserialized : nanosDeserialized); return v; } else if (equalsAny(actualType, PDate.INSTANCE, PUnsignedDate.INSTANCE, PTime.INSTANCE, PUnsignedTime.INSTANCE, PLong.INSTANCE, PUnsignedLong.INSTANCE)) { return new java.sql.Timestamp(actualType.getCodec().decodeLong(b, o, sortOrder));
@Override public boolean isCoercibleTo(PDataType targetType) { return equalsAny(targetType, this, PVarbinary.INSTANCE, PBinary.INSTANCE); }
@Override public boolean isCoercibleTo(PDataType targetType) { return equalsAny(targetType, this, PVarbinary.INSTANCE, PBinary.INSTANCE); }
@Override public boolean isCoercibleTo(PDataType targetType, Object value) { if (value != null) { if (targetType.equals(PUnsignedTimestamp.INSTANCE)) { return ((java.util.Date) value).getTime() >= 0; } else if (equalsAny(targetType, PUnsignedDate.INSTANCE, PUnsignedTime.INSTANCE)) { return ((java.util.Date) value).getTime() >= 0 && ((java.sql.Timestamp) value).getNanos() == 0; } else if (equalsAny(targetType, PDate.INSTANCE, PTime.INSTANCE)) { return ((java.sql.Timestamp) value).getNanos() == 0; } } return super.isCoercibleTo(targetType, value); }
@Override public boolean isCoercibleTo(PDataType targetType, Object value) { if (value != null) { if (targetType.equals(PUnsignedTimestamp.INSTANCE)) { return ((java.util.Date) value).getTime() >= 0; } else if (equalsAny(targetType, PUnsignedDate.INSTANCE, PUnsignedTime.INSTANCE)) { return ((java.util.Date) value).getTime() >= 0 && ((java.sql.Timestamp) value).getNanos() == 0; } else if (equalsAny(targetType, PDate.INSTANCE, PTime.INSTANCE)) { return ((java.sql.Timestamp) value).getNanos() == 0; } } return super.isCoercibleTo(targetType, value); }
@Override public int compareTo(Object lhs, Object rhs, PDataType rhsType) { if (lhs == rhs) { return 0; } if (lhs == null) { return -1; } if (rhs == null) { return 1; } if (equalsAny(rhsType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { return ((java.sql.Timestamp) lhs).compareTo((java.sql.Timestamp) rhs); } int c = ((java.util.Date) lhs).compareTo((java.util.Date) rhs); if (c != 0) return c; return ((java.sql.Timestamp) lhs).getNanos(); }
@Override public int compareTo(Object lhs, Object rhs, PDataType rhsType) { if (lhs == rhs) { return 0; } if (lhs == null) { return -1; } if (rhs == null) { return 1; } if (equalsAny(rhsType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { return ((java.sql.Timestamp) lhs).compareTo((java.sql.Timestamp) rhs); } int c = ((java.util.Date) lhs).compareTo((java.util.Date) rhs); if (c != 0) return c; return ((java.sql.Timestamp) lhs).getNanos(); }
@Override public Object toObject(Object object, PDataType actualType) { if (object == null) { return null; } if (equalsAny(actualType, PDate.INSTANCE, PUnsignedDate.INSTANCE, PTime.INSTANCE, PUnsignedTime.INSTANCE)) { return new java.sql.Timestamp(((java.util.Date) object).getTime()); } else if (equalsAny(actualType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { return object; } else if (equalsAny(actualType, PLong.INSTANCE, PUnsignedLong.INSTANCE)) { return new java.sql.Timestamp((Long) object); } else if (actualType == PDecimal.INSTANCE) { BigDecimal bd = (BigDecimal) object; long ms = bd.longValue(); int nanos = (bd.remainder(BigDecimal.ONE).multiply(QueryConstants.BD_MILLIS_NANOS_CONVERSION)) .intValue(); return DateUtil.getTimestamp(ms, nanos); } else if (actualType == PVarchar.INSTANCE) { return DateUtil.parseTimestamp((String) object); } return throwConstraintViolationException(actualType, this); }
@Override public Object toObject(Object object, PDataType actualType) { if (object == null) { return null; } if (equalsAny(actualType, PDate.INSTANCE, PUnsignedDate.INSTANCE, PTime.INSTANCE, PUnsignedTime.INSTANCE)) { return new java.sql.Timestamp(((java.util.Date) object).getTime()); } else if (equalsAny(actualType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { return object; } else if (equalsAny(actualType, PLong.INSTANCE, PUnsignedLong.INSTANCE)) { return new java.sql.Timestamp((Long) object); } else if (actualType == PDecimal.INSTANCE) { BigDecimal bd = (BigDecimal) object; long ms = bd.longValue(); int nanos = (bd.remainder(BigDecimal.ONE).multiply(QueryConstants.BD_MILLIS_NANOS_CONVERSION)) .intValue(); return DateUtil.getTimestamp(ms, nanos); } else if (actualType == PVarchar.INSTANCE) { return DateUtil.parseTimestamp((String) object); } return throwConstraintViolationException(actualType, this); }
if (equalsAny(actualType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { long millisDeserialized = DateUtil.getCodecFor(actualType).decodeLong(b, o, sortOrder); nanosDeserialized < MAX_NANOS_VALUE_EXCLUSIVE ? v.getNanos() + nanosDeserialized : nanosDeserialized); return v; } else if (equalsAny(actualType, PDate.INSTANCE, PUnsignedDate.INSTANCE, PTime.INSTANCE, PUnsignedTime.INSTANCE, PLong.INSTANCE, PUnsignedLong.INSTANCE)) { return new java.sql.Timestamp(actualType.getCodec().decodeLong(b, o, sortOrder));
if (equalsAny(actualType, PTimestamp.INSTANCE, PUnsignedTimestamp.INSTANCE)) { long millisDeserialized = DateUtil.getCodecFor(actualType).decodeLong(b, o, sortOrder); nanosDeserialized < MAX_NANOS_VALUE_EXCLUSIVE ? v.getNanos() + nanosDeserialized : nanosDeserialized); return v; } else if (equalsAny(actualType, PDate.INSTANCE, PUnsignedDate.INSTANCE, PTime.INSTANCE, PUnsignedTime.INSTANCE, PLong.INSTANCE, PUnsignedLong.INSTANCE)) { return new java.sql.Timestamp(actualType.getCodec().decodeLong(b, o, sortOrder));