blob: 164d7aa75392f5dc2b247e06285d3457bf6d920f [file] [log] [blame]
// Copyright 2011 Google Inc. All Rights Reserved.
//
// 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 adaptorlib;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
/**
* ScheduleOncePerDay provides a sequence of Dates 1 day
* apart at the same hour/minute/second each day.
* <p>
* Gratitude to
* http://www.ibm.com/developerworks/java/library/j-schedule/index.html
*/
public class ScheduleOncePerDay implements Iterator<Date> {
private final int hourOfDay, minute, second;
private final Calendar calendar = Calendar.getInstance();
public ScheduleOncePerDay(int hourOfDay, int minute, int second) {
this(hourOfDay, minute, second, new Date());
}
public ScheduleOncePerDay(int hourOfDay, int minute, int second, Date date) {
this.hourOfDay = hourOfDay;
this.minute = minute;
this.second = second;
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, 0);
if (!calendar.getTime().before(date)) {
calendar.add(Calendar.DATE, -1);
}
}
public boolean hasNext() {
return true;
}
public Date next() {
calendar.add(Calendar.DATE, 1);
return calendar.getTime();
}
public void remove() {
throw new UnsupportedOperationException();
}
}