You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ma...@apache.org on 2012/05/31 03:12:20 UTC
android commit: CB-849: Cannot search by birthday
Updated Branches:
refs/heads/master 5f93a26ee -> c21e8c9c8
CB-849: Cannot search by birthday
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/c21e8c9c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/c21e8c9c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/c21e8c9c
Branch: refs/heads/master
Commit: c21e8c9c87feea7d81779f6c12d92de0a0f857f7
Parents: 5f93a26
Author: macdonst <si...@gmail.com>
Authored: Wed May 30 21:07:56 2012 -0400
Committer: macdonst <si...@gmail.com>
Committed: Wed May 30 21:07:56 2012 -0400
----------------------------------------------------------------------
.../src/org/apache/cordova/ContactAccessor.java | 191 +++++++--------
.../org/apache/cordova/ContactAccessorSdk5.java | 27 ++-
2 files changed, 117 insertions(+), 101 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/c21e8c9c/framework/src/org/apache/cordova/ContactAccessor.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/ContactAccessor.java b/framework/src/org/apache/cordova/ContactAccessor.java
index 12669ce..d2bf66c 100644
--- a/framework/src/org/apache/cordova/ContactAccessor.java
+++ b/framework/src/org/apache/cordova/ContactAccessor.java
@@ -18,7 +18,6 @@ package org.apache.cordova;
import java.util.HashMap;
-import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.webkit.WebView;
@@ -48,21 +47,21 @@ public abstract class ContactAccessor {
* @return true if the key data is required
*/
protected boolean isRequired(String key, HashMap<String,Boolean> map) {
- Boolean retVal = map.get(key);
- return (retVal == null) ? false : retVal.booleanValue();
- }
+ Boolean retVal = map.get(key);
+ return (retVal == null) ? false : retVal.booleanValue();
+ }
/**
* Create a hash map of what data needs to be populated in the Contact object
* @param fields the list of fields to populate
* @return the hash map of required data
*/
- protected HashMap<String,Boolean> buildPopulationSet(JSONArray fields) {
- HashMap<String,Boolean> map = new HashMap<String,Boolean>();
+ protected HashMap<String,Boolean> buildPopulationSet(JSONArray fields) {
+ HashMap<String,Boolean> map = new HashMap<String,Boolean>();
- String key;
- try {
- if (fields.length() == 1 && fields.getString(0).equals("*")) {
+ String key;
+ try {
+ if (fields.length() == 1 && fields.getString(0).equals("*")) {
map.put("displayName", true);
map.put("name", true);
map.put("nickname", true);
@@ -76,90 +75,90 @@ public abstract class ContactAccessor {
map.put("urls", true);
map.put("photos", true);
map.put("categories", true);
- }
- else {
- for (int i=0; i<fields.length(); i++) {
- key = fields.getString(i);
- if (key.startsWith("displayName")) {
- map.put("displayName", true);
- }
- else if (key.startsWith("name")) {
- map.put("displayName", true);
- map.put("name", true);
- }
- else if (key.startsWith("nickname")) {
- map.put("nickname", true);
- }
- else if (key.startsWith("phoneNumbers")) {
- map.put("phoneNumbers", true);
- }
- else if (key.startsWith("emails")) {
- map.put("emails", true);
- }
- else if (key.startsWith("addresses")) {
- map.put("addresses", true);
- }
- else if (key.startsWith("ims")) {
- map.put("ims", true);
- }
- else if (key.startsWith("organizations")) {
- map.put("organizations", true);
- }
- else if (key.startsWith("birthday")) {
- map.put("birthday", true);
- }
- else if (key.startsWith("note")) {
- map.put("note", true);
- }
- else if (key.startsWith("urls")) {
- map.put("urls", true);
- }
+ }
+ else {
+ for (int i=0; i<fields.length(); i++) {
+ key = fields.getString(i);
+ if (key.startsWith("displayName")) {
+ map.put("displayName", true);
+ }
+ else if (key.startsWith("name")) {
+ map.put("displayName", true);
+ map.put("name", true);
+ }
+ else if (key.startsWith("nickname")) {
+ map.put("nickname", true);
+ }
+ else if (key.startsWith("phoneNumbers")) {
+ map.put("phoneNumbers", true);
+ }
+ else if (key.startsWith("emails")) {
+ map.put("emails", true);
+ }
+ else if (key.startsWith("addresses")) {
+ map.put("addresses", true);
+ }
+ else if (key.startsWith("ims")) {
+ map.put("ims", true);
+ }
+ else if (key.startsWith("organizations")) {
+ map.put("organizations", true);
+ }
+ else if (key.startsWith("birthday")) {
+ map.put("birthday", true);
+ }
+ else if (key.startsWith("note")) {
+ map.put("note", true);
+ }
+ else if (key.startsWith("urls")) {
+ map.put("urls", true);
+ }
else if (key.startsWith("photos")) {
map.put("photos", true);
}
else if (key.startsWith("categories")) {
map.put("categories", true);
}
- }
+ }
+ }
}
+ catch (JSONException e) {
+ Log.e(LOG_TAG, e.getMessage(), e);
+ }
+ return map;
}
- catch (JSONException e) {
- Log.e(LOG_TAG, e.getMessage(), e);
- }
- return map;
- }
- /**
- * Convenience method to get a string from a JSON object. Saves a
- * lot of try/catch writing.
- * If the property is not found in the object null will be returned.
- *
- * @param obj contact object to search
- * @param property to be looked up
- * @return The value of the property
- */
- protected String getJsonString(JSONObject obj, String property) {
- String value = null;
- try {
- if (obj != null) {
- value = obj.getString(property);
- if (value.equals("null")) {
- Log.d(LOG_TAG, property + " is string called 'null'");
- value = null;
- }
+ /**
+ * Convenience method to get a string from a JSON object. Saves a
+ * lot of try/catch writing.
+ * If the property is not found in the object null will be returned.
+ *
+ * @param obj contact object to search
+ * @param property to be looked up
+ * @return The value of the property
+ */
+ protected String getJsonString(JSONObject obj, String property) {
+ String value = null;
+ try {
+ if (obj != null) {
+ value = obj.getString(property);
+ if (value.equals("null")) {
+ Log.d(LOG_TAG, property + " is string called 'null'");
+ value = null;
+ }
+ }
}
+ catch (JSONException e) {
+ Log.d(LOG_TAG, "Could not get = " + e.getMessage());
+ }
+ return value;
}
- catch (JSONException e) {
- Log.d(LOG_TAG, "Could not get = " + e.getMessage());
- }
- return value;
- }
/**
* Handles adding a JSON Contact object into the database.
* @return TODO
*/
- public abstract String save(JSONObject contact);
+ public abstract String save(JSONObject contact);
/**
* Handles searching through SDK-specific contacts API.
@@ -175,25 +174,25 @@ public abstract class ContactAccessor {
/**
* Handles removing a contact from the database.
*/
- public abstract boolean remove(String id);
+ public abstract boolean remove(String id);
- /**
- * A class that represents the where clause to be used in the database query
- */
- class WhereOptions {
- private String where;
- private String[] whereArgs;
- public void setWhere(String where) {
- this.where = where;
- }
- public String getWhere() {
- return where;
- }
- public void setWhereArgs(String[] whereArgs) {
- this.whereArgs = whereArgs;
- }
- public String[] getWhereArgs() {
- return whereArgs;
+ /**
+ * A class that represents the where clause to be used in the database query
+ */
+ class WhereOptions {
+ private String where;
+ private String[] whereArgs;
+ public void setWhere(String where) {
+ this.where = where;
+ }
+ public String getWhere() {
+ return where;
+ }
+ public void setWhereArgs(String[] whereArgs) {
+ this.whereArgs = whereArgs;
+ }
+ public String[] getWhereArgs() {
+ return whereArgs;
+ }
}
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/c21e8c9c/framework/src/org/apache/cordova/ContactAccessorSdk5.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/ContactAccessorSdk5.java b/framework/src/org/apache/cordova/ContactAccessorSdk5.java
index 2237e7e..9e672e9 100644
--- a/framework/src/org/apache/cordova/ContactAccessorSdk5.java
+++ b/framework/src/org/apache/cordova/ContactAccessorSdk5.java
@@ -25,7 +25,10 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -111,7 +114,7 @@ public class ContactAccessorSdk5 extends ContactAccessor {
dbMap.put("organizations.name", ContactsContract.CommonDataKinds.Organization.COMPANY);
dbMap.put("organizations.department", ContactsContract.CommonDataKinds.Organization.DEPARTMENT);
dbMap.put("organizations.title", ContactsContract.CommonDataKinds.Organization.TITLE);
- dbMap.put("birthday", ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE);
+ dbMap.put("birthday", ContactsContract.CommonDataKinds.Event.START_DATE);
dbMap.put("note", ContactsContract.CommonDataKinds.Note.NOTE);
dbMap.put("photos.value", ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
//dbMap.put("categories.value", null);
@@ -579,10 +582,24 @@ public class ContactAccessorSdk5 extends ContactAccessor {
whereArgs.add(searchTerm);
whereArgs.add(ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
}
-// else if (key.startsWith("birthday")) {
-// where.add("(" + dbMap.get(key) + " LIKE ? AND "
-// + ContactsContract.Data.MIMETYPE + " = ? )");
-// }
+ else if (key.startsWith("birthday")) {
+ try {
+ SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
+ Date searchDate = format.parse(searchTerm.substring(1, searchTerm.length()-1));
+ // Have to subtract one from the month as JavaScript's January is 01
+ // while Java's January is 00.
+ searchDate.setMonth(searchDate.getMonth()-1);
+ SimpleDateFormat newFormat = new SimpleDateFormat("yyyy-MM-dd");
+
+ where.add("(" + dbMap.get(key) + " = ? AND "
+ + ContactsContract.Data.MIMETYPE + " = ? )");
+ whereArgs.add(newFormat.format(searchDate));
+ whereArgs.add(ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE);
+ }
+ catch (ParseException e) {
+ Log.d(LOG_TAG, "Bad romance format");
+ }
+ }
else if (key.startsWith("note")) {
where.add("(" + dbMap.get(key) + " LIKE ? AND "
+ ContactsContract.Data.MIMETYPE + " = ? )");