From 7210c930b62ee9b147a30a18a2bd9dfb469fc608 Mon Sep 17 00:00:00 2001 From: praful Date: Mon, 5 Nov 2018 17:10:01 +0530 Subject: [PATCH 1/4] #3157 add methods toDate, fromDate --- .../src/main/java/com/google/cloud/Date.java | 34 ++++++++++++++++++ .../test/java/com/google/cloud/DateTest.java | 35 +++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java b/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java index 044a7ca72bf6..e70ca8e5a427 100644 --- a/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java +++ b/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java @@ -24,6 +24,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.threeten.bp.LocalDate; + /** * Represents a Date without time, such as 2017-03-17. Date is timezone independent. */ @@ -68,7 +70,39 @@ public static Date parseDate(String date) { int dayOfMonth = Integer.parseInt(matcher.group(3)); return new Date(year, month, dayOfMonth); } + + /** + * @param date + * @return LocalDate + */ + public static LocalDate toDate(Date date){ + return LocalDate.of(date.year, date.month, date.dayOfMonth); + } + + /** + * @param date + * @return Date + */ + public static Date toDate(LocalDate date){ + return new Date(date.getDayOfYear(), date.getMonthValue(), date.getDayOfMonth()); + } + /** + * @param date + * @return LocalDate + */ + public static LocalDate fromDate(Date date){ + return LocalDate.of(date.year, date.month, date.dayOfMonth); + } + + /** + * @param date + * @return Date + */ + public static Date fromDate(LocalDate date){ + return new Date(date.getDayOfYear(), date.getMonthValue(), date.getDayOfMonth()); + } + /** Returns the year. */ public int getYear() { return year; diff --git a/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/DateTest.java b/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/DateTest.java index 3c2817a92c68..e11e4569402a 100644 --- a/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/DateTest.java +++ b/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/DateTest.java @@ -23,6 +23,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import org.threeten.bp.LocalDate; /** Unit tests for {@link Date}. */ @RunWith(JUnit4.class) @@ -70,6 +71,40 @@ public void validOrdering() { public void serialization() { reserializeAndAssert(Date.fromYearMonthDay(2017, 4, 20)); } + + @Test + public void toLocalDate(){ + LocalDate localDate = Date.toDate(Date.parseDate("2016-09-18")); + assertThat(localDate.getYear()).isEqualTo(2016); + assertThat(localDate.getMonth().getValue()).isEqualTo(9); + assertThat(localDate.getDayOfMonth()).isEqualTo(18); + } + + @Test + public void toDate(){ + Date date = Date.toDate(LocalDate.of(2016, 9, 18)); + assertThat(date.getYear()).isEqualTo(2016); + assertThat(date.getMonth()).isEqualTo(9); + assertThat(date.getDayOfMonth()).isEqualTo(18); + + } + + @Test + public void fromLocalDate(){ + LocalDate localDate = Date.fromDate(Date.parseDate("2016-09-18")); + assertThat(localDate.getYear()).isEqualTo(2016); + assertThat(localDate.getMonth().getValue()).isEqualTo(9); + assertThat(localDate.getDayOfMonth()).isEqualTo(18); + } + + @Test + public void fromDate(){ + Date date = Date.fromDate(LocalDate.of(2016, 9, 18)); + assertThat(date.getYear()).isEqualTo(2016); + assertThat(date.getMonth()).isEqualTo(9); + assertThat(date.getDayOfMonth()).isEqualTo(18); + } + private void assertDescending(Date... dates) { for (int i = 0; i < dates.length - 1; i++) { From c9c3825a6388e55efb12cf08eda23e79ef08bd53 Mon Sep 17 00:00:00 2001 From: Praful Makani Date: Tue, 6 Nov 2018 18:34:40 +0530 Subject: [PATCH 2/4] resolved test case Date.getYear() --- .../src/main/java/com/google/cloud/Date.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java b/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java index e70ca8e5a427..32228d321c8b 100644 --- a/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java +++ b/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java @@ -84,7 +84,7 @@ public static LocalDate toDate(Date date){ * @return Date */ public static Date toDate(LocalDate date){ - return new Date(date.getDayOfYear(), date.getMonthValue(), date.getDayOfMonth()); + return new Date(date.getYear(), date.getMonthValue(), date.getDayOfMonth()); } /** @@ -100,7 +100,7 @@ public static LocalDate fromDate(Date date){ * @return Date */ public static Date fromDate(LocalDate date){ - return new Date(date.getDayOfYear(), date.getMonthValue(), date.getDayOfMonth()); + return new Date(date.getYear(), date.getMonthValue(), date.getDayOfMonth()); } /** Returns the year. */ From e72954ef745f18f29a8c1b0c300746853ef8a177 Mon Sep 17 00:00:00 2001 From: Praful Makani Date: Thu, 22 Nov 2018 20:36:00 +0530 Subject: [PATCH 3/4] update as per feedback --- .../src/main/java/com/google/cloud/Date.java | 65 ++++++++++--------- .../test/java/com/google/cloud/DateTest.java | 52 ++++++--------- 2 files changed, 53 insertions(+), 64 deletions(-) diff --git a/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java b/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java index 32228d321c8b..5d02e8d61991 100644 --- a/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java +++ b/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java @@ -16,15 +16,14 @@ package com.google.cloud; -import com.google.api.core.BetaApi; -import com.google.common.base.Preconditions; - import java.io.Serializable; +import java.util.Calendar; import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.threeten.bp.LocalDate; +import com.google.api.core.BetaApi; +import com.google.common.base.Preconditions; /** * Represents a Date without time, such as 2017-03-17. Date is timezone independent. @@ -70,39 +69,41 @@ public static Date parseDate(String date) { int dayOfMonth = Integer.parseInt(matcher.group(3)); return new Date(year, month, dayOfMonth); } - - /** - * @param date - * @return LocalDate - */ - public static LocalDate toDate(Date date){ - return LocalDate.of(date.year, date.month, date.dayOfMonth); - } - - /** - * @param date - * @return Date - */ - public static Date toDate(LocalDate date){ - return new Date(date.getYear(), date.getMonthValue(), date.getDayOfMonth()); - } /** - * @param date - * @return LocalDate - */ - public static LocalDate fromDate(Date date){ - return LocalDate.of(date.year, date.month, date.dayOfMonth); + * Set the Google Date. + * + * @param date the date of the Google Date. + * @return java.util.Date + */ + public static java.util.Date toJavaUtilDate(Date date) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + // Calender.MONTH starts from 0 while G C date starts from 1 + cal.set(date.year, date.month - 1, date.dayOfMonth); + return cal.getTime(); } - + /** - * @param date - * @return Date - */ - public static Date fromDate(LocalDate date){ - return new Date(date.getYear(), date.getMonthValue(), date.getDayOfMonth()); + * Set the Java Util Date. + * + * @param date the date of the java.util.Date + * @return Google Java Date + */ + public static Date fromJavaUtilDate(java.util.Date date) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + // Calender.MONTH starts from 0 while G C date starts from 1 + return new Date(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH)); } - + /** Returns the year. */ public int getYear() { return year; diff --git a/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/DateTest.java b/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/DateTest.java index e11e4569402a..31dbf6416bbc 100644 --- a/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/DateTest.java +++ b/google-cloud-clients/google-cloud-core/src/test/java/com/google/cloud/DateTest.java @@ -19,16 +19,21 @@ import static com.google.common.testing.SerializableTester.reserializeAndAssert; import static com.google.common.truth.Truth.assertThat; -import com.google.common.testing.EqualsTester; +import java.text.ParseException; +import java.text.SimpleDateFormat; + import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import org.threeten.bp.LocalDate; + +import com.google.common.testing.EqualsTester; /** Unit tests for {@link Date}. */ @RunWith(JUnit4.class) public class DateTest { + private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + @Test public void parseDate() { Date date = Date.parseDate("2016-09-18"); @@ -71,40 +76,23 @@ public void validOrdering() { public void serialization() { reserializeAndAssert(Date.fromYearMonthDay(2017, 4, 20)); } - - @Test - public void toLocalDate(){ - LocalDate localDate = Date.toDate(Date.parseDate("2016-09-18")); - assertThat(localDate.getYear()).isEqualTo(2016); - assertThat(localDate.getMonth().getValue()).isEqualTo(9); - assertThat(localDate.getDayOfMonth()).isEqualTo(18); - } - - @Test - public void toDate(){ - Date date = Date.toDate(LocalDate.of(2016, 9, 18)); - assertThat(date.getYear()).isEqualTo(2016); - assertThat(date.getMonth()).isEqualTo(9); - assertThat(date.getDayOfMonth()).isEqualTo(18); - - } - + @Test - public void fromLocalDate(){ - LocalDate localDate = Date.fromDate(Date.parseDate("2016-09-18")); - assertThat(localDate.getYear()).isEqualTo(2016); - assertThat(localDate.getMonth().getValue()).isEqualTo(9); - assertThat(localDate.getDayOfMonth()).isEqualTo(18); + public void testToJavaUtilDate() throws ParseException { + Date gcDate = Date.parseDate("2016-09-18"); + java.util.Date juDate1 = SIMPLE_DATE_FORMAT.parse("2016-09-18"); + java.util.Date juDate2 = Date.toJavaUtilDate(gcDate); + assertThat(juDate1).isEqualTo(juDate2); } - + @Test - public void fromDate(){ - Date date = Date.fromDate(LocalDate.of(2016, 9, 18)); - assertThat(date.getYear()).isEqualTo(2016); - assertThat(date.getMonth()).isEqualTo(9); - assertThat(date.getDayOfMonth()).isEqualTo(18); + public void testFromJavaUtilDate() throws ParseException { + java.util.Date juDate = SIMPLE_DATE_FORMAT.parse("2016-09-18"); + Date gcDate = Date.fromJavaUtilDate(juDate); + assertThat(gcDate.getYear()).isEqualTo(2016); + assertThat(gcDate.getMonth()).isEqualTo(9); + assertThat(gcDate.getDayOfMonth()).isEqualTo(18); } - private void assertDescending(Date... dates) { for (int i = 0; i < dates.length - 1; i++) { From ccbfff2bb4f6208fa5c6cd52d11a0d4907135e91 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Wed, 28 Nov 2018 10:59:28 -0800 Subject: [PATCH 4/4] Update javadoc string --- .../src/main/java/com/google/cloud/Date.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java b/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java index 5d02e8d61991..002ef84cdfa9 100644 --- a/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java +++ b/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/Date.java @@ -71,7 +71,7 @@ public static Date parseDate(String date) { } /** - * Set the Google Date. + * Convert a Google Date to a Java Util Date. * * @param date the date of the Google Date. * @return java.util.Date @@ -88,7 +88,7 @@ public static java.util.Date toJavaUtilDate(Date date) { } /** - * Set the Java Util Date. + * Convert a Java Util Date to a Google Date. * * @param date the date of the java.util.Date * @return Google Java Date