blob: 43bcbbd6dcb686bbd03c30b454da7dac50db23b0 [file] [log] [blame]
Alexandre Lision72e37322013-11-04 17:14:11 -05001package org.sflphone.utils;
2
3import java.text.SimpleDateFormat;
4import java.util.ArrayList;
5import java.util.Calendar;
6import java.util.Locale;
7
8public class HistoryManager {
9
10 static ArrayList<String> timeCategories;
11
12 public interface HistoryTimeCategoryModel {
13 String TODAY = "Today"; // 0
14 String YESTERDAY = "Yesterday"; // 1
Alexandre Lision2e52d392013-11-06 15:14:31 -050015 String TWO_DAYS = HistoryManager.getDate(2, "MM/dd");// 2
16 String THREE_DAYS = HistoryManager.getDate(3, "MM/dd");// 3
17 String FOUR_DAYS = HistoryManager.getDate(4, "MM/dd");// 4
18 String FIVE_DAYS = HistoryManager.getDate(5, "MM/dd");// 5
19 String SIX_DAYS = HistoryManager.getDate(6, "MM/dd");// 6
Alexandre Lision72e37322013-11-04 17:14:11 -050020 String LAST_WEEK = "Last week"; // 7
21 String TWO_WEEKS = "Two weeks ago"; // 8
22 String THREE_WEEKS = "Three weeks ago"; // 9
23 String LAST_MONTH = "Last month"; // 10
24 String TWO_MONTH = "Two months ago"; // 11
25 String THREE_MONTH = "Three months ago"; // 12
26 String FOUR_MONTH = "Four months ago"; // 13
27 String FIVE_MONTH = "Five months ago"; // 14
28 String SIX_MONTH = "Six months ago"; // 15
29 String SEVEN_MONTH = "Seven months ago"; // 16
30 String EIGHT_MONTH = "Eight months ago"; // 17
31 String NINE_MONTH = "Nine months ago"; // 18
32 String TEN_MONTH = "Ten months ago"; // 19
33 String ELEVEN_MONTH = "Eleven months ago"; // 20
34 String TWELVE_MONTH = "Twelve months ago"; // 21
35 String LAST_YEAR = "Last year"; // 22
36 String LONG_TIME_AGO = "Very long time ago"; // 23
37 String NEVER = "Never"; // 24
38 }
39
40 private static final String TAG = HistoryManager.class.getSimpleName();
41
42 static Calendar removeDays(int ago) {
43 Calendar cal = Calendar.getInstance(Locale.getDefault());
44 int currentDay = cal.get(Calendar.DAY_OF_MONTH);
45 // Set the date to 2 days ago
46 cal.set(Calendar.DAY_OF_MONTH, currentDay - ago);
47 return cal;
48 }
49
50 static String getDate(int ago, String format) {
51 Calendar cal = removeDays(ago);
52 SimpleDateFormat objFormatter = new SimpleDateFormat(format, Locale.CANADA);
53 objFormatter.setTimeZone(cal.getTimeZone());
54
55 String result = objFormatter.format(cal.getTime());
56 cal.clear();
57 return result;
58 }
59
60 public static String timeToHistoryConst(long time) {
61
62 if(timeCategories == null){
63 initializeCategories();
64 }
65
66 long time2 = time;
67 long currentTime = Calendar.getInstance(Locale.getDefault()).getTime().getTime() / 1000; // in seconds
68
69 if (time < 0)
70 return HistoryTimeCategoryModel.NEVER;
71
72 // Check if part if the current Nychthemeron
73 if (currentTime - time <= 3600 * 24) // The future case would be a bug, but it have to be handled anyway or it will appear in
74 // "very long time ago"
75 return HistoryTimeCategoryModel.TODAY;
76
77 time2 -= time % (3600 * 24); // Reset to midnight
78 currentTime -= currentTime % (3600 * 24); // Reset to midnight
79 // Check for last week
80 if (currentTime - (6) * 3600 * 24 < time2) {
81 for (int i = 1; i < 7; i++) {
82 if (currentTime - ((i) * 3600 * 24) == time2)
83 return timeCategories.get(i); // Yesterday to Six_days_ago
84 }
85 }
86 // Check for last month
87 else if (currentTime - ((4) * 7 * 24 * 3600) < time2) {
88 for (int i = 1; i < 4; i++) {
89 if (currentTime - ((i + 1) * 7 * 24 * 3600) < time2)
90 return timeCategories.get(i + timeCategories.indexOf(HistoryTimeCategoryModel.LAST_WEEK) - 1); // Last_week to Three_weeks_ago
91 }
92 }
93 // Check for last year
94 else if (currentTime - (12) * 30.4f * 24 * 3600 < time2) {
95 for (int i = 1; i < 12; i++) {
96 if (currentTime - (i + 1) * 30.4f * 24 * 3600 < time2) // Not exact, but faster
97 return timeCategories.get(i + timeCategories.indexOf(HistoryTimeCategoryModel.LAST_MONTH) - 1);
98 ; // Last_month to Twelve_months ago
99 }
100 }
101 // if (QDate::currentDate().addYears(-1) >= date && QDate::currentDate().addYears(-2) < date)
102 else if (currentTime - 365 * 24 * 3600 < time2)
103 return HistoryTimeCategoryModel.LAST_YEAR;
104
105 // Every other senario
106 return HistoryTimeCategoryModel.LONG_TIME_AGO;
107 }
108
109 private static void initializeCategories() {
110 timeCategories = new ArrayList<String>();
111 timeCategories.add(HistoryTimeCategoryModel.TODAY);
112 timeCategories.add(HistoryTimeCategoryModel.YESTERDAY);
113 timeCategories.add(HistoryTimeCategoryModel.TWO_DAYS);
114 timeCategories.add(HistoryTimeCategoryModel.THREE_DAYS);
115 timeCategories.add(HistoryTimeCategoryModel.FOUR_DAYS);
116 timeCategories.add(HistoryTimeCategoryModel.FIVE_DAYS);
117 timeCategories.add(HistoryTimeCategoryModel.SIX_DAYS);
118 timeCategories.add(HistoryTimeCategoryModel.LAST_WEEK);
119 timeCategories.add(HistoryTimeCategoryModel.TWO_WEEKS);
120 timeCategories.add(HistoryTimeCategoryModel.THREE_WEEKS);
121 timeCategories.add(HistoryTimeCategoryModel.LAST_MONTH);
122 timeCategories.add(HistoryTimeCategoryModel.TWO_MONTH);
123 timeCategories.add(HistoryTimeCategoryModel.THREE_MONTH);
124 timeCategories.add(HistoryTimeCategoryModel.FOUR_MONTH);
125 timeCategories.add(HistoryTimeCategoryModel.FIVE_MONTH);
126 timeCategories.add(HistoryTimeCategoryModel.SIX_MONTH);
127 timeCategories.add(HistoryTimeCategoryModel.SEVEN_MONTH);
128 timeCategories.add(HistoryTimeCategoryModel.EIGHT_MONTH);
129 timeCategories.add(HistoryTimeCategoryModel.NINE_MONTH);
130 timeCategories.add(HistoryTimeCategoryModel.TEN_MONTH);
131 timeCategories.add(HistoryTimeCategoryModel.ELEVEN_MONTH);
132 timeCategories.add(HistoryTimeCategoryModel.TWELVE_MONTH);
133 timeCategories.add(HistoryTimeCategoryModel.LAST_YEAR);
134 timeCategories.add(HistoryTimeCategoryModel.LONG_TIME_AGO);
135 timeCategories.add(HistoryTimeCategoryModel.NEVER);
136 }
137
138}