private long parseDateTime(String value, ZoneId timeZone, boolean roundUpIfNoTime) { DateFormatter formatter = roundUpIfNoTime ? this.roundUpFormatter : this.formatter; try { if (timeZone == null) { return DateFormatters.toZonedDateTime(formatter.parse(value)).toInstant().toEpochMilli(); } else { TemporalAccessor accessor = formatter.parse(value); ZoneId zoneId = TemporalQueries.zone().queryFrom(accessor); if (zoneId != null) { timeZone = zoneId; } return DateFormatters.toZonedDateTime(accessor).withZoneSameLocal(timeZone).toInstant().toEpochMilli(); } } catch (IllegalArgumentException | DateTimeException e) { throw new ElasticsearchParseException("failed to parse date field [{}]: [{}]", e, value, e.getMessage()); } } }
@UserFunction @Description("apoc.date.fields('2012-12-23',('yyyy-MM-dd')) - return columns and a map representation of date parsed with the given format with entries for years,months,weekdays,days,hours,minutes,seconds,zoneid") public Map<String,Object> fields(final @Name("date") String date, final @Name(value = "pattern", defaultValue = DEFAULT_FORMAT) String pattern) { if (date == null) { return Util.map(); } DateTimeFormatter fmt = getSafeDateTimeFormatter(pattern); TemporalAccessor temporal = fmt.parse(date); FieldResult result = new FieldResult(); for (final TemporalQuery<Consumer<FieldResult>> query : DT_FIELDS_SELECTORS) { query.queryFrom(temporal).accept(result); } return result.asMap(); }
/** * Builds the specified type from the values in this builder. * <p> * This attempts to build the specified type from this builder. * If the builder cannot return the type, an exception is thrown. * * @param <R> the type to return * @param type the type to invoke {@code from} on, not null * @return the extracted value, not null * @throws DateTimeException if an error occurs */ public <R> R build(TemporalQuery<R> type) { return type.queryFrom(this); }
default <R> R query(TemporalQuery<R> query) { return query.queryFrom(this); }
@Override public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) { if ( ! (obj instanceof Date) && ! (obj instanceof TemporalAccessor)) { return toAppendTo; } String resulStr = ""; if (calToStr != null) { resulStr = Optional.ofNullable(getCalendar(obj)).map(calToStr::apply).orElse(""); } else if (symbols != null && calendarField > 0) { resulStr = Optional.ofNullable(getCalendar(obj)).map(i -> i.get(calendarField)).map(i -> symbols.get()[i.intValue()]).orElse(""); } else if (nf != null) { long value = 0; if(transform != null) { value = transform.queryFrom(getTemporalAccessor(obj)); resulStr = nf.format(value); } else if (field != null){ resulStr = Optional.ofNullable(getTemporalAccessor(obj)).map( i -> i.getLong(field)).map(i -> nf.format(i)).orElse(""); } } else if ( dtf != null) { resulStr = Optional.ofNullable(getTemporalAccessor(obj)).map( i -> dtf.format(i)).orElse(""); } if(transformResult != null && resulStr != null ) { resulStr = transformResult.apply(resulStr); } return toAppendTo.append(resulStr); } @Override
@Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.zoneId() || query == TemporalQueries.chronology() || query == TemporalQueries.precision()) { return null; } return query.queryFrom(this); }
private long parseDateTime(String value, ZoneId timeZone, boolean roundUpIfNoTime) { DateFormatter formatter = roundUpIfNoTime ? this.roundUpFormatter : this.formatter; try { if (timeZone == null) { return DateFormatters.toZonedDateTime(formatter.parse(value)).toInstant().toEpochMilli(); } else { TemporalAccessor accessor = formatter.parse(value); ZoneId zoneId = TemporalQueries.zone().queryFrom(accessor); if (zoneId != null) { timeZone = zoneId; } return DateFormatters.toZonedDateTime(accessor).withZoneSameLocal(timeZone).toInstant().toEpochMilli(); } } catch (IllegalArgumentException | DateTimeException e) { throw new ElasticsearchParseException("failed to parse date field [{}]: [{}]", e, value, e.getMessage()); } } }
private long parseDateTime(String value, ZoneId timeZone, boolean roundUpIfNoTime) { DateFormatter formatter = roundUpIfNoTime ? this.roundUpFormatter : this.formatter; try { if (timeZone == null) { return DateFormatters.toZonedDateTime(formatter.parse(value)).toInstant().toEpochMilli(); } else { TemporalAccessor accessor = formatter.parse(value); ZoneId zoneId = TemporalQueries.zone().queryFrom(accessor); if (zoneId != null) { timeZone = zoneId; } return DateFormatters.toZonedDateTime(accessor).withZoneSameLocal(timeZone).toInstant().toEpochMilli(); } } catch (IllegalArgumentException | DateTimeException e) { throw new ElasticsearchParseException("failed to parse date field [{}]: [{}]", e, value, e.getMessage()); } } }
@SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.chronology()) { return (R) effectiveChrono; } if (query == TemporalQueries.zoneId()) { return (R) effectiveZone; } if (query == TemporalQueries.precision()) { return temporal.query(query); } return query.queryFrom(this); } };
@SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.zoneId()) { return (R) zone; } else if (query == TemporalQueries.chronology()) { return (R) chrono; } else if (query == TemporalQueries.localDate()) { return date != null ? (R) LocalDate.from(date) : null; } else if (query == TemporalQueries.localTime()) { return (R) time; } else if (query == TemporalQueries.zone() || query == TemporalQueries.offset()) { return query.queryFrom(this); } else if (query == TemporalQueries.precision()) { return null; // not a complete date/time } // inline TemporalAccessor.super.query(query) as an optimization // non-JDK classes are not permitted to make this optimization return query.queryFrom(this); }
@SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.precision()) { return (R) ChronoUnit.ERAS; } if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset() || query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) { return null; } return query.queryFrom(this); }
@SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.precision()) { return (R) ChronoUnit.ERAS; } if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset() || query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) { return null; } return query.queryFrom(this); }
@SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.precision()) { return (R) ChronoUnit.ERAS; } if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset() || query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) { return null; } return query.queryFrom(this); }
@SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.precision()) { return (R) ChronoUnit.ERAS; } if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset() || query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) { return null; } return query.queryFrom(this); }
@SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.precision()) { return (R) ChronoUnit.ERAS; } if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset() || query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) { return null; } return query.queryFrom(this); }
return null; return query.queryFrom(this);
/** * Queries this day-of-week using the specified query. * <p> * This queries this day-of-week using the specified query strategy object. * The {@code TemporalQuery} object defines the logic to be used to * obtain the result. Read the documentation of the query to understand * what the result of this method will be. * <p> * The result of this method is obtained by invoking the * {@link TemporalQuery#queryFrom(TemporalAccessor)} method on the * specified query passing {@code this} as the argument. * * @param <R> the type of the result * @param query the query to invoke, not null * @return the query result, null may be returned (defined by the query) * @throws DateTimeException if unable to query (defined by the query) * @throws ArithmeticException if numeric overflow occurs (defined by the query) */ @SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.precision()) { return (R) DAYS; } else if (query == TemporalQueries.localDate() || query == TemporalQueries.localTime() || query == TemporalQueries.chronology() || query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) { return null; } return query.queryFrom(this); }
/** * Queries this offset using the specified query. * <p> * This queries this offset using the specified query strategy object. * The {@code TemporalQuery} object defines the logic to be used to * obtain the result. Read the documentation of the query to understand * what the result of this method will be. * <p> * The result of this method is obtained by invoking the * {@link TemporalQuery#queryFrom(TemporalAccessor)} method on the * specified query passing {@code this} as the argument. * * @param <R> the type of the result * @param query the query to invoke, not null * @return the query result, null may be returned (defined by the query) * @throws DateTimeException if unable to query (defined by the query) * @throws ArithmeticException if numeric overflow occurs (defined by the query) */ @SuppressWarnings("unchecked") @Override public <R> R query(TemporalQuery<R> query) { if (query == TemporalQueries.offset() || query == TemporalQueries.zone()) { return (R) this; } else if (query == TemporalQueries.localDate() || query == TemporalQueries.localTime() || query == TemporalQueries.precision() || query == TemporalQueries.chronology() || query == TemporalQueries.zoneId()) { return null; } return query.queryFrom(this); }
return null; return query.queryFrom(this);
return null; return query.queryFrom(this);