[Time] Replaced hardcoded getDateFormat method
authorKarol Pawlowski <k.pawlowski@samsung.com>
Wed, 14 Jan 2015 15:13:22 +0000 (16:13 +0100)
committerKarol Pawlowski <k.pawlowski@samsung.com>
Wed, 14 Jan 2015 15:15:45 +0000 (16:15 +0100)
[Verification]
    TCT results should be self same

Change-Id: If80cae67cccd00c709e807377f703963db48ffd4
Signed-off-by: Karol Pawlowski <k.pawlowski@samsung.com>
src/time/time_api.js
src/time/time_instance.cc
src/time/time_instance.h

index e4a25237d5092400da45b8ded909f68c7930a9d1..0a7ce139386d6c0e408e2228f5b032b7a534cbb1 100644 (file)
@@ -38,10 +38,23 @@ exports.getAvailableTimezones = function() {
   return _availableTimezonesCache;
 };
 
-exports.getDateFormat = function(shortformat) {
-  if (shortformat)
-    return 'm/d/y';
-  return 'D, M d y';
+exports.getDateFormat = function() {
+  var args = AV.validateArgs(arguments, [{
+    name : 'shortformat',
+    type : AV.Types.BOOLEAN,
+    optional : true,
+    nullable : true
+  }]);
+
+  if (!args.has.shortformat) {
+    args.shortformat = false;
+  }
+
+  var result = native_.callSync('Time_getDateFormat', {shortformat: args.shortformat});
+  if (native_.isFailure(result)) {
+    throw native_.getErrorObject(result);
+  }
+  return native_.getResultObject(result);
 };
 
 exports.getTimeFormat = function() {
index 0f069d015746af1752441fff8564744ac0cb702d..fec50cfa9c821a0e84ab55eeae5714bbd583c7b6 100644 (file)
@@ -59,6 +59,7 @@ TimeInstance::TimeInstance() {
   REGISTER_SYNC("Time_getDSTTransition", Time_getDSTTransition);
   REGISTER_SYNC("Time_getLocalTimeZone", Time_getLocalTimeZone);
   REGISTER_SYNC("Time_getTimeFormat", Time_getTimeFormat);
+  REGISTER_SYNC("Time_getDateFormat", Time_getDateFormat);
   REGISTER_SYNC("Time_getTimeZoneOffset", Time_getTimeZoneOffset);
   REGISTER_SYNC("Time_getTimeZoneAbbreviation", Time_getTimeZoneAbbreviation);
   REGISTER_SYNC("Time_isDST", Time_isDST);
@@ -334,6 +335,40 @@ void TimeInstance::Time_getTimeFormat(const JsonValue& /*args*/,
   ReportSuccess(JsonValue(result), out);
 }
 
+void TimeInstance::Time_getDateFormat(const JsonValue& args, JsonObject& out) {
+  bool shortformat = args.get("shortformat").evaluate_as_boolean();
+
+  UnicodeString time_format = getDateTimeFormat(
+      (shortformat ? DateTimeFormatType::DATE_SHORT_FORMAT :
+                     DateTimeFormatType::DATE_FORMAT),
+      true);
+
+  time_format = time_format.findAndReplace("E", "D");
+
+  if (time_format.indexOf("MMM") > 0) {
+    if (time_format.indexOf("MMMM") > 0) {
+      time_format = time_format.findAndReplace("MMMM", "M");
+    } else {
+      time_format = time_format.findAndReplace("MMM", "M");
+    }
+  } else {
+    time_format = time_format.findAndReplace("M", "m");
+  }
+
+  int i = 0;
+  while (i < time_format.length() - 1) {
+    if (time_format[i] == time_format[i + 1]) {
+      time_format.remove(i, 1);
+    } else {
+      ++i;
+    }
+  }
+
+  std::string result = "";
+  time_format.toUTF8String(result);
+  ReportSuccess(JsonValue(result), out);
+}
+
 UnicodeString TimeInstance::getDateTimeFormat(DateTimeFormatType type,
                                               bool bLocale) {
   UErrorCode ec = U_ZERO_ERROR;
index ade64f57ca470f5f9d1503bcd8713d67214ce32e..a1efbe576b7a3dd6152df5cb32ad0420f525ab0a 100644 (file)
@@ -38,6 +38,7 @@ class TimeInstance : public common::ParsedInstance {
   void Time_getDSTTransition(const JsonValue& args, JsonObject& out);
   void Time_getLocalTimeZone(const JsonValue& args, JsonObject& out);
   void Time_getTimeFormat(const JsonValue& args, JsonObject& out);
+  void Time_getDateFormat(const JsonValue& args, JsonObject& out);
   void Time_getTimeZoneOffset(const JsonValue& args, JsonObject& out);
   void Time_getTimeZoneAbbreviation(const JsonValue& args, JsonObject& out);
   void Time_isDST(const JsonValue& args, JsonObject& out);