package utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class ThreadLocalSpreadDate {
private static ThreadLocal<Calendar> calThreadLocal;
// private Calendar cal;
private SimpleDateFormat formatter;
private Date stringdate;
public ThreadLocalSpreadDate(String date) throws ParseException {
// if no era specified assume current era
String line[] = date.split(" ");
if (line.length == 1) {
StringBuilder properDateStringBuilder = new StringBuilder();
date = properDateStringBuilder.append(date).append(" AD")
.toString();
}
formatter = new SimpleDateFormat("yyyy-MM-dd G", Locale.US);
stringdate = formatter.parse(date);
// Make calls to Calendar class in thread safe way
calThreadLocal = new ThreadLocal<Calendar>() {
@Override
protected Calendar initialValue() {
return Calendar.getInstance();
}
};
}// END: ThreadLocalSpreadDate()
public long plus(int days) {
Calendar cal = calThreadLocal.get();
cal.setTime(stringdate);
cal.add(Calendar.DATE, days);
return cal.getTimeInMillis();
}// END: plus
public long minus(int days) {
Calendar cal = calThreadLocal.get();
cal.setTime(stringdate);
cal.add(Calendar.DATE, -days);
return cal.getTimeInMillis();
}// END: minus
public long getTime() {
Calendar cal = calThreadLocal.get();
cal.setTime(stringdate);
return cal.getTimeInMillis();
}// END: getDate
}// END: class