blob: 90c3f8c782a96dd3df206b3c1b1b36cbda9ec9c4 [file] [log] [blame]
Alexandre Lision3b7148e2013-11-13 17:23:06 -05001package org.sflphone.account;
2
3import java.util.ArrayList;
4import java.util.HashMap;
5
6import org.sflphone.R;
7
8import android.util.Log;
9
10public class AccountCredentials implements AccountDetail {
11
12 private static final String TAG = AccountCredentials.class.getSimpleName();
13
14 public static final String CONFIG_ACCOUNT_USERNAME = "Account.username";
15 public static final String CONFIG_ACCOUNT_PASSWORD = "Account.password";
16 public static final String CONFIG_ACCOUNT_REALM = "Account.realm";
Alexandre Lision3b7148e2013-11-13 17:23:06 -050017
18 private ArrayList<AccountDetail.PreferenceEntry> privateArray;
19
20 public static ArrayList<AccountDetail.PreferenceEntry> getPreferenceEntries() {
21 ArrayList<AccountDetail.PreferenceEntry> preference = new ArrayList<AccountDetail.PreferenceEntry>();
22
Alexandre Lisionab0cc9f2013-12-12 11:27:25 -050023 preference.add(new PreferenceEntry(CONFIG_ACCOUNT_USERNAME));
24 preference.add(new PreferenceEntry(CONFIG_ACCOUNT_PASSWORD));
25 preference.add(new PreferenceEntry(CONFIG_ACCOUNT_REALM));
Alexandre Lision3b7148e2013-11-13 17:23:06 -050026
27 return preference;
28 }
29
30 public AccountCredentials() {
31 privateArray = getPreferenceEntries();
32 }
33
34 public AccountCredentials(HashMap<String, String> pref) {
35 privateArray = getPreferenceEntries();
36
37 for (AccountDetail.PreferenceEntry p : privateArray) {
38 p.mValue = pref.get(p.mKey);
39 }
Alexandre Lisionab0cc9f2013-12-12 11:27:25 -050040
Alexandre Lision3b7148e2013-11-13 17:23:06 -050041 }
42
43 public AccountCredentials(ArrayList<String> pref) {
44 privateArray = getPreferenceEntries();
45
46 if (pref.size() != privateArray.size()) {
47 Log.i(TAG, "Error list are not of equal size");
48 } else {
49 int index = 0;
50 for (String s : pref) {
51 privateArray.get(index).mValue = s;
52 index++;
53 }
54 }
55 }
56
57 public ArrayList<AccountDetail.PreferenceEntry> getDetailValues() {
58 return privateArray;
59 }
60
61 public ArrayList<String> getValuesOnly() {
62 ArrayList<String> valueList = new ArrayList<String>();
63
64 for (AccountDetail.PreferenceEntry p : privateArray) {
Alexandre Lision3b7148e2013-11-13 17:23:06 -050065 valueList.add(p.mValue);
66 }
67
68 return valueList;
69 }
70
71 public HashMap<String, String> getDetailsHashMap() {
72 HashMap<String, String> map = new HashMap<String, String>();
73
74 for (AccountDetail.PreferenceEntry p : privateArray) {
75 map.put(p.mKey, p.mValue);
76 }
77
78 return map;
79 }
80
81 public String getDetailString(String key) {
82 String value = "";
83
84 for (AccountDetail.PreferenceEntry p : privateArray) {
85 if (p.mKey.equals(key)) {
86 value = p.mValue;
87 return value;
88 }
89 }
90 return value;
91 }
92
93 public void setDetailString(String key, String newValue) {
94 for (int i = 0; i < privateArray.size(); ++i) {
95 PreferenceEntry p = privateArray.get(i);
96 if (p.mKey.equals(key)) {
97 privateArray.get(i).mValue = newValue;
98 }
99 }
100
101 }
Alexandre Lisionab0cc9f2013-12-12 11:27:25 -0500102
Alexandre Lision3cefec22013-11-14 17:26:35 -0500103 @Override
Alexandre Lisionab0cc9f2013-12-12 11:27:25 -0500104 public boolean equals(Object other) {
105 if (other instanceof AccountCredentials)
106 return ((AccountCredentials) other).getDetailsHashMap().get(CONFIG_ACCOUNT_USERNAME)
107 .contentEquals(getDetailString(CONFIG_ACCOUNT_USERNAME))
108 && ((AccountCredentials) other).getDetailsHashMap().get(CONFIG_ACCOUNT_PASSWORD)
109 .contentEquals(getDetailString(CONFIG_ACCOUNT_PASSWORD))
110 && ((AccountCredentials) other).getDetailsHashMap().get(CONFIG_ACCOUNT_REALM)
111 .contentEquals(getDetailString(CONFIG_ACCOUNT_REALM));
112
Alexandre Lision3cefec22013-11-14 17:26:35 -0500113 return false;
114 }
Alexandre Lision3b7148e2013-11-13 17:23:06 -0500115
116}