001 package jp.osdl.jbento2;
002
003 import java.text.ParseException;
004 import java.text.SimpleDateFormat;
005 import java.util.Calendar;
006 import java.util.Date;
007
008 public class StateDateFormatter {
009
010 public static int DATE = Calendar.DATE;
011
012 private SimpleDateFormat formatter = null;
013
014 private Date previousTime = null;
015
016 private int addValue = 0;
017
018 private int addedField = 0;
019
020 private Calendar calendar = Calendar.getInstance();
021
022 public StateDateFormatter(String formatString, int addedField) {
023 formatter = new SimpleDateFormat(formatString);
024 this.addedField = addedField;
025 }
026
027 /**
028 * If str is earlier than previous str, increment addedField and return
029 * incremented Date.
030 *
031 * @param str date format.
032 * @return calculated date
033 * @throws ParseException
034 */
035 public Date nextDate(String str) throws ParseException {
036 Date date = formatter.parse(str);
037 if (previousTime != null) {
038 if (previousTime.compareTo(date) > 0) {
039 addValue++;
040 }
041 }
042 previousTime = date;
043
044 if (addValue != 0) {
045 calendar.setTime(date);
046 calendar.add(addedField, addValue);
047 date = calendar.getTime();
048 }
049 return date;
050 }
051
052 }