All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jodd.typeconverter.impl.SqlTimestampConverter Maven / Gradle / Ivy

Go to download

Jodd Core tools and utilities, including type converters, JDateTime, cache etc.

There is a newer version: 5.3.0
Show newest version
// Copyright (c) 2003-2014, Jodd Team (jodd.org). All Rights Reserved.

package jodd.typeconverter.impl;

import jodd.datetime.JDateTime;
import jodd.typeconverter.TypeConversionException;
import jodd.typeconverter.TypeConverter;
import jodd.util.StringUtil;

import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;

/**
 * Converts given object to java.sql.Timestamp.
 * Conversion rules:
 * 
    *
  • null value is returned as null
  • *
  • object of destination type is simply casted
  • *
  • Calendar object is converted
  • *
  • Date object is converted
  • *
  • JDateTime object is converted
  • *
  • Number is used as number of milliseconds
  • *
  • finally, if string value contains only numbers it is parsed as milliseconds; * otherwise as JDateTime pattern
  • *
*/ public class SqlTimestampConverter implements TypeConverter { public Timestamp convert(Object value) { if (value == null) { return null; } if (value instanceof Timestamp) { return (Timestamp) value; } if (value instanceof Calendar) { Calendar calendar = (Calendar) value; return new Timestamp(calendar.getTimeInMillis()); } if (value instanceof Date) { Date date = (Date) value; return new Timestamp(date.getTime()); } if (value instanceof JDateTime) { return ((JDateTime) value).convertToSqlTimestamp(); } if (value instanceof Number) { return new Timestamp(((Number)value).longValue()); } String stringValue = value.toString().trim(); // try yyyy-mm-dd for valueOf if (StringUtil.containsOnlyDigits(stringValue) == false) { try { return Timestamp.valueOf(stringValue); } catch (IllegalArgumentException iaex) { throw new TypeConversionException(value, iaex); } } // assume string to be a number try { long milliseconds = Long.parseLong(stringValue); return new Timestamp(milliseconds); } catch (NumberFormatException nfex) { throw new TypeConversionException(value, nfex); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy