Java tutorial
/* * Copyright 2015 Collective, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.collective.celos; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; public class RerunState extends ValueObject { public static final int EXPIRATION_DAYS = 14; private static final String RERUN_TIME_PROP = "rerunTime"; // The wallclock time at which the slot was marked for rerun private final ScheduledTime rerunTime; public RerunState(ScheduledTime rerunTime) { this.rerunTime = Util.requireNonNull(rerunTime); } public ScheduledTime getRerunTime() { return rerunTime; } public boolean isExpired(ScheduledTime now) { return rerunTime.plusDays(EXPIRATION_DAYS).getDateTime().isBefore(now.getDateTime()); } public ObjectNode toJSONNode() { ObjectNode node = Util.MAPPER.createObjectNode(); node.put(RERUN_TIME_PROP, rerunTime.toString()); return node; } public static RerunState fromJSONNode(ObjectNode node) { String timeStr = node.get(RERUN_TIME_PROP).textValue(); return new RerunState(new ScheduledTime(timeStr)); } }