Skip to content

Commit

Permalink
Changed getFormatter Function
Browse files Browse the repository at this point in the history
Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>
  • Loading branch information
GabeFernandez310 committed Mar 8, 2023
1 parent d30f749 commit 2b37b0d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@
import static org.opensearch.sql.utils.DateTimeFormatters.DATE_TIME_FORMATTER_LONG_YEAR;
import static org.opensearch.sql.utils.DateTimeFormatters.DATE_TIME_FORMATTER_SHORT_YEAR;
import static org.opensearch.sql.utils.DateTimeFormatters.DATE_TIME_FORMATTER_STRICT_WITH_TZ;
import static org.opensearch.sql.utils.DateTimeFormatters.FULL_DATE_LENGTH;
import static org.opensearch.sql.utils.DateTimeFormatters.NO_YEAR_DATE_LENGTH;
import static org.opensearch.sql.utils.DateTimeFormatters.SHORT_DATE_LENGTH;
import static org.opensearch.sql.utils.DateTimeFormatters.SINGLE_DIGIT_MONTH_DATE_LENGTH;
import static org.opensearch.sql.utils.DateTimeFormatters.SINGLE_DIGIT_YEAR_DATE_LENGTH;
import static org.opensearch.sql.utils.DateTimeUtils.extractDate;
import static org.opensearch.sql.utils.DateTimeUtils.extractDateTime;

Expand Down Expand Up @@ -1663,39 +1668,39 @@ private ExprValue exprToSeconds(ExprValue date) {
* @return is a DateTimeFormatter that can parse the input.
*/
private DateTimeFormatter getFormatter(int dateAsInt) {
if (dateAsInt < 0 || dateAsInt > 99999999) {
int length = String.format("%d", dateAsInt).length();

if (length > 8) {
throw new DateTimeException("Integer argument was out of range");
}

//Check below from YYYYMMDD - MMDD which format should be used
switch (length) {
//Check if dateAsInt is at least 8 digits long
case FULL_DATE_LENGTH:
return DATE_FORMATTER_LONG_YEAR;

//Check if dateAsInt is at least 8 digits long
if (dateAsInt - 9999999 > 0) {
return DATE_FORMATTER_LONG_YEAR;
}
//Check if dateAsInt is at least 6 digits long
case SHORT_DATE_LENGTH:
return DATE_FORMATTER_SHORT_YEAR;

//Check if dateAsInt is at least 6 digits long
if (dateAsInt - 99999 > 0) {
return DATE_FORMATTER_SHORT_YEAR;
}
//Check if dateAsInt is at least 5 digits long
case SINGLE_DIGIT_YEAR_DATE_LENGTH:
return DATE_FORMATTER_SINGLE_DIGIT_YEAR;

//Check if dateAsInt is at least 5 digits long
if (dateAsInt - 9999 > 0) {
return DATE_FORMATTER_SINGLE_DIGIT_YEAR;
}
//Check if dateAsInt is at least 4 digits long
case NO_YEAR_DATE_LENGTH:
return DATE_FORMATTER_NO_YEAR;

//Check if dateAsInt is at least 4 digits long
if (dateAsInt - 999 > 0) {
return DATE_FORMATTER_NO_YEAR;
}
//Check if dateAsInt is at least 3 digits long
case SINGLE_DIGIT_MONTH_DATE_LENGTH:
return DATE_FORMATTER_SINGLE_DIGIT_MONTH;

//Check if dateAsInt is at least 3 digits long
if (dateAsInt - 99 > 0) {
return DATE_FORMATTER_SINGLE_DIGIT_MONTH;
default:
break;
}

throw new DateTimeException("No Matching Format");

}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@
@UtilityClass
public class DateTimeFormatters {

public static final int FULL_DATE_LENGTH = 8;
public static final int SHORT_DATE_LENGTH = 6;
public static final int SINGLE_DIGIT_YEAR_DATE_LENGTH = 5;
public static final int NO_YEAR_DATE_LENGTH = 4;
public static final int SINGLE_DIGIT_MONTH_DATE_LENGTH = 3;

public static final DateTimeFormatter TIME_ZONE_FORMATTER_NO_COLON =
new DateTimeFormatterBuilder()
.appendOffset("+HHmm", "Z")
Expand Down

0 comments on commit 2b37b0d

Please sign in to comment.