blob: 8809e2e90bd1d6742574623b835200b9d69d350a [file] [log] [blame]
alision2ec64f92013-06-17 17:28:58 -04001package com.savoirfairelinux.sflphone.model;
2
3import java.text.SimpleDateFormat;
4import java.util.ArrayList;
5import java.util.Calendar;
6import java.util.Locale;
7import java.util.NavigableMap;
8import java.util.TimeZone;
9import java.util.TreeMap;
10
alision907bde72013-06-20 14:40:37 -040011import com.savoirfairelinux.sflphone.service.ServiceConstants;
12
alision2ec64f92013-06-17 17:28:58 -040013public class HistoryEntry {
14
15 private CallContact contact;
16 private NavigableMap<Long, HistoryCall> calls;
17 private String accountID;
alision907bde72013-06-20 14:40:37 -040018 int missed_sum;
19 int outgoing_sum;
20 int incoming_sum;
alision2ec64f92013-06-17 17:28:58 -040021
alision907bde72013-06-20 14:40:37 -040022
23
24 public HistoryEntry(String account, CallContact c) {
25 contact = c;
26 calls = new TreeMap<Long, HistoryEntry.HistoryCall>();
27 accountID = account;
28 missed_sum = outgoing_sum = incoming_sum = 0;
29 }
30
alision2ec64f92013-06-17 17:28:58 -040031 public String getAccountID() {
32 return accountID;
33 }
34
35 public void setAccountID(String accountID) {
36 this.accountID = accountID;
37 }
38
39 public NavigableMap<Long, HistoryCall> getCalls() {
40 return calls;
41 }
42
alision2ec64f92013-06-17 17:28:58 -040043 public static class HistoryCall {
44 long call_start;
45 long call_end;
46 String number;
alision907bde72013-06-20 14:40:37 -040047 String state;
alision2ec64f92013-06-17 17:28:58 -040048
alision907bde72013-06-20 14:40:37 -040049 public String getState() {
50 return state;
51 }
52
53 public HistoryCall(long start, long end, String n, String s) {
alision2ec64f92013-06-17 17:28:58 -040054 call_start = start;
55 call_end = end;
56 number = n;
alision907bde72013-06-20 14:40:37 -040057 state = s;
alision2ec64f92013-06-17 17:28:58 -040058 }
59
60 public String getDate(String format) {
61 Calendar cal = Calendar.getInstance();
62 TimeZone tz = cal.getTimeZone();
63 SimpleDateFormat objFormatter = new SimpleDateFormat(format, Locale.CANADA);
64 objFormatter.setTimeZone(tz);
65
66 Calendar objCalendar = Calendar.getInstance(tz);
67 objCalendar.setTimeInMillis(call_start * 1000);
68 String result = objFormatter.format(objCalendar.getTime());
69 objCalendar.clear();
70 return result;
71 }
72
73 public String getDurationString() {
74 long duration = call_end - call_start;
75 if (duration < 60)
76 return duration + "s";
77
78 return duration / 60 + "min";
79
80 }
81
82 public long getDuration() {
83 return call_end - call_start;
84
85 }
86
87 }
88
89 public CallContact getContact() {
90 return contact;
91 }
92
93 public void setContact(CallContact contact) {
94 this.contact = contact;
95 }
96
97 public void addHistoryCall(HistoryCall historyCall) {
98 calls.put(historyCall.call_start, historyCall);
alision907bde72013-06-20 14:40:37 -040099 if(historyCall.getState().contentEquals(ServiceConstants.HISTORY_MISSED_STRING)){
100 ++missed_sum;
101 } else if(historyCall.getState().contentEquals(ServiceConstants.HISTORY_INCOMING_STRING)){
102 ++incoming_sum;
103 } else {
104 ++outgoing_sum;
105 }
alision2ec64f92013-06-17 17:28:58 -0400106 }
107
108 public String getNumber() {
109 return calls.lastEntry().getValue().number;
110 }
111
112 public String getTotalDuration() {
113 int duration = 0;
114 ArrayList<HistoryCall> all_calls = new ArrayList<HistoryEntry.HistoryCall>(calls.values());
115 for(int i = 0 ; i < all_calls.size() ; ++i){
116 duration += all_calls.get(i).getDuration();
117 }
118
119 if (duration < 60)
120 return duration + "s";
121
122 return duration / 60 + "min";
123 }
alision907bde72013-06-20 14:40:37 -0400124
125 public int getMissed_sum() {
126 return missed_sum;
127 }
128
129 public int getOutgoing_sum() {
130 return outgoing_sum;
131 }
132
133 public int getIncoming_sum() {
134 return incoming_sum;
135 }
alision2ec64f92013-06-17 17:28:58 -0400136}