package com.hdweiss.morgand.data;
import android.text.TextUtils;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class OrgNodeTimeDate {
private TYPE type = TYPE.Scheduled;
private int year = -1;
private int monthOfYear = -1;
private int dayOfMonth = -1;
private int startTimeOfDay = -1;
private int startMinute = -1;
private int endTimeOfDay = -1;
private int endMinute = -1;
private enum TYPE {
Scheduled,
Deadline,
Timestamp,
InactiveTimestamp
};
private OrgNodeTimeDate(TYPE type) {
this.type = type;
}
private void setToCurrentDate() {
final Calendar c = Calendar.getInstance();
this.year = c.get(Calendar.YEAR);
this.monthOfYear = c.get(Calendar.MONTH) + 1;
this.dayOfMonth = c.get(Calendar.DAY_OF_MONTH);
}
private static final Pattern schedulePattern = Pattern
.compile("((\\d{4})-(\\d{1,2})-(\\d{1,2}))(?:[^\\d]*)"
+ "((\\d{1,2})\\:(\\d{2}))?(-((\\d{1,2})\\:(\\d{2})))?");
private void parseDate(String date) {
if(date == null)
return;
Matcher propm = schedulePattern.matcher(date);
if (propm.find()) {
try {
year = Integer.parseInt(propm.group(2));
monthOfYear = Integer.parseInt(propm.group(3));
dayOfMonth = Integer.parseInt(propm.group(4));
startTimeOfDay = Integer.parseInt(propm.group(6));
startMinute = Integer.parseInt(propm.group(7));
endTimeOfDay = Integer.parseInt(propm.group(10));
endMinute = Integer.parseInt(propm.group(11));
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
private String getDate() {
return String.format("%d-%02d-%02d", year, monthOfYear, dayOfMonth);
}
private String getStartTime() {
return String.format("%02d:%02d", startTimeOfDay, startMinute);
}
private String getEndTime() {
return String.format("%02d:%02d", endTimeOfDay, endMinute);
}
private String toString2() {
return getDate().toString() + getStartTimeFormated() + getEndTimeFormated();
}
public String toFormatedString() {
return formatDate(type, getDate());
}
private String getStartTimeFormated() {
String time = getStartTime().toString();
if (startTimeOfDay == -1
|| startMinute == -1 || TextUtils.isEmpty(time))
return "";
else
return " " + time;
}
private String getEndTimeFormated() {
String time = getEndTime().toString();
if (endTimeOfDay == -1
|| endMinute == -1 || TextUtils.isEmpty(time))
return "";
else
return "-" + time;
}
private static String typeToFormated(TYPE type) {
switch (type) {
case Scheduled:
return "SCHEDULED: ";
case Deadline:
return "DEADLINE: ";
case Timestamp:
return "";
default:
return "";
}
}
private String formatDate(TYPE type, String timestamp) {
if (TextUtils.isEmpty(timestamp))
return "";
else {
return OrgNodeTimeDate.typeToFormated(type) + "<" + timestamp + ">";
}
}
}