You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bo...@apache.org on 2012/09/19 20:13:16 UTC
android commit: Adding headers and converting tabs to spaces
Updated Branches:
refs/heads/master 631245742 -> 34840175f
Adding headers and converting tabs to spaces
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/34840175
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/34840175
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/34840175
Branch: refs/heads/master
Commit: 34840175f31b7bb13c1870592ba9c70f86e4bcc4
Parents: 6312457
Author: Joe Bowser <bo...@apache.org>
Authored: Wed Sep 19 11:12:55 2012 -0700
Committer: Joe Bowser <bo...@apache.org>
Committed: Wed Sep 19 11:12:55 2012 -0700
----------------------------------------------------------------------
.../src/org/apache/cordova/Globalization.java | 1071 ++++++++-------
.../src/org/apache/cordova/GlobalizationError.java | 101 +-
2 files changed, 605 insertions(+), 567 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/34840175/framework/src/org/apache/cordova/Globalization.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/Globalization.java b/framework/src/org/apache/cordova/Globalization.java
index 1c2a13c..7d724c9 100644
--- a/framework/src/org/apache/cordova/Globalization.java
+++ b/framework/src/org/apache/cordova/Globalization.java
@@ -1,3 +1,22 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+
package org.apache.cordova;
import java.text.DateFormat;
@@ -26,535 +45,535 @@ import android.text.format.Time;
*
*/
public class Globalization extends Plugin {
- //GlobalizationCommand Plugin Actions
- public static final String GETLOCALENAME = "getLocaleName";
- public static final String DATETOSTRING = "dateToString";
- public static final String STRINGTODATE = "stringToDate";
- public static final String GETDATEPATTERN = "getDatePattern";
- public static final String GETDATENAMES = "getDateNames";
- public static final String ISDAYLIGHTSAVINGSTIME = "isDayLightSavingsTime";
- public static final String GETFIRSTDAYOFWEEK = "getFirstDayOfWeek";
- public static final String NUMBERTOSTRING = "numberToString";
- public static final String STRINGTONUMBER = "stringToNumber";
- public static final String GETNUMBERPATTERN = "getNumberPattern";
- public static final String GETCURRENCYPATTERN = "getCurrencyPattern";
- public static final String GETPREFERREDLANGUAGE = "getPreferredLanguage";
-
- //GlobalizationCommand Option Parameters
- public static final String OPTIONS = "options";
- public static final String FORMATLENGTH = "formatLength";
- //public static final String SHORT = "short"; //default for dateToString format
- public static final String MEDIUM = "medium";
- public static final String LONG = "long";
- public static final String FULL = "full";
- public static final String SELECTOR = "selector";
- //public static final String DATEANDTIME = "date and time"; //default for dateToString
- public static final String DATE = "date";
- public static final String TIME = "time";
- public static final String DATESTRING = "dateString";
- public static final String TYPE = "type";
- public static final String ITEM = "item";
- public static final String NARROW = "narrow";
- public static final String WIDE = "wide";
- public static final String MONTHS = "months";
- public static final String DAYS = "days";
- //public static final String DECMIAL = "wide"; //default for numberToString
- public static final String NUMBER = "number";
- public static final String NUMBERSTRING = "numberString";
- public static final String PERCENT = "percent";
- public static final String CURRENCY = "currency";
- public static final String CURRENCYCODE = "currencyCode";
-
- @Override
- public PluginResult execute(String action, JSONArray data, String callbackId) {
- PluginResult.Status status = PluginResult.Status.OK;
- JSONObject obj = new JSONObject();
+ //GlobalizationCommand Plugin Actions
+ public static final String GETLOCALENAME = "getLocaleName";
+ public static final String DATETOSTRING = "dateToString";
+ public static final String STRINGTODATE = "stringToDate";
+ public static final String GETDATEPATTERN = "getDatePattern";
+ public static final String GETDATENAMES = "getDateNames";
+ public static final String ISDAYLIGHTSAVINGSTIME = "isDayLightSavingsTime";
+ public static final String GETFIRSTDAYOFWEEK = "getFirstDayOfWeek";
+ public static final String NUMBERTOSTRING = "numberToString";
+ public static final String STRINGTONUMBER = "stringToNumber";
+ public static final String GETNUMBERPATTERN = "getNumberPattern";
+ public static final String GETCURRENCYPATTERN = "getCurrencyPattern";
+ public static final String GETPREFERREDLANGUAGE = "getPreferredLanguage";
+
+ //GlobalizationCommand Option Parameters
+ public static final String OPTIONS = "options";
+ public static final String FORMATLENGTH = "formatLength";
+ //public static final String SHORT = "short"; //default for dateToString format
+ public static final String MEDIUM = "medium";
+ public static final String LONG = "long";
+ public static final String FULL = "full";
+ public static final String SELECTOR = "selector";
+ //public static final String DATEANDTIME = "date and time"; //default for dateToString
+ public static final String DATE = "date";
+ public static final String TIME = "time";
+ public static final String DATESTRING = "dateString";
+ public static final String TYPE = "type";
+ public static final String ITEM = "item";
+ public static final String NARROW = "narrow";
+ public static final String WIDE = "wide";
+ public static final String MONTHS = "months";
+ public static final String DAYS = "days";
+ //public static final String DECMIAL = "wide"; //default for numberToString
+ public static final String NUMBER = "number";
+ public static final String NUMBERSTRING = "numberString";
+ public static final String PERCENT = "percent";
+ public static final String CURRENCY = "currency";
+ public static final String CURRENCYCODE = "currencyCode";
+
+ @Override
+ public PluginResult execute(String action, JSONArray data, String callbackId) {
+ PluginResult.Status status = PluginResult.Status.OK;
+ JSONObject obj = new JSONObject();
- try{
- if (action.equals(GETLOCALENAME)){
- obj = getLocaleName();
- return new PluginResult(status, obj);
- }else if (action.equals(GETPREFERREDLANGUAGE)){
- obj = getPreferredLanguage();
- return new PluginResult(status, obj);
- } else if (action.equalsIgnoreCase(DATETOSTRING)) {
- obj = getDateToString(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(STRINGTODATE)){
- obj = getStringtoDate(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(GETDATEPATTERN)){
- obj = getDatePattern(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(GETDATENAMES)){
- obj = getDateNames(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(ISDAYLIGHTSAVINGSTIME)){
- obj = getIsDayLightSavingsTime(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(GETFIRSTDAYOFWEEK)){
- obj = getFirstDayOfWeek(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(NUMBERTOSTRING)){
- obj = getNumberToString(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(STRINGTONUMBER)){
- obj = getStringToNumber(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(GETNUMBERPATTERN)){
- obj = getNumberPattern(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }else if(action.equalsIgnoreCase(GETCURRENCYPATTERN)){
- obj = getCurrencyPattern(data);
- return new PluginResult(PluginResult.Status.OK, obj);
- }
- }catch (GlobalizationError ge){
- return new PluginResult(PluginResult.Status.ERROR, ge.getErrorCode());
- }catch (Exception e){
- return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
- }
- return new PluginResult(PluginResult.Status.INVALID_ACTION);
- }
- /*
- * @Description: Returns the string identifier for the client's current locale setting
- *
- * @Return: JSONObject
- * Object.value {String}: The locale identifier
- *
- * @throws: GlobalizationError.UNKNOWN_ERROR
- */
- private JSONObject getLocaleName() throws GlobalizationError{
- JSONObject obj = new JSONObject();
- try{
- obj.put("value",Locale.getDefault().toString());//get the locale from the Android Device
- return obj;
- }catch(Exception e){
- throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
- }
- }
- /*
- * @Description: Returns the string identifier for the client's current language
- *
- * @Return: JSONObject
- * Object.value {String}: The language identifier
- *
- * @throws: GlobalizationError.UNKNOWN_ERROR
- */
- private JSONObject getPreferredLanguage() throws GlobalizationError {
- JSONObject obj = new JSONObject();
- try {
- obj.put("value", Locale.getDefault().getDisplayLanguage().toString());
- return obj;
- } catch (Exception e) {
- throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
- }
- }
- /*
- * @Description: Returns a date formatted as a string according to the client's user preferences and
- * calendar using the time zone of the client.
- *
- * @Return: JSONObject
- * Object.value {String}: The localized date string
- *
+ try{
+ if (action.equals(GETLOCALENAME)){
+ obj = getLocaleName();
+ return new PluginResult(status, obj);
+ }else if (action.equals(GETPREFERREDLANGUAGE)){
+ obj = getPreferredLanguage();
+ return new PluginResult(status, obj);
+ } else if (action.equalsIgnoreCase(DATETOSTRING)) {
+ obj = getDateToString(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(STRINGTODATE)){
+ obj = getStringtoDate(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(GETDATEPATTERN)){
+ obj = getDatePattern(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(GETDATENAMES)){
+ obj = getDateNames(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(ISDAYLIGHTSAVINGSTIME)){
+ obj = getIsDayLightSavingsTime(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(GETFIRSTDAYOFWEEK)){
+ obj = getFirstDayOfWeek(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(NUMBERTOSTRING)){
+ obj = getNumberToString(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(STRINGTONUMBER)){
+ obj = getStringToNumber(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(GETNUMBERPATTERN)){
+ obj = getNumberPattern(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }else if(action.equalsIgnoreCase(GETCURRENCYPATTERN)){
+ obj = getCurrencyPattern(data);
+ return new PluginResult(PluginResult.Status.OK, obj);
+ }
+ }catch (GlobalizationError ge){
+ return new PluginResult(PluginResult.Status.ERROR, ge.getErrorCode());
+ }catch (Exception e){
+ return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
+ }
+ return new PluginResult(PluginResult.Status.INVALID_ACTION);
+ }
+ /*
+ * @Description: Returns the string identifier for the client's current locale setting
+ *
+ * @Return: JSONObject
+ * Object.value {String}: The locale identifier
+ *
+ * @throws: GlobalizationError.UNKNOWN_ERROR
+ */
+ private JSONObject getLocaleName() throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ try{
+ obj.put("value",Locale.getDefault().toString());//get the locale from the Android Device
+ return obj;
+ }catch(Exception e){
+ throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
+ }
+ }
+ /*
+ * @Description: Returns the string identifier for the client's current language
+ *
+ * @Return: JSONObject
+ * Object.value {String}: The language identifier
+ *
+ * @throws: GlobalizationError.UNKNOWN_ERROR
+ */
+ private JSONObject getPreferredLanguage() throws GlobalizationError {
+ JSONObject obj = new JSONObject();
+ try {
+ obj.put("value", Locale.getDefault().getDisplayLanguage().toString());
+ return obj;
+ } catch (Exception e) {
+ throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
+ }
+ }
+ /*
+ * @Description: Returns a date formatted as a string according to the client's user preferences and
+ * calendar using the time zone of the client.
+ *
+ * @Return: JSONObject
+ * Object.value {String}: The localized date string
+ *
* @throws: GlobalizationError.FORMATTING_ERROR
- */
- private JSONObject getDateToString(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
- try{
- Date date = new Date((Long)options.getJSONObject(0).get(DATE));
-
- //get formatting pattern from android device (Will only have device specific formatting for short form of date) or options supplied
- JSONObject datePattern = getDatePattern(options);
- SimpleDateFormat fmt = new SimpleDateFormat(datePattern.getString("pattern"));
-
- //return formatted date
- return obj.put("value",fmt.format(date));
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.FORMATTING_ERROR);
- }
- }
-
- /*
- * @Description: Parses a date formatted as a string according to the client's user
- * preferences and calendar using the time zone of the client and returns
- * the corresponding date object
- * @Return: JSONObject
- * Object.year {Number}: The four digit year
- * Object.month {Number}: The month from (0 - 11)
- * Object.day {Number}: The day from (1 - 31)
- * Object.hour {Number}: The hour from (0 - 23)
- * Object.minute {Number}: The minute from (0 - 59)
- * Object.second {Number}: The second from (0 - 59)
- * Object.millisecond {Number}: The milliseconds (from 0 - 999), not available on all platforms
+ */
+ private JSONObject getDateToString(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ try{
+ Date date = new Date((Long)options.getJSONObject(0).get(DATE));
+
+ //get formatting pattern from android device (Will only have device specific formatting for short form of date) or options supplied
+ JSONObject datePattern = getDatePattern(options);
+ SimpleDateFormat fmt = new SimpleDateFormat(datePattern.getString("pattern"));
+
+ //return formatted date
+ return obj.put("value",fmt.format(date));
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.FORMATTING_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Parses a date formatted as a string according to the client's user
+ * preferences and calendar using the time zone of the client and returns
+ * the corresponding date object
+ * @Return: JSONObject
+ * Object.year {Number}: The four digit year
+ * Object.month {Number}: The month from (0 - 11)
+ * Object.day {Number}: The day from (1 - 31)
+ * Object.hour {Number}: The hour from (0 - 23)
+ * Object.minute {Number}: The minute from (0 - 59)
+ * Object.second {Number}: The second from (0 - 59)
+ * Object.millisecond {Number}: The milliseconds (from 0 - 999), not available on all platforms
*
* @throws: GlobalizationError.PARSING_ERROR
- */
- private JSONObject getStringtoDate(JSONArray options)throws GlobalizationError{
- JSONObject obj = new JSONObject();
- Date date;
- try{
- //get format pattern from android device (Will only have device specific formatting for short form of date) or options supplied
- DateFormat fmt = new SimpleDateFormat(getDatePattern(options).getString("pattern"));
-
- //attempt parsing string based on user preferences
- date = fmt.parse(options.getJSONObject(0).get(DATESTRING).toString());
-
- //set Android Time object
- Time time = new Time();
- time.set(date.getTime());
-
- //return properties;
- obj.put("year", time.year);
- obj.put("month", time.month);
- obj.put("day", time.monthDay);
- obj.put("hour", time.hour);
- obj.put("minute", time.minute);
- obj.put("second", time.second);
- obj.put("millisecond", new Long(0));
- return obj;
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.PARSING_ERROR);
- }
- }
-
- /*
- * @Description: Returns a pattern string for formatting and parsing dates according to the client's
- * user preferences.
- * @Return: JSONObject
- *
- * Object.pattern {String}: The date and time pattern for formatting and parsing dates.
- * The patterns follow Unicode Technical Standard #35
- * http://unicode.org/reports/tr35/tr35-4.html
- * Object.timezone {String}: The abbreviated name of the time zone on the client
- * Object.utc_offset {Number}: The current difference in seconds between the client's
- * time zone and coordinated universal time.
- * Object.dst_offset {Number}: The current daylight saving time offset in seconds
- * between the client's non-daylight saving's time zone
- * and the client's daylight saving's time zone.
- *
- * @throws: GlobalizationError.PATTERN_ERROR
- */
- private JSONObject getDatePattern(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
-
- try{
- SimpleDateFormat fmtDate = (SimpleDateFormat)android.text.format.DateFormat.getDateFormat(this.cordova.getActivity()); //default user preference for date
- SimpleDateFormat fmtTime = (SimpleDateFormat)android.text.format.DateFormat.getTimeFormat(this.cordova.getActivity()); //default user preference for time
-
- String fmt = fmtDate.toLocalizedPattern() + " " + fmtTime.toLocalizedPattern(); //default SHORT date/time format. ex. dd/MM/yyyy h:mm a
-
- //get Date value + options (if available)
- if (options.getJSONObject(0).length() > 1){
- //options were included
-
- //get formatLength option
- if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(FORMATLENGTH)){
- String fmtOpt = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(FORMATLENGTH);
- if (fmtOpt.equalsIgnoreCase(MEDIUM)){//medium
- fmtDate = (SimpleDateFormat)android.text.format.DateFormat.getMediumDateFormat(this.cordova.getActivity());
- }else if (fmtOpt.equalsIgnoreCase(LONG) || fmtOpt.equalsIgnoreCase(FULL)){ //long/full
- fmtDate = (SimpleDateFormat)android.text.format.DateFormat.getLongDateFormat(this.cordova.getActivity());
- }
- }
-
- //return pattern type
- fmt = fmtDate.toLocalizedPattern() + " " + fmtTime.toLocalizedPattern();
- if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(SELECTOR)){
- String selOpt = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(SELECTOR);
- if (selOpt.equalsIgnoreCase(DATE)){
- fmt = fmtDate.toLocalizedPattern();
- }else if (selOpt.equalsIgnoreCase(TIME)){
- fmt = fmtTime.toLocalizedPattern();
- }
- }
- }
-
- //TimeZone from users device
- //TimeZone tz = Calendar.getInstance(Locale.getDefault()).getTimeZone(); //substitute method
- TimeZone tz = TimeZone.getTimeZone(Time.getCurrentTimezone());
-
- obj.put("pattern", fmt);
- obj.put("timezone", tz.getDisplayName(tz.inDaylightTime(Calendar.getInstance().getTime()),TimeZone.SHORT));
- obj.put("utc_offset", tz.getRawOffset()/1000);
- obj.put("dst_offset", tz.getDSTSavings()/1000);
- return obj;
-
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.PATTERN_ERROR);
- }
- }
-
- /*
- * @Description: Returns an array of either the names of the months or days of the week
- * according to the client's user preferences and calendar
- * @Return: JSONObject
- * Object.value {Array{String}}: The array of names starting from either
- * the first month in the year or the
- * first day of the week.
- *
- * @throws: GlobalizationError.UNKNOWN_ERROR
- */
- private JSONObject getDateNames(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
- //String[] value;
- JSONArray value = new JSONArray();
- List<String> namesList = new ArrayList<String>();
- final Map<String,Integer> namesMap; // final needed for sorting with anonymous comparator
- try{
- int type = 0; //default wide
- int item = 0; //default months
-
- //get options if available
- if (options.getJSONObject(0).length() > 0){
- //get type if available
- if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(TYPE)){
- String t = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(TYPE);
- if (t.equalsIgnoreCase(NARROW)){type++;} //DateUtils.LENGTH_MEDIUM
- }
- //get item if available
- if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(ITEM)){
- String t = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(ITEM);
- if (t.equalsIgnoreCase(DAYS)){item += 10;} //Days of week start at 1
- }
- }
- //determine return value
- int method = item + type;
- if (method == 1) { //months and narrow
- namesMap = Calendar.getInstance().getDisplayNames(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());
- } else if (method == 10) { //days and wide
- namesMap = Calendar.getInstance().getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
- } else if (method == 11) { //days and narrow
- namesMap = Calendar.getInstance().getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.getDefault());
- } else { //default: months and wide
- namesMap = Calendar.getInstance().getDisplayNames(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
- }
+ */
+ private JSONObject getStringtoDate(JSONArray options)throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ Date date;
+ try{
+ //get format pattern from android device (Will only have device specific formatting for short form of date) or options supplied
+ DateFormat fmt = new SimpleDateFormat(getDatePattern(options).getString("pattern"));
+
+ //attempt parsing string based on user preferences
+ date = fmt.parse(options.getJSONObject(0).get(DATESTRING).toString());
+
+ //set Android Time object
+ Time time = new Time();
+ time.set(date.getTime());
+
+ //return properties;
+ obj.put("year", time.year);
+ obj.put("month", time.month);
+ obj.put("day", time.monthDay);
+ obj.put("hour", time.hour);
+ obj.put("minute", time.minute);
+ obj.put("second", time.second);
+ obj.put("millisecond", new Long(0));
+ return obj;
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.PARSING_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Returns a pattern string for formatting and parsing dates according to the client's
+ * user preferences.
+ * @Return: JSONObject
+ *
+ * Object.pattern {String}: The date and time pattern for formatting and parsing dates.
+ * The patterns follow Unicode Technical Standard #35
+ * http://unicode.org/reports/tr35/tr35-4.html
+ * Object.timezone {String}: The abbreviated name of the time zone on the client
+ * Object.utc_offset {Number}: The current difference in seconds between the client's
+ * time zone and coordinated universal time.
+ * Object.dst_offset {Number}: The current daylight saving time offset in seconds
+ * between the client's non-daylight saving's time zone
+ * and the client's daylight saving's time zone.
+ *
+ * @throws: GlobalizationError.PATTERN_ERROR
+ */
+ private JSONObject getDatePattern(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+
+ try{
+ SimpleDateFormat fmtDate = (SimpleDateFormat)android.text.format.DateFormat.getDateFormat(this.cordova.getActivity()); //default user preference for date
+ SimpleDateFormat fmtTime = (SimpleDateFormat)android.text.format.DateFormat.getTimeFormat(this.cordova.getActivity()); //default user preference for time
+
+ String fmt = fmtDate.toLocalizedPattern() + " " + fmtTime.toLocalizedPattern(); //default SHORT date/time format. ex. dd/MM/yyyy h:mm a
+
+ //get Date value + options (if available)
+ if (options.getJSONObject(0).length() > 1){
+ //options were included
+
+ //get formatLength option
+ if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(FORMATLENGTH)){
+ String fmtOpt = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(FORMATLENGTH);
+ if (fmtOpt.equalsIgnoreCase(MEDIUM)){//medium
+ fmtDate = (SimpleDateFormat)android.text.format.DateFormat.getMediumDateFormat(this.cordova.getActivity());
+ }else if (fmtOpt.equalsIgnoreCase(LONG) || fmtOpt.equalsIgnoreCase(FULL)){ //long/full
+ fmtDate = (SimpleDateFormat)android.text.format.DateFormat.getLongDateFormat(this.cordova.getActivity());
+ }
+ }
+
+ //return pattern type
+ fmt = fmtDate.toLocalizedPattern() + " " + fmtTime.toLocalizedPattern();
+ if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(SELECTOR)){
+ String selOpt = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(SELECTOR);
+ if (selOpt.equalsIgnoreCase(DATE)){
+ fmt = fmtDate.toLocalizedPattern();
+ }else if (selOpt.equalsIgnoreCase(TIME)){
+ fmt = fmtTime.toLocalizedPattern();
+ }
+ }
+ }
+
+ //TimeZone from users device
+ //TimeZone tz = Calendar.getInstance(Locale.getDefault()).getTimeZone(); //substitute method
+ TimeZone tz = TimeZone.getTimeZone(Time.getCurrentTimezone());
+
+ obj.put("pattern", fmt);
+ obj.put("timezone", tz.getDisplayName(tz.inDaylightTime(Calendar.getInstance().getTime()),TimeZone.SHORT));
+ obj.put("utc_offset", tz.getRawOffset()/1000);
+ obj.put("dst_offset", tz.getDSTSavings()/1000);
+ return obj;
+
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.PATTERN_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Returns an array of either the names of the months or days of the week
+ * according to the client's user preferences and calendar
+ * @Return: JSONObject
+ * Object.value {Array{String}}: The array of names starting from either
+ * the first month in the year or the
+ * first day of the week.
+ *
+ * @throws: GlobalizationError.UNKNOWN_ERROR
+ */
+ private JSONObject getDateNames(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ //String[] value;
+ JSONArray value = new JSONArray();
+ List<String> namesList = new ArrayList<String>();
+ final Map<String,Integer> namesMap; // final needed for sorting with anonymous comparator
+ try{
+ int type = 0; //default wide
+ int item = 0; //default months
+
+ //get options if available
+ if (options.getJSONObject(0).length() > 0){
+ //get type if available
+ if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(TYPE)){
+ String t = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(TYPE);
+ if (t.equalsIgnoreCase(NARROW)){type++;} //DateUtils.LENGTH_MEDIUM
+ }
+ //get item if available
+ if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(ITEM)){
+ String t = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(ITEM);
+ if (t.equalsIgnoreCase(DAYS)){item += 10;} //Days of week start at 1
+ }
+ }
+ //determine return value
+ int method = item + type;
+ if (method == 1) { //months and narrow
+ namesMap = Calendar.getInstance().getDisplayNames(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());
+ } else if (method == 10) { //days and wide
+ namesMap = Calendar.getInstance().getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
+ } else if (method == 11) { //days and narrow
+ namesMap = Calendar.getInstance().getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.getDefault());
+ } else { //default: months and wide
+ namesMap = Calendar.getInstance().getDisplayNames(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
+ }
- // save names as a list
- for(String name : namesMap.keySet()) {
- namesList.add(name);
- }
-
- // sort the list according to values in namesMap
- Collections.sort(namesList, new Comparator<String>() {
- public int compare(String arg0, String arg1) {
- return namesMap.get(arg0).compareTo(namesMap.get(arg1));
- }
- });
-
- // convert nameList into JSONArray of String objects
- for (int i = 0; i < namesList.size(); i ++){
- value.put(namesList.get(i));
- }
+ // save names as a list
+ for(String name : namesMap.keySet()) {
+ namesList.add(name);
+ }
+
+ // sort the list according to values in namesMap
+ Collections.sort(namesList, new Comparator<String>() {
+ public int compare(String arg0, String arg1) {
+ return namesMap.get(arg0).compareTo(namesMap.get(arg1));
+ }
+ });
+
+ // convert nameList into JSONArray of String objects
+ for (int i = 0; i < namesList.size(); i ++){
+ value.put(namesList.get(i));
+ }
- //return array of names
- return obj.put("value", value);
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
- }
- }
-
- /*
- * @Description: Returns whether daylight savings time is in effect for a given date using the client's
- * time zone and calendar.
- * @Return: JSONObject
- * Object.dst {Boolean}: The value "true" indicates that daylight savings time is
- * in effect for the given date and "false" indicate that it is not. *
- *
- * @throws: GlobalizationError.UNKNOWN_ERROR
- */
- private JSONObject getIsDayLightSavingsTime(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
- boolean dst = false;
- try{
- Date date = new Date((Long)options.getJSONObject(0).get(DATE));
- //TimeZone tz = Calendar.getInstance(Locale.getDefault()).getTimeZone();
- TimeZone tz = TimeZone.getTimeZone(Time.getCurrentTimezone());
- dst = tz.inDaylightTime(date); //get daylight savings data from date object and user timezone settings
-
- return obj.put("dst",dst);
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
- }
- }
-
- /*
- * @Description: Returns the first day of the week according to the client's user preferences and calendar.
- * The days of the week are numbered starting from 1 where 1 is considered to be Sunday.
- * @Return: JSONObject
- * Object.value {Number}: The number of the first day of the week.
- *
- * @throws: GlobalizationError.UNKNOWN_ERROR
- */
- private JSONObject getFirstDayOfWeek(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
- try{
- int value = Calendar.getInstance(Locale.getDefault()).getFirstDayOfWeek(); //get first day of week based on user locale settings
- return obj.put("value", value);
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
- }
- }
-
- /*
- * @Description: Returns a number formatted as a string according to the client's user preferences.
- * @Return: JSONObject
- * Object.value {String}: The formatted number string.
- *
- * @throws: GlobalizationError.FORMATTING_ERROR
- */
- private JSONObject getNumberToString(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
- String value = "";
- try{
- DecimalFormat fmt = getNumberFormatInstance(options);//returns Decimal/Currency/Percent instance
- value = fmt.format(options.getJSONObject(0).get(NUMBER));
- return obj.put("value", value);
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.FORMATTING_ERROR);
- }
- }
-
- /*
- * @Description: Parses a number formatted as a string according to the client's user preferences and
- * returns the corresponding number.
- * @Return: JSONObject
- * Object.value {Number}: The parsed number.
- *
- * @throws: GlobalizationError.PARSING_ERROR
- */
- private JSONObject getStringToNumber(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
- Number value;
- try{
- DecimalFormat fmt = getNumberFormatInstance(options); //returns Decimal/Currency/Percent instance
- value = fmt.parse((String)options.getJSONObject(0).get(NUMBERSTRING));
- return obj.put("value", value);
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.PARSING_ERROR);
- }
- }
-
- /*
- * @Description: Returns a pattern string for formatting and parsing numbers according to the client's user
- * preferences.
- * @Return: JSONObject
- * Object.pattern {String}: The number pattern for formatting and parsing numbers.
- * The patterns follow Unicode Technical Standard #35.
- * http://unicode.org/reports/tr35/tr35-4.html
- * Object.symbol {String}: The symbol to be used when formatting and parsing
- * e.g., percent or currency symbol.
- * Object.fraction {Number}: The number of fractional digits to use when parsing and
- * formatting numbers.
- * Object.rounding {Number}: The rounding increment to use when parsing and formatting.
- * Object.positive {String}: The symbol to use for positive numbers when parsing and formatting.
- * Object.negative: {String}: The symbol to use for negative numbers when parsing and formatting.
- * Object.decimal: {String}: The decimal symbol to use for parsing and formatting.
- * Object.grouping: {String}: The grouping symbol to use for parsing and formatting.
- *
- * @throws: GlobalizationError.PATTERN_ERROR
- */
- private JSONObject getNumberPattern(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
- try{
- //uses java.text.DecimalFormat to format value
- DecimalFormat fmt = (DecimalFormat) DecimalFormat.getInstance(Locale.getDefault()); //default format
- String symbol = String.valueOf(fmt.getDecimalFormatSymbols().getDecimalSeparator());
- //get Date value + options (if available)
- if (options.getJSONObject(0).length() > 0){
- //options were included
- if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(TYPE)){
- String fmtOpt = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(TYPE);
- if (fmtOpt.equalsIgnoreCase(CURRENCY)){
- fmt = (DecimalFormat) DecimalFormat.getCurrencyInstance(Locale.getDefault());
- symbol = fmt.getDecimalFormatSymbols().getCurrencySymbol();
- }else if(fmtOpt.equalsIgnoreCase(PERCENT)){
- fmt = (DecimalFormat) DecimalFormat.getPercentInstance(Locale.getDefault());
- symbol = String.valueOf(fmt.getDecimalFormatSymbols().getPercent());
- }
- }
- }
-
- //return properties
- obj.put("pattern", fmt.toPattern());
- obj.put("symbol", symbol);
- obj.put("fraction", fmt.getMinimumFractionDigits());
- obj.put("rounding", new Integer(0));
- obj.put("positive", fmt.getPositivePrefix());
- obj.put("negative", fmt.getNegativePrefix());
- obj.put("decimal", String.valueOf(fmt.getDecimalFormatSymbols().getDecimalSeparator()));
- obj.put("grouping", String.valueOf(fmt.getDecimalFormatSymbols().getGroupingSeparator()));
-
- return obj;
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.PATTERN_ERROR);
- }
- }
-
- /*
- * @Description: Returns a pattern string for formatting and parsing currency values according to the client's
- * user preferences and ISO 4217 currency code.
- * @Return: JSONObject
- * Object.pattern {String}: The currency pattern for formatting and parsing currency values.
- * The patterns follow Unicode Technical Standard #35
- * http://unicode.org/reports/tr35/tr35-4.html
- * Object.code {String}: The ISO 4217 currency code for the pattern.
- * Object.fraction {Number}: The number of fractional digits to use when parsing and
- * formatting currency.
- * Object.rounding {Number}: The rounding increment to use when parsing and formatting.
- * Object.decimal: {String}: The decimal symbol to use for parsing and formatting.
- * Object.grouping: {String}: The grouping symbol to use for parsing and formatting.
- *
- * @throws: GlobalizationError.FORMATTING_ERROR
- */
- private JSONObject getCurrencyPattern(JSONArray options) throws GlobalizationError{
- JSONObject obj = new JSONObject();
- try{
- //get ISO 4217 currency code
- String code = options.getJSONObject(0).getString(CURRENCYCODE);
-
- //uses java.text.DecimalFormat to format value
- DecimalFormat fmt = (DecimalFormat) DecimalFormat.getCurrencyInstance(Locale.getDefault());
-
- //set currency format
- Currency currency = Currency.getInstance(code);
- fmt.setCurrency(currency);
-
- //return properties
- obj.put("pattern", fmt.toPattern());
- obj.put("code", currency.getCurrencyCode());
- obj.put("fraction", fmt.getMinimumFractionDigits());
- obj.put("rounding", new Integer(0));
- obj.put("decimal", String.valueOf(fmt.getDecimalFormatSymbols().getDecimalSeparator()));
- obj.put("grouping", String.valueOf(fmt.getDecimalFormatSymbols().getGroupingSeparator()));
-
- return obj;
- }catch(Exception ge){
- throw new GlobalizationError(GlobalizationError.FORMATTING_ERROR);
- }
- }
-
- /*
- * @Description: Parses a JSONArray from user options and returns the correct Instance of Decimal/Percent/Currency.
- * @Return: DecimalFormat : The Instance to use.
- *
- * @throws: JSONException
- */
- private DecimalFormat getNumberFormatInstance(JSONArray options) throws JSONException{
- DecimalFormat fmt = (DecimalFormat)DecimalFormat.getInstance(Locale.getDefault()); //default format
- try{
- if (options.getJSONObject(0).length() > 1){
- //options were included
- if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(TYPE)){
- String fmtOpt = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(TYPE);
- if (fmtOpt.equalsIgnoreCase(CURRENCY)){
- fmt = (DecimalFormat)DecimalFormat.getCurrencyInstance(Locale.getDefault());
- }else if(fmtOpt.equalsIgnoreCase(PERCENT)){
- fmt = (DecimalFormat)DecimalFormat.getPercentInstance(Locale.getDefault());
- }
- }
- }
-
- }catch (JSONException je){}
- return fmt;
- }
-}
\ No newline at end of file
+ //return array of names
+ return obj.put("value", value);
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Returns whether daylight savings time is in effect for a given date using the client's
+ * time zone and calendar.
+ * @Return: JSONObject
+ * Object.dst {Boolean}: The value "true" indicates that daylight savings time is
+ * in effect for the given date and "false" indicate that it is not. *
+ *
+ * @throws: GlobalizationError.UNKNOWN_ERROR
+ */
+ private JSONObject getIsDayLightSavingsTime(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ boolean dst = false;
+ try{
+ Date date = new Date((Long)options.getJSONObject(0).get(DATE));
+ //TimeZone tz = Calendar.getInstance(Locale.getDefault()).getTimeZone();
+ TimeZone tz = TimeZone.getTimeZone(Time.getCurrentTimezone());
+ dst = tz.inDaylightTime(date); //get daylight savings data from date object and user timezone settings
+
+ return obj.put("dst",dst);
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Returns the first day of the week according to the client's user preferences and calendar.
+ * The days of the week are numbered starting from 1 where 1 is considered to be Sunday.
+ * @Return: JSONObject
+ * Object.value {Number}: The number of the first day of the week.
+ *
+ * @throws: GlobalizationError.UNKNOWN_ERROR
+ */
+ private JSONObject getFirstDayOfWeek(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ try{
+ int value = Calendar.getInstance(Locale.getDefault()).getFirstDayOfWeek(); //get first day of week based on user locale settings
+ return obj.put("value", value);
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.UNKNOWN_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Returns a number formatted as a string according to the client's user preferences.
+ * @Return: JSONObject
+ * Object.value {String}: The formatted number string.
+ *
+ * @throws: GlobalizationError.FORMATTING_ERROR
+ */
+ private JSONObject getNumberToString(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ String value = "";
+ try{
+ DecimalFormat fmt = getNumberFormatInstance(options);//returns Decimal/Currency/Percent instance
+ value = fmt.format(options.getJSONObject(0).get(NUMBER));
+ return obj.put("value", value);
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.FORMATTING_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Parses a number formatted as a string according to the client's user preferences and
+ * returns the corresponding number.
+ * @Return: JSONObject
+ * Object.value {Number}: The parsed number.
+ *
+ * @throws: GlobalizationError.PARSING_ERROR
+ */
+ private JSONObject getStringToNumber(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ Number value;
+ try{
+ DecimalFormat fmt = getNumberFormatInstance(options); //returns Decimal/Currency/Percent instance
+ value = fmt.parse((String)options.getJSONObject(0).get(NUMBERSTRING));
+ return obj.put("value", value);
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.PARSING_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Returns a pattern string for formatting and parsing numbers according to the client's user
+ * preferences.
+ * @Return: JSONObject
+ * Object.pattern {String}: The number pattern for formatting and parsing numbers.
+ * The patterns follow Unicode Technical Standard #35.
+ * http://unicode.org/reports/tr35/tr35-4.html
+ * Object.symbol {String}: The symbol to be used when formatting and parsing
+ * e.g., percent or currency symbol.
+ * Object.fraction {Number}: The number of fractional digits to use when parsing and
+ * formatting numbers.
+ * Object.rounding {Number}: The rounding increment to use when parsing and formatting.
+ * Object.positive {String}: The symbol to use for positive numbers when parsing and formatting.
+ * Object.negative: {String}: The symbol to use for negative numbers when parsing and formatting.
+ * Object.decimal: {String}: The decimal symbol to use for parsing and formatting.
+ * Object.grouping: {String}: The grouping symbol to use for parsing and formatting.
+ *
+ * @throws: GlobalizationError.PATTERN_ERROR
+ */
+ private JSONObject getNumberPattern(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ try{
+ //uses java.text.DecimalFormat to format value
+ DecimalFormat fmt = (DecimalFormat) DecimalFormat.getInstance(Locale.getDefault()); //default format
+ String symbol = String.valueOf(fmt.getDecimalFormatSymbols().getDecimalSeparator());
+ //get Date value + options (if available)
+ if (options.getJSONObject(0).length() > 0){
+ //options were included
+ if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(TYPE)){
+ String fmtOpt = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(TYPE);
+ if (fmtOpt.equalsIgnoreCase(CURRENCY)){
+ fmt = (DecimalFormat) DecimalFormat.getCurrencyInstance(Locale.getDefault());
+ symbol = fmt.getDecimalFormatSymbols().getCurrencySymbol();
+ }else if(fmtOpt.equalsIgnoreCase(PERCENT)){
+ fmt = (DecimalFormat) DecimalFormat.getPercentInstance(Locale.getDefault());
+ symbol = String.valueOf(fmt.getDecimalFormatSymbols().getPercent());
+ }
+ }
+ }
+
+ //return properties
+ obj.put("pattern", fmt.toPattern());
+ obj.put("symbol", symbol);
+ obj.put("fraction", fmt.getMinimumFractionDigits());
+ obj.put("rounding", new Integer(0));
+ obj.put("positive", fmt.getPositivePrefix());
+ obj.put("negative", fmt.getNegativePrefix());
+ obj.put("decimal", String.valueOf(fmt.getDecimalFormatSymbols().getDecimalSeparator()));
+ obj.put("grouping", String.valueOf(fmt.getDecimalFormatSymbols().getGroupingSeparator()));
+
+ return obj;
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.PATTERN_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Returns a pattern string for formatting and parsing currency values according to the client's
+ * user preferences and ISO 4217 currency code.
+ * @Return: JSONObject
+ * Object.pattern {String}: The currency pattern for formatting and parsing currency values.
+ * The patterns follow Unicode Technical Standard #35
+ * http://unicode.org/reports/tr35/tr35-4.html
+ * Object.code {String}: The ISO 4217 currency code for the pattern.
+ * Object.fraction {Number}: The number of fractional digits to use when parsing and
+ * formatting currency.
+ * Object.rounding {Number}: The rounding increment to use when parsing and formatting.
+ * Object.decimal: {String}: The decimal symbol to use for parsing and formatting.
+ * Object.grouping: {String}: The grouping symbol to use for parsing and formatting.
+ *
+ * @throws: GlobalizationError.FORMATTING_ERROR
+ */
+ private JSONObject getCurrencyPattern(JSONArray options) throws GlobalizationError{
+ JSONObject obj = new JSONObject();
+ try{
+ //get ISO 4217 currency code
+ String code = options.getJSONObject(0).getString(CURRENCYCODE);
+
+ //uses java.text.DecimalFormat to format value
+ DecimalFormat fmt = (DecimalFormat) DecimalFormat.getCurrencyInstance(Locale.getDefault());
+
+ //set currency format
+ Currency currency = Currency.getInstance(code);
+ fmt.setCurrency(currency);
+
+ //return properties
+ obj.put("pattern", fmt.toPattern());
+ obj.put("code", currency.getCurrencyCode());
+ obj.put("fraction", fmt.getMinimumFractionDigits());
+ obj.put("rounding", new Integer(0));
+ obj.put("decimal", String.valueOf(fmt.getDecimalFormatSymbols().getDecimalSeparator()));
+ obj.put("grouping", String.valueOf(fmt.getDecimalFormatSymbols().getGroupingSeparator()));
+
+ return obj;
+ }catch(Exception ge){
+ throw new GlobalizationError(GlobalizationError.FORMATTING_ERROR);
+ }
+ }
+
+ /*
+ * @Description: Parses a JSONArray from user options and returns the correct Instance of Decimal/Percent/Currency.
+ * @Return: DecimalFormat : The Instance to use.
+ *
+ * @throws: JSONException
+ */
+ private DecimalFormat getNumberFormatInstance(JSONArray options) throws JSONException{
+ DecimalFormat fmt = (DecimalFormat)DecimalFormat.getInstance(Locale.getDefault()); //default format
+ try{
+ if (options.getJSONObject(0).length() > 1){
+ //options were included
+ if (!((JSONObject)options.getJSONObject(0).get(OPTIONS)).isNull(TYPE)){
+ String fmtOpt = (String)((JSONObject)options.getJSONObject(0).get(OPTIONS)).get(TYPE);
+ if (fmtOpt.equalsIgnoreCase(CURRENCY)){
+ fmt = (DecimalFormat)DecimalFormat.getCurrencyInstance(Locale.getDefault());
+ }else if(fmtOpt.equalsIgnoreCase(PERCENT)){
+ fmt = (DecimalFormat)DecimalFormat.getPercentInstance(Locale.getDefault());
+ }
+ }
+ }
+
+ }catch (JSONException je){}
+ return fmt;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/34840175/framework/src/org/apache/cordova/GlobalizationError.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/GlobalizationError.java b/framework/src/org/apache/cordova/GlobalizationError.java
index c831845..5c1b09e 100644
--- a/framework/src/org/apache/cordova/GlobalizationError.java
+++ b/framework/src/org/apache/cordova/GlobalizationError.java
@@ -1,41 +1,60 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+
package org.apache.cordova;
/**
* @description Exception class representing defined Globalization error codes
* @Globalization error codes:
- * GlobalizationError.UNKNOWN_ERROR = 0;
- * GlobalizationError.FORMATTING_ERROR = 1;
- * GlobalizationError.PARSING_ERROR = 2;
- * GlobalizationError.PATTERN_ERROR = 3;
+ * GlobalizationError.UNKNOWN_ERROR = 0;
+ * GlobalizationError.FORMATTING_ERROR = 1;
+ * GlobalizationError.PARSING_ERROR = 2;
+ * GlobalizationError.PATTERN_ERROR = 3;
*/
public class GlobalizationError extends Exception{
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- public static final String UNKNOWN_ERROR = "UNKNOWN_ERROR";
- public static final String FORMATTING_ERROR = "FORMATTING_ERROR";
- public static final String PARSING_ERROR = "PARSING_ERROR";
- public static final String PATTERN_ERROR = "PATTERN_ERROR";
-
- int error = 0; //default unknown error thrown
- /**
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ public static final String UNKNOWN_ERROR = "UNKNOWN_ERROR";
+ public static final String FORMATTING_ERROR = "FORMATTING_ERROR";
+ public static final String PARSING_ERROR = "PARSING_ERROR";
+ public static final String PATTERN_ERROR = "PATTERN_ERROR";
+
+ int error = 0; //default unknown error thrown
+ /**
* Default constructor
*/
public GlobalizationError() {}
- /**
+ /**
* Create an exception returning an error code
*
* @param s
*/
- public GlobalizationError(String s) {
- if (s.equalsIgnoreCase(FORMATTING_ERROR)){
- error = 1;
+ public GlobalizationError(String s) {
+ if (s.equalsIgnoreCase(FORMATTING_ERROR)){
+ error = 1;
}else if (s.equalsIgnoreCase(PARSING_ERROR)){
- error = 2;
+ error = 2;
}else if (s.equalsIgnoreCase(PATTERN_ERROR)){
- error = 3;
- }
+ error = 3;
+ }
}
/**
* get error string based on error code
@@ -43,30 +62,30 @@ public class GlobalizationError extends Exception{
* @param String msg
*/
public String getErrorString(){
- String msg = "";
- switch (error){
- case 0:
- msg = UNKNOWN_ERROR;
- break;
- case 1:
- msg = FORMATTING_ERROR;
- break;
- case 2:
- msg = PARSING_ERROR;
- break;
- case 3:
- msg = PATTERN_ERROR;
- break;
- }
- return msg;
+ String msg = "";
+ switch (error){
+ case 0:
+ msg = UNKNOWN_ERROR;
+ break;
+ case 1:
+ msg = FORMATTING_ERROR;
+ break;
+ case 2:
+ msg = PARSING_ERROR;
+ break;
+ case 3:
+ msg = PATTERN_ERROR;
+ break;
+ }
+ return msg;
}
/**
* get error code
*
* @param String msg
*/
- public int getErrorCode(){
- return error;
+ public int getErrorCode(){
+ return error;
}
-}
\ No newline at end of file
+}