@Override public ConnectorPageSource createPageSource( ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorSplit split, List<ColumnHandle> columns) { AtopSplit atopSplit = (AtopSplit) split; ImmutableList.Builder<Type> types = ImmutableList.builder(); ImmutableList.Builder<AtopColumn> atopColumns = ImmutableList.builder(); for (ColumnHandle column : columns) { AtopColumnHandle atopColumnHandle = (AtopColumnHandle) column; AtopColumn atopColumn = atopSplit.getTable().getColumn(atopColumnHandle.getName()); atopColumns.add(atopColumn); types.add(typeManager.getType(atopColumn.getType())); } ZonedDateTime date = atopSplit.getDate(); checkArgument(date.equals(date.withHour(0).withMinute(0).withSecond(0).withNano(0)), "Expected date to be at beginning of day"); return new AtopPageSource(readerPermits, atopFactory, session, utf8Slice(atopSplit.getHost().getHostText()), atopSplit.getTable(), date, atopColumns.build(), types.build()); } }
@Override public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorTableLayoutHandle layoutHandle, SplitSchedulingStrategy splitSchedulingStrategy) { AtopTableLayoutHandle handle = (AtopTableLayoutHandle) layoutHandle; AtopTableHandle table = handle.getTableHandle(); List<ConnectorSplit> splits = new ArrayList<>(); ZonedDateTime end = ZonedDateTime.now(timeZone); for (Node node : nodeManager.getWorkerNodes()) { ZonedDateTime start = end.minusDays(maxHistoryDays - 1).withHour(0).withMinute(0).withSecond(0).withNano(0); while (start.isBefore(end)) { ZonedDateTime splitEnd = start.withHour(23).withMinute(59).withSecond(59).withNano(0); Domain splitDomain = Domain.create(ValueSet.ofRanges(Range.range(TIMESTAMP_WITH_TIME_ZONE, 1000 * start.toEpochSecond(), true, 1000 * splitEnd.toEpochSecond(), true)), false); if (handle.getStartTimeConstraint().overlaps(splitDomain) && handle.getEndTimeConstraint().overlaps(splitDomain)) { splits.add(new AtopSplit(table.getTable(), node.getHostAndPort(), start.toEpochSecond(), start.getZone())); } start = start.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); } } return new FixedSplitSource(splits); } }
ZonedDateTime buildZonedStartAt(ZonedDateTime zonedNow, ZoneId zoneId) { ZonedDateTime zonedStartAt = getZonedFromTs(atTime, zoneId); zonedStartAt = zonedNow .withHour(zonedStartAt.getHour()) .withMinute(zonedStartAt.getMinute()) .withSecond(zonedStartAt.getSecond()); return adjustToStartDate(zonedStartAt, zonedNow, zoneId); }
public ZonedDateTime withSecond(int value) { return dt.withSecond(value); }
case 'H': if (round) { dateTime = dateTime.withMinute(0).withSecond(0).withNano(0); } else { dateTime = dateTime.plusHours(sign * num); case 'm': if (round) { dateTime = dateTime.withSecond(0).withNano(0); } else { dateTime = dateTime.plusMinutes(sign * num);
public ZonedDateTime withSecond(int value) { return dt.withSecond(value); }
public ZonedDateTime withSecond(int value) { return dt.withSecond(value); }
public static ZonedDateTime toZeroMSN(ZonedDateTime dateTime) { return dateTime.withMinute(0).withSecond(0).withNano(0); }
public static ZonedDateTime roundDownMinutes(ZonedDateTime time, int step) { int mins = time.getMinute(); time = time.withSecond(0).withNano(0); if (mins % step == 0) return time; if (60 % step != 0) throw new IllegalArgumentException("Invalid step: " + step); return time.withMinute(mins - (mins % step)); }
/** * Find out next daily execution * * @param targetHour Target hour * @param targetMin Target minute * @param targetSec Target second * @return time in second to wait */ private long computNextDilay(int targetHour, int targetMin, int targetSec) { final LocalDateTime localNow = LocalDateTime.now(); final ZoneId currentZone = ZoneId.systemDefault(); final ZonedDateTime zonedNow = ZonedDateTime.of(localNow, currentZone); ZonedDateTime zonedNextTarget = zonedNow.withHour(targetHour).withMinute(targetMin).withSecond(targetSec); while (zonedNow.compareTo(zonedNextTarget) > 0) { zonedNextTarget = zonedNextTarget.plusDays(1); } final Duration duration = Duration.between(zonedNow, zonedNextTarget); return duration.getSeconds(); }
public static long offsetCurrentTimeMillis(int offsetDays, int hour, int minute, int secord) { ZonedDateTime ldt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(currentTimeMillis()), ZoneId.systemDefault()); if (offsetDays > 0) { ldt = ldt.plusDays(offsetDays); } else if (offsetDays < 0) { ldt = ldt.minusDays(offsetDays); } ldt = ldt.withHour(hour); ldt = ldt.withMinute(minute); ldt = ldt.withSecond(secord); return ldt.toEpochSecond() * 1000; }
@Override public Instant instant() { ZonedDateTime dt = ZonedDateTime.now(zone); if (year != null) dt = dt.withYear(year); if (month != null) dt = dt.withMonth(month); if (day != null) dt = dt.withDayOfMonth(day); if (hour != null) dt = dt.withHour(hour); if (min != null) dt = dt.withMinute(min); if (sec != null) dt = dt.withSecond(sec); return dt.toInstant(); }
/** * * @return a instance of java.time.ZonedDateTime with 00:00:00.000 for the time part * @since 2.1.0 */ public Temporal createTodayForTimeZone(final Object zoneId) { return ZonedDateTime.now(zoneId(zoneId)) .withHour(0).withMinute(0).withSecond(0).withNano(0); }
/** * * @return a instance of java.time.ZonedDateTime with 00:00:00.000 for the time part * @since 2.1.0 */ public Temporal createTodayForTimeZone(final Object zoneId) { return ZonedDateTime.now(zoneId(zoneId)) .withHour(0).withMinute(0).withSecond(0).withNano(0); }
public static ZonedDateTime toZeroHMSN(ZonedDateTime dateTime) { return dateTime.withHour(0).withMinute(0).withSecond(0).withNano(0); }
@Override public final boolean isValid(final ZonedDateTime pvalue, final ConstraintValidatorContext pcontext) { if (pvalue == null) { return true; } final ZonedDateTime dateLimit = ZonedDateTime.now().minusYears(minYears).withHour(0) .withMinute(0).withSecond(0).withNano(0); return !dateLimit.isBefore(pvalue.withHour(0).withMinute(0).withSecond(0).withNano(0)); } }
public static ZonedDateTime roundUpMinutes(ZonedDateTime time, int step) { int mins = time.getMinute(); time = time.withSecond(0).withNano(0); if (mins % step == 0) return time; if (60 % step != 0) throw new IllegalArgumentException("Invalid step: " + step); mins = mins + step - (mins % step); return mins < 60 ? time.withMinute(mins) : time.plusHours(1).withMinute(mins - 60); }
@Parameters(name = "{0}") public static Collection<Object[]> generateData() { List<Object[]> params = new ArrayList<>(); ZonedDateTime dateTime = ZonedDateTime.of(2016, 3, 16, 16, 0, 0, 0, ZoneId.of("Europe/Paris")); for (int i = 0; i < 4; i++) { int nanos = 123 * (i == 0 ? 0 : 1) * (int) Math.pow(1000, i > 1 ? i - 1 : 0); params.add(new Object[]{ISO_INSTANT.format(dateTime.withNano(nanos)), java.sql.Timestamp.class}); } params.add(new Object[]{ISO_LOCAL_TIME.format(dateTime.withSecond(1)), java.sql.Time.class}); params.add(new Object[]{dateTime.toLocalDate().toString(), java.sql.Date.class}); params.add(new Object[]{"f47ac10b-58cc-4372-a567-0e02b2c3d479", UUID.class}); return params; }
@Override public ConnectorPageSource createPageSource( ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorSplit split, List<ColumnHandle> columns) { AtopSplit atopSplit = (AtopSplit) split; ImmutableList.Builder<Type> types = ImmutableList.builder(); ImmutableList.Builder<AtopColumn> atopColumns = ImmutableList.builder(); for (ColumnHandle column : columns) { AtopColumnHandle atopColumnHandle = (AtopColumnHandle) column; AtopColumn atopColumn = atopSplit.getTable().getColumn(atopColumnHandle.getName()); atopColumns.add(atopColumn); types.add(typeManager.getType(atopColumn.getType())); } ZonedDateTime date = atopSplit.getDate(); checkArgument(date.equals(date.withHour(0).withMinute(0).withSecond(0).withNano(0)), "Expected date to be at beginning of day"); return new AtopPageSource(readerPermits, atopFactory, session, utf8Slice(atopSplit.getHost().getHostText()), atopSplit.getTable(), date, atopColumns.build(), types.build()); } }
@Override public ConnectorSplitSource getSplits(ConnectorTransactionHandle transactionHandle, ConnectorSession session, ConnectorTableLayoutHandle layoutHandle, SplitSchedulingStrategy splitSchedulingStrategy) { AtopTableLayoutHandle handle = (AtopTableLayoutHandle) layoutHandle; AtopTableHandle table = handle.getTableHandle(); List<ConnectorSplit> splits = new ArrayList<>(); ZonedDateTime end = ZonedDateTime.now(timeZone); for (Node node : nodeManager.getWorkerNodes()) { ZonedDateTime start = end.minusDays(maxHistoryDays - 1).withHour(0).withMinute(0).withSecond(0).withNano(0); while (start.isBefore(end)) { ZonedDateTime splitEnd = start.withHour(23).withMinute(59).withSecond(59).withNano(0); Domain splitDomain = Domain.create(ValueSet.ofRanges(Range.range(TIMESTAMP_WITH_TIME_ZONE, 1000 * start.toEpochSecond(), true, 1000 * splitEnd.toEpochSecond(), true)), false); if (handle.getStartTimeConstraint().overlaps(splitDomain) && handle.getEndTimeConstraint().overlaps(splitDomain)) { splits.add(new AtopSplit(table.getTable(), node.getHostAndPort(), start.toEpochSecond(), start.getZone())); } start = start.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0); } } return new FixedSplitSource(splits); } }