Skip to content

Commit

Permalink
byte[], char[], ByteBuffer, CharBuffer tests added.
Browse files Browse the repository at this point in the history
LocalTime to Calendar support added (gets a Calendar now in the proper timezone and then matches the time to the LocalTime).
Updated all Calendar creations with Timezone in getInstance() and calling getTime() to cause allFieldsSet to be true for consistency.
  • Loading branch information
jdereg committed Mar 3, 2024
1 parent 22dc4c4 commit a4150a1
Show file tree
Hide file tree
Showing 9 changed files with 222 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.UUID;

/**
Expand Down Expand Up @@ -41,7 +40,7 @@ private BigDecimalConversions() { }
static Calendar toCalendar(Object from, Converter converter) {
BigDecimal seconds = (BigDecimal) from;
BigDecimal millis = seconds.multiply(GRAND);
Calendar calendar = GregorianCalendar.getInstance(converter.getOptions().getTimeZone());
Calendar calendar = Calendar.getInstance(converter.getOptions().getTimeZone());
calendar.setTimeInMillis(millis.longValue());
return calendar;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.UUID;

/**
Expand Down Expand Up @@ -84,7 +83,7 @@ static Timestamp toTimestamp(Object from, Converter converter) {
static Calendar toCalendar(Object from, Converter converter) {
BigInteger epochNanos = (BigInteger) from;
BigInteger epochMillis = epochNanos.divide(MILLION);
Calendar calendar = GregorianCalendar.getInstance(converter.getOptions().getTimeZone());
Calendar calendar = Calendar.getInstance(converter.getOptions().getTimeZone());
calendar.setTimeInMillis(epochMillis.longValue());
return calendar;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,7 @@ private static void buildFactoryConversions() {
CONVERSION_DB.put(pair(java.sql.Date.class, Calendar.class), DateConversions::toCalendar);
CONVERSION_DB.put(pair(Timestamp.class, Calendar.class), DateConversions::toCalendar);
CONVERSION_DB.put(pair(Instant.class, Calendar.class), InstantConversions::toCalendar);
CONVERSION_DB.put(pair(LocalTime.class, Calendar.class), LocalTimeConversions::toCalendar);
CONVERSION_DB.put(pair(LocalDate.class, Calendar.class), LocalDateConversions::toCalendar);
CONVERSION_DB.put(pair(LocalDateTime.class, Calendar.class), LocalDateTimeConversions::toCalendar);
CONVERSION_DB.put(pair(ZonedDateTime.class, Calendar.class), ZonedDateTimeConversions::toCalendar);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
* @author John DeRegnaucourt ([email protected])
Expand Down Expand Up @@ -54,7 +53,7 @@ static Date toSqlDate(Object from, Converter converter) {
static Calendar toCalendar(Object from, Converter converter) {
double seconds = (double) from;
long epochMillis = (long)(seconds * 1000);
Calendar calendar = GregorianCalendar.getInstance(converter.getOptions().getTimeZone());
Calendar calendar = Calendar.getInstance(converter.getOptions().getTimeZone());
calendar.clear();
calendar.setTimeInMillis(epochMillis);
return calendar;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.concurrent.atomic.AtomicLong;

/**
Expand Down Expand Up @@ -75,7 +74,7 @@ static Timestamp toTimestamp(Object from, Converter converter) {

static Calendar toCalendar(Object from, Converter converter) {
ZonedDateTime time = toZonedDateTime(from, converter);
GregorianCalendar calendar = new GregorianCalendar(converter.getOptions().getTimeZone());
Calendar calendar = Calendar.getInstance(converter.getOptions().getTimeZone());
calendar.setTimeInMillis(time.toInstant().toEpochMilli());
return calendar;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.concurrent.atomic.AtomicLong;

/**
Expand Down Expand Up @@ -74,7 +73,7 @@ static Timestamp toTimestamp(Object from, Converter converter) {

static Calendar toCalendar(Object from, Converter converter) {
ZonedDateTime time = toZonedDateTime(from, converter);
GregorianCalendar calendar = new GregorianCalendar(converter.getOptions().getTimeZone());
Calendar calendar = Calendar.getInstance(converter.getOptions().getTimeZone());
calendar.setTimeInMillis(time.toInstant().toEpochMilli());
return calendar;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.math.RoundingMode;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
Expand Down Expand Up @@ -86,4 +87,18 @@ static String toString(Object from, Converter converter) {
LocalTime localTime = (LocalTime) from;
return localTime.format(DateTimeFormatter.ISO_LOCAL_TIME);
}

static Calendar toCalendar(Object from, Converter converter) {
LocalTime localTime = (LocalTime) from;
// Obtain the current date in the specified TimeZone
Calendar cal = Calendar.getInstance(converter.getOptions().getTimeZone());

// Set the calendar instance to have the same time as the LocalTime passed in
cal.set(Calendar.HOUR_OF_DAY, localTime.getHour());
cal.set(Calendar.MINUTE, localTime.getMinute());
cal.set(Calendar.SECOND, localTime.getSecond());
cal.set(Calendar.MILLISECOND, localTime.getNano() / 1_000_000); // Convert nanoseconds to milliseconds
cal.getTime(); // compute fields
return cal;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -220,10 +220,10 @@ static Calendar toCalendar(Object from, Converter converter) {
tz = TimeZone.getTimeZone(options.getZoneId());
}

Calendar cal = Calendar.getInstance();
cal.setTimeZone(tz);
Calendar cal = Calendar.getInstance(tz);
Date epochInMillis = converter.convert(map.get(TIME), Date.class);
cal.setTimeInMillis(epochInMillis.getTime());
cal.getTime();
return cal;
} else {
return fromValueForMultiKey(map, converter, Calendar.class, CALENDAR_PARAMS);
Expand Down
Loading

0 comments on commit a4150a1

Please sign in to comment.