protected Date getCurrentTimestamp() { return timeSource.currentTimestamp(); }
@Override public long getTimeMillis() { return timeSource.currentTimeMillis(); } }
@Override public Clock getClock() { ZonedDateTime now = timeSource.now(); return Clock.fixed(now.toInstant(), now.getZone()); } }
@Override public String modifySequenceSql(String sequenceName, long startWith) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); return String.format("drop table %1$s ^ " + "create table %1$s (ID bigint identity(%2$d,1), CREATE_TS datetime) ^ " + "insert into %1$s (CREATE_TS) values ({ts '%3$s'})", sequenceName.toUpperCase(), startWith, dateFormat.format(AppBeans.get(TimeSource.class).currentTimestamp())); }
@Override public void setFinished(ScheduledTask task) { lastFinishCache.put(task, timeSource.currentTimeMillis()); }
@Override public Map<String, Object> getParams() { Map<String, Object> params = new HashMap<>(); for (ArgDef argDef : argDefs) { Class javaType = expandedParamTypes.get(argDef.firstParamName); if (javaType == null) throw new RuntimeException(String.format("Type of parameter %s not resolved", argDef.firstParamName)); ZonedDateTime zonedDateTime = timeSource.now(); if (transformations.isDateTypeSupportsTimeZones(javaType)) { zonedDateTime = zonedDateTime.withZoneSameInstant(argDef.timeZone.toZoneId()); } ZonedDateTime firstZonedDateTime = zonedDateTime.truncatedTo(ChronoUnit.DAYS); ZonedDateTime secondZonedDateTime = firstZonedDateTime.plusDays(1); params.put(argDef.firstParamName, transformations.transformFromZDT(firstZonedDateTime, javaType)); params.put(argDef.secondParamName, transformations.transformFromZDT(secondZonedDateTime, javaType)); } return params; }
public LockInfo(User user, String entityName, String entityId) { this.entityName = entityName; this.entityId = entityId; TimeSource timeSource = AppBeans.get(TimeSource.NAME); this.since = timeSource.currentTimestamp(); this.user = user; }
/** * @return string representing the offset of the given time zone from GMT */ public String getDisplayOffset(@Nullable TimeZone timeZone) { if (timeZone == null) return ""; int offsetSec = timeZone.getOffset(timeSource.currentTimeMillis()) / 1000; int offsetHours = offsetSec / 3600; int offsetMins = (offsetSec % 3600) / 60; String str = StringUtils.leftPad(String.valueOf(Math.abs(offsetHours)), 2, '0') + ":" + StringUtils.leftPad(String.valueOf(Math.abs(offsetMins)), 2, '0'); String sign = offsetHours >= 0 ? "+" : "-"; return "GMT" + sign + str; }
@Override public Map<String, Object> getParams() { Map<String, Object> params = new HashMap<>(); for (MacroArgsTimeBetween macroArg : macroArgs) { ZonedDateTime zonedDateTime = timeSource.now(); Class javaType = expandedParamTypes.get(macroArg.getParamName()); if (javaType == null) throw new RuntimeException(String.format("Type of parameter %s not resolved", macroArg.getParamName())); if (transformations.isDateTypeSupportsTimeZones(javaType)) { zonedDateTime = zonedDateTime.withZoneSameInstant(macroArg.getTimeZone().toZoneId()); } BiFunction<ZonedDateTime, Integer, ZonedDateTime> calc = units.get(macroArg.getUnit()); if (calc == null) throw new RuntimeException(String.format("Invalid macro argument: %s", macroArg.getUnit())); zonedDateTime = calc.apply(zonedDateTime, macroArg.getOffset()); params.put(macroArg.getParamName(), transformations.transformFromZDT(zonedDateTime, javaType)); } return params; }
@Override public EntitySnapshot createSnapshot(Entity entity, View view) { return createSnapshot(entity, view, timeSource.currentTimestamp()); }
@Override public boolean setRunning(ScheduledTask task, boolean running) { log.trace("{}: mark running={}", task, running); if (running) { task.setCurrentStartTimestamp(timeSource.currentTimeMillis()); Long prev = runningTasks.putIfAbsent(task, task.getCurrentStartTimestamp()); return prev != null; } else { Long startTime = runningTasks.get(task); if (Objects.equals(task.getCurrentStartTimestamp(), startTime)) { runningTasks.remove(task); } return false; } }
timeZone = TimeZone.getDefault(); if (paramArg.isNow()) { zonedDateTime = timeSource.now(); javaType = expandedParamTypes.get(paramName); if (javaType == null)
@Override public EntitySnapshot createTempSnapshot(Entity entity, View view) { return createTempSnapshot(entity, view, timeSource.currentTimestamp()); }
protected boolean isRunning(ScheduledTask task) { Long startTime = runningTasks.get(task); if (startTime != null) { boolean timedOut; if (task.getTimeout() != null && task.getTimeout() != 0) { timedOut = (startTime + task.getTimeout() * 1000) < timeSource.currentTimeMillis(); } else { timedOut = (startTime + 1000 * 60 * 60 * 3) < timeSource.currentTimeMillis(); } if (timedOut) { runningTasks.remove(task); } else { return true; } } return false; }
timeZone = TimeZone.getDefault(); if (paramArg.isNow()) { zonedDateTime = timeSource.now(); javaType = expandedParamTypes.get(paramName); if (javaType == null)
/** * @return short string representation of the given time zone */ public String getDisplayNameShort(@Nullable TimeZone timeZone) { if (timeZone == null) return ""; boolean dst = timeZone.inDaylightTime(timeSource.currentTimestamp()); String name = timeZone.getDisplayName(dst, TimeZone.SHORT); if (AD_HOC_TZ_PATTERN.matcher(name).matches()) return name; else return name + " (" + getDisplayOffset(timeZone) + ")"; } }
@Override public void runOnce(ScheduledTask task) { UserSession userSession; try { userSession = getUserSession(task); } catch (LoginException e) { throw new RuntimeException("Unable to obtain user session", e); } Integer priority = getServerPriority(task, serverInfo.getServerId()); if (priority == null) { throw new RunTaskOnceException(task.toString()); } lastStartCache.put(task, timeSource.currentTimeMillis()); runner.runTaskOnce(task, timeSource.currentTimeMillis(), userSession); } }
timeZone = TimeZone.getDefault(); if (paramArg.isNow()) { zonedDateTime = timeSource.now(); javaType = expandedParamTypes.get(firstparamName); if (javaType == null)
@Override public void clearTempDirectory() { try { File dir = new File(tempDir); File[] files = dir.listFiles(); if (files == null) throw new IllegalStateException("Not a directory: " + tempDir); Date currentDate = timeSource.currentTimestamp(); for (File file : files) { Date fileDate = new Date(file.lastModified()); Calendar calendar = new GregorianCalendar(); calendar.setTime(fileDate); calendar.add(Calendar.DAY_OF_YEAR, 2); if (currentDate.compareTo(calendar.getTime()) > 0) { deleteFileLink(file.getAbsolutePath()); if (!file.delete()) { log.warn(String.format("Could not remove temp file %s", file.getName())); } } } } catch (Exception ex) { log.error(ex.getMessage(), ex); } }
@Override public void propagate(UUID id) { UserSessionInfo usi = getSessionInfo(id); if (usi != null) { long now = timeSource.currentTimeMillis(); usi.lastUsedTs = now; usi.lastSentTs = now; putSessionInfo(id, usi); clusterManager.send(usi); } }