package er.ajax.example2.util;
import java.util.Calendar;
import com.webobjects.foundation.NSTimestamp;
import er.ajax.example2.helper.StringHelper;
public class DurationNamer {
public static String timeFrom(NSTimestamp time, NSTimestamp baseTime) {
StringBuilder results = new StringBuilder();
StringHelper helper = new StringHelper();
int years = DateUtils.difference(time, baseTime, Calendar.YEAR) - 1;
int months;
int days;
int hours;
int minutes;
if (years > 1) {
String year_label = helper.pluralize("year", years);
results.append(years + " " + year_label);
}
else {
months = DateUtils.difference(time, baseTime, Calendar.MONTH) - 1;
if (months > 11) {
results.append("about 1 year ago");
}
else if (months > 1) {
String month_label = helper.pluralize("month", months);
results.append(months + " " + month_label);
}
else {
days = DateUtils.difference(time, baseTime, Calendar.DAY_OF_YEAR) - 1;
if (days > 25) {
results.append("about 1 month");
}
else if (days > 7) {
int weeks = days / 7;
String weeks_label = helper.pluralize("week", weeks);
results.append(weeks + " " + weeks_label);
}
else if (days > 1) {
if (days <= 2) {
hours = DateUtils.difference(time, baseTime, Calendar.HOUR_OF_DAY) - 1;
if (hours < 30) {
results.append("about 1 day");
}
else {
String days_label = helper.pluralize("day", days);
results.append(days + " " + days_label);
}
}
else {
String days_label = helper.pluralize("day", days);
results.append(days + " " + days_label);
}
}
else {
hours = DateUtils.difference(time, baseTime, Calendar.HOUR_OF_DAY) - 1;
if (hours >= 20) {
results.append("about 1 day");
}
else if (hours > 1) {
String hours_label = helper.pluralize("hour", hours);
results.append(hours + " " + hours_label);
}
else {
minutes = DateUtils.difference(time, baseTime, Calendar.MINUTE) - 1;
if (minutes >= 45) {
results.append("about an hour");
}
else if (minutes > 20 && minutes < 45) {
results.append("about half an hour");
}
else if (minutes > 1) {
String minutes_label = helper.pluralize("minute", minutes);
results.append(minutes + " " + minutes_label);
}
else {
return "this very minute";
}
}
}
}
}
if (baseTime.after(time)) {
results.append(" ago");
}
else if (baseTime.before(time)) {
results.append(" from now");
}
else {
results.append("now");
}
return results.toString();
}
public static String timeFromNow(NSTimestamp time) {
return timeFrom(time, new NSTimestamp());
}
}