Chris Hillery has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/363

Change subject: Corrected JSON output of date/time/duration types.
......................................................................

Corrected JSON output of date/time/duration types.

Change-Id: I5c37d3b5aad7f286eba1cb8cb5f05ad456a6521e
---
M 
asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-cleanjson/alltypes_01.1.json
M 
asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-json/alltypes_01.1.json
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADatePrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADateTimePrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADayTimeDurationPrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADurationPrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ATimePrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADatePrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADateTimePrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADayTimeDurationPrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADurationPrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ATimePrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
M 
asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java
19 files changed, 217 insertions(+), 243 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/63/363/1

diff --git 
a/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-cleanjson/alltypes_01.1.json
 
b/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-cleanjson/alltypes_01.1.json
index 5081d69..dd319a4 100644
--- 
a/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-cleanjson/alltypes_01.1.json
+++ 
b/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-cleanjson/alltypes_01.1.json
@@ -1,2 +1,2 @@
-[ { "id": 10, "string": "Nancy", "float": 32.5, "double": -2013.5938237483274, 
"boolean": true, "int8": 125, "int16": 32765, "int32": 294967295, "int64": 
1700000000000000000, "unorderedList": [ "reading", "writing" ], "orderedList": 
[ "Brad", "Scott" ], "record": { "number": 8389, "street": "Hill St.", "city": 
"Mountain View" }, "date": { "date": -125625945600000}, "time": { "time": 
44430000}, "datetime": { "datetime": -123703587570000}, "duration": { 
"duration": { "months": 131, "millis": 1075830000} }, "point": [41.0, 44.0], 
"point3d": [44.0, 13.0, 41.0], "line": [ [10.1, 11.1], [10.2, 11.2] ], 
"rectangle": [ [5.1, 11.8], [87.6, 15.6548] ], "polygon": [ [1.2, 1.3], [2.1, 
2.5], [3.5, 3.6], [4.6, 4.8] ], "circle": [ [10.1, 11.1], 10.2 ], "binary": 
"ABCDEF0123456789", "uuid": "5c848e5c-6b6a-498f-8452-8847a2957421" }
+[ { "id": 10, "string": "Nancy", "float": 32.5, "double": -2013.5938237483274, 
"boolean": true, "int8": 125, "int16": 32765, "int32": 294967295, "int64": 
1700000000000000000, "unorderedList": [ "reading", "writing" ], "orderedList": 
[ "Brad", "Scott" ], "record": { "number": 8389, "street": "Hill St.", "city": 
"Mountain View" }, "date": "-2011-01-27", "time": "12:20:30.000Z", "datetime": 
"-1951-12-27T12:20:30.000Z", "duration": "P10Y11M12DT10H50M30S", "point": 
[41.0, 44.0], "point3d": [44.0, 13.0, 41.0], "line": [ [10.1, 11.1], [10.2, 
11.2] ], "rectangle": [ [5.1, 11.8], [87.6, 15.6548] ], "polygon": [ [1.2, 
1.3], [2.1, 2.5], [3.5, 3.6], [4.6, 4.8] ], "circle": [ [10.1, 11.1], 10.2 ], 
"binary": "ABCDEF0123456789", "uuid": "5c848e5c-6b6a-498f-8452-8847a2957421" }
  ]
diff --git 
a/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-json/alltypes_01.1.json
 
b/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-json/alltypes_01.1.json
index 5ee58be..2e99438 100644
--- 
a/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-json/alltypes_01.1.json
+++ 
b/asterix-app/src/test/resources/runtimets/results/scan/alltypes_01-json/alltypes_01.1.json
@@ -1,2 +1,2 @@
-[ { "id": { "int64": 10 }, "string": "Nancy", "float": 32.5, "double": 
-2013.5938237483274, "boolean": true, "int8": { "int8": 125 }, "int16": { 
"int16": 32765 }, "int32": { "int32": 294967295 }, "int64": { "int64": 
1700000000000000000 }, "unorderedList": { "unorderedlist": [ "reading", 
"writing" ] }, "orderedList": { "orderedlist": [ "Brad", "Scott" ] }, "record": 
{ "number": { "int64": 8389 }, "street": "Hill St.", "city": "Mountain View" }, 
"date": { "date": -125625945600000}, "time": { "time": 44430000}, "datetime": { 
"datetime": -123703587570000}, "duration": { "duration": { "months": 131, 
"millis": 1075830000} }, "point": { "point": [41.0, 44.0] }, "point3d": { 
"point3d": [44.0, 13.0, 41.0] }, "line": { "line":  [ { "point": [10.1, 11.1] 
}, { "point": [10.2, 11.2] } ] }, "rectangle": { "rectangle": [{ "point": [5.1, 
11.8] }, { "point": [87.6, 15.6548] } ] }, "polygon": { "polygon": [{ "point": 
[1.2, 1.3] },{ "point": [2.1, 2.5] },{ "point": [3.5, 3.6] },{ "point": [4.6
 , 4.8] }] }, "circle": { "circle": [ { "point": [10.1, 11.1] }, 10.2 ] }, 
"binary": "ABCDEF0123456789", "uuid": "5c848e5c-6b6a-498f-8452-8847a2957421" }
+[ { "id": { "int64": 10 }, "string": "Nancy", "float": 32.5, "double": 
-2013.5938237483274, "boolean": true, "int8": { "int8": 125 }, "int16": { 
"int16": 32765 }, "int32": { "int32": 294967295 }, "int64": { "int64": 
1700000000000000000 }, "unorderedList": { "unorderedlist": [ "reading", 
"writing" ] }, "orderedList": { "orderedlist": [ "Brad", "Scott" ] }, "record": 
{ "number": { "int64": 8389 }, "street": "Hill St.", "city": "Mountain View" }, 
"date": { "date": "-2011-01-27" }, "time": { "time": "12:20:30.000Z" }, 
"datetime": { "datetime": "-1951-12-27T12:20:30.000Z" }, "duration": { 
"duration": "P10Y11M12DT10H50M30S" }, "point": { "point": [41.0, 44.0] }, 
"point3d": { "point3d": [44.0, 13.0, 41.0] }, "line": { "line":  [ { "point": 
[10.1, 11.1] }, { "point": [10.2, 11.2] } ] }, "rectangle": { "rectangle": [{ 
"point": [5.1, 11.8] }, { "point": [87.6, 15.6548] } ] }, "polygon": { 
"polygon": [{ "point": [1.2, 1.3] },{ "point": [2.1, 2.5] },{ "point": [3.5, 
3.6] },{ "point": [4
 .6, 4.8] }] }, "circle": { "circle": [ { "point": [10.1, 11.1] }, 10.2 ] }, 
"binary": "ABCDEF0123456789", "uuid": "5c848e5c-6b6a-498f-8452-8847a2957421" }
  ]
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
index aef03b1..a69b386 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/PrintTools.java
@@ -16,16 +16,173 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.PrintStream;
 
+import 
edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm.ADateTimePrinter;
+import 
edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm.ADayTimeDurationPrinter;
+import 
edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm.ADurationPrinter;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm.ATimePrinter;
+import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
+import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
+import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.data.utils.WriteValueTools;
 import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
 
 public class PrintTools {
+
+    private static final GregorianCalendarSystem gCalInstance = 
GregorianCalendarSystem.getInstance();
+    private static long CHRONON_OF_DAY = 24 * 60 * 60 * 1000;
+
+    public static void printDateString(byte[] b, int s, int l, PrintStream ps) 
throws AlgebricksException {
+        long chrononTime = AInt32SerializerDeserializer.getInt(b, s + 1) * 
CHRONON_OF_DAY;
+
+        try {
+            gCalInstance.getExtendStringRepUntilField(chrononTime, 0, ps, 
GregorianCalendarSystem.Fields.YEAR, GregorianCalendarSystem.Fields.DAY, false);
+        } catch (IOException e) {
+            throw new AlgebricksException(e);
+        }
+    }
+
+    public static void printDateTimeString(byte[] b, int s, int l, PrintStream 
ps) throws AlgebricksException {
+        long chrononTime = AInt64SerializerDeserializer.getLong(b, s + 1);
+
+        try {
+            gCalInstance.getExtendStringRepUntilField(chrononTime, 0, ps, 
GregorianCalendarSystem.Fields.YEAR, 
GregorianCalendarSystem.Fields.MILLISECOND, true);
+        } catch (IOException e) {
+            throw new AlgebricksException(e);
+        }
+
+    }
+
+    public static void printDayTimeDurationString(byte[] b, int s, int l, 
PrintStream ps) throws AlgebricksException {
+        boolean positive = true;
+        long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 1);
+
+        // set the negative flag. "||" is necessary in case that months field 
is not there (so it is 0)
+        if (milliseconds < 0) {
+            milliseconds *= -1;
+            positive = false;
+        }
+
+        int millisecond = gCalInstance.getDurationMillisecond(milliseconds);
+        int second = gCalInstance.getDurationSecond(milliseconds);
+        int minute = gCalInstance.getDurationMinute(milliseconds);
+        int hour = gCalInstance.getDurationHour(milliseconds);
+        int day = gCalInstance.getDurationDay(milliseconds);
+
+        if (!positive) {
+            ps.print("-");
+        }
+        try {
+            ps.print("P");
+            if (day != 0) {
+                WriteValueTools.writeInt(day, ps);
+                ps.print("D");
+            }
+            if (hour != 0 || minute != 0 || second != 0 || millisecond != 0) {
+                ps.print("T");
+            }
+            if (hour != 0) {
+                WriteValueTools.writeInt(hour, ps);
+                ps.print("H");
+            }
+            if (minute != 0) {
+                WriteValueTools.writeInt(minute, ps);
+                ps.print("M");
+            }
+            if (second != 0 || millisecond != 0) {
+                WriteValueTools.writeInt(second, ps);
+            }
+            if (millisecond > 0) {
+                ps.print(".");
+                WriteValueTools.writeInt(millisecond, ps);
+            }
+            if (second != 0 || millisecond != 0) {
+                ps.print("S");
+            }
+        } catch (IOException e) {
+            throw new AlgebricksException(e);
+        }
+    }
+
+    public static void printDurationString(byte[] b, int s, int l, PrintStream 
ps) throws AlgebricksException {
+        boolean positive = true;
+        int months = AInt32SerializerDeserializer.getInt(b, s + 1);
+        long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 5);
+
+        // set the negative flag. "||" is necessary in case that months field 
is not there (so it is 0)
+        if (months < 0 || milliseconds < 0) {
+            months *= -1;
+            milliseconds *= -1;
+            positive = false;
+        }
+
+        int month = gCalInstance.getDurationMonth(months);
+        int year = gCalInstance.getDurationYear(months);
+        int millisecond = gCalInstance.getDurationMillisecond(milliseconds);
+        int second = gCalInstance.getDurationSecond(milliseconds);
+        int minute = gCalInstance.getDurationMinute(milliseconds);
+        int hour = gCalInstance.getDurationHour(milliseconds);
+        int day = gCalInstance.getDurationDay(milliseconds);
+
+        if (!positive) {
+            ps.print("-");
+        }
+        try {
+            ps.print("P");
+            if (year != 0) {
+                WriteValueTools.writeInt(year, ps);
+                ps.print("Y");
+            }
+            if (month != 0) {
+                WriteValueTools.writeInt(month, ps);
+                ps.print("M");
+            }
+            if (day != 0) {
+                WriteValueTools.writeInt(day, ps);
+                ps.print("D");
+            }
+            if (hour != 0 || minute != 0 || second != 0 || millisecond != 0) {
+                ps.print("T");
+            }
+            if (hour != 0) {
+                WriteValueTools.writeInt(hour, ps);
+                ps.print("H");
+            }
+            if (minute != 0) {
+                WriteValueTools.writeInt(minute, ps);
+                ps.print("M");
+            }
+            if (second != 0 || millisecond != 0) {
+                WriteValueTools.writeInt(second, ps);
+            }
+            if (millisecond > 0) {
+                ps.print(".");
+                WriteValueTools.writeInt(millisecond, ps);
+            }
+            if (second != 0 || millisecond != 0) {
+                ps.print("S");
+            }
+        } catch (IOException e) {
+            throw new AlgebricksException(e);
+        }
+    }
+
+    public static void printTimeString(byte[] b, int s, int l, PrintStream ps) 
throws AlgebricksException {
+        int time = AInt32SerializerDeserializer.getInt(b, s + 1);
+
+        try {
+            gCalInstance.getExtendStringRepUntilField(time, 0, ps, 
GregorianCalendarSystem.Fields.HOUR, 
GregorianCalendarSystem.Fields.MILLISECOND, true);
+        } catch (IOException e) {
+            throw new AlgebricksException(e);
+        }
+    }
 
     public enum CASE {
         LOWER_CASE,
         UPPER_CASE,
     }
-
 
     public static void writeUTF8StringAsCSV(byte[] b, int s, int l, 
OutputStream os) throws IOException {
         int stringLength = UTF8StringPointable.getUTFLength(b, s);
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADatePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADatePrinter.java
index 8334e9d..b7da5f7 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADatePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADatePrinter.java
@@ -14,20 +14,15 @@
  */
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm;
 
-import java.io.IOException;
 import java.io.PrintStream;
 
-import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
-import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
-import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem.Fields;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
 
 public class ADatePrinter implements IPrinter {
 
-    private static long CHRONON_OF_DAY = 24 * 60 * 60 * 1000;
     public static final ADatePrinter INSTANCE = new ADatePrinter();
-    private static final GregorianCalendarSystem gCalInstance = 
GregorianCalendarSystem.getInstance();
 
     @Override
     public void init() {
@@ -37,17 +32,7 @@
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
         ps.print("date(\"");
-        printString(b, s, l, ps);
+        PrintTools.printDateString(b, s, l, ps);
         ps.print("\")");
-    }
-
-    public void printString(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        long chrononTime = AInt32SerializerDeserializer.getInt(b, s + 1) * 
CHRONON_OF_DAY;
-
-        try {
-            gCalInstance.getExtendStringRepUntilField(chrononTime, 0, ps, 
Fields.YEAR, Fields.DAY, false);
-        } catch (IOException e) {
-            throw new AlgebricksException(e);
-        }
     }
 }
\ No newline at end of file
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADateTimePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADateTimePrinter.java
index 1e5e5b3..63e3588 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADateTimePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADateTimePrinter.java
@@ -14,19 +14,15 @@
  */
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm;
 
-import java.io.IOException;
 import java.io.PrintStream;
 
-import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
-import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
-import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem.Fields;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
 
 public class ADateTimePrinter implements IPrinter {
 
     public static final ADateTimePrinter INSTANCE = new ADateTimePrinter();
-    private static final GregorianCalendarSystem gCalInstance = 
GregorianCalendarSystem.getInstance();
 
     @Override
     public void init() {
@@ -36,18 +32,7 @@
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
         ps.print("datetime(\"");
-        printString(b, s, l, ps);
+        PrintTools.printDateTimeString(b, s, l, ps);
         ps.print("\")");
-    }
-
-    public void printString(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        long chrononTime = AInt64SerializerDeserializer.getLong(b, s + 1);
-
-        try {
-            gCalInstance.getExtendStringRepUntilField(chrononTime, 0, ps, 
Fields.YEAR, Fields.MILLISECOND, true);
-        } catch (IOException e) {
-            throw new AlgebricksException(e);
-        }
-
     }
 }
\ No newline at end of file
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADayTimeDurationPrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADayTimeDurationPrinter.java
index b74ca19..481e8ea 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADayTimeDurationPrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADayTimeDurationPrinter.java
@@ -14,19 +14,16 @@
  */
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm;
 
-import java.io.IOException;
 import java.io.PrintStream;
 
-import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
-import edu.uci.ics.hyracks.algebricks.data.utils.WriteValueTools;
 
 public class ADayTimeDurationPrinter implements IPrinter {
 
     public static final ADayTimeDurationPrinter INSTANCE = new 
ADayTimeDurationPrinter();
-    private static final GregorianCalendarSystem gCalInstance = 
GregorianCalendarSystem.getInstance();
 
     @Override
     public void init() throws AlgebricksException {
@@ -35,56 +32,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        boolean positive = true;
-        long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 1);
-
-        // set the negative flag. "||" is necessary in case that months field 
is not there (so it is 0)
-        if (milliseconds < 0) {
-            milliseconds *= -1;
-            positive = false;
-        }
-
-        int millisecond = gCalInstance.getDurationMillisecond(milliseconds);
-        int second = gCalInstance.getDurationSecond(milliseconds);
-        int minute = gCalInstance.getDurationMinute(milliseconds);
-        int hour = gCalInstance.getDurationHour(milliseconds);
-        int day = gCalInstance.getDurationDay(milliseconds);
-
         ps.print("day-time-duration(\"");
-        if (!positive) {
-            ps.print("-");
-        }
-        try {
-            ps.print("P");
-            if (day != 0) {
-                WriteValueTools.writeInt(day, ps);
-                ps.print("D");
-            }
-            if (hour != 0 || minute != 0 || second != 0 || millisecond != 0) {
-                ps.print("T");
-            }
-            if (hour != 0) {
-                WriteValueTools.writeInt(hour, ps);
-                ps.print("H");
-            }
-            if (minute != 0) {
-                WriteValueTools.writeInt(minute, ps);
-                ps.print("M");
-            }
-            if (second != 0 || millisecond != 0) {
-                WriteValueTools.writeInt(second, ps);
-            }
-            if (millisecond > 0) {
-                ps.print(".");
-                WriteValueTools.writeInt(millisecond, ps);
-            }
-            if (second != 0 || millisecond != 0) {
-                ps.print("S");
-            }
-            ps.print("\")");
-        } catch (IOException e) {
-            throw new AlgebricksException(e);
-        }
+        PrintTools.printDayTimeDurationString(b, s, l, ps);
+        ps.print("\")");
     }
-
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADurationPrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADurationPrinter.java
index ce8a863..f52b3d6 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADurationPrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ADurationPrinter.java
@@ -14,15 +14,12 @@
  */
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm;
 
-import java.io.IOException;
 import java.io.PrintStream;
 
-import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
-import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
-import edu.uci.ics.hyracks.algebricks.data.utils.WriteValueTools;
 
 public class ADurationPrinter implements IPrinter {
 
@@ -36,67 +33,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        boolean positive = true;
-        int months = AInt32SerializerDeserializer.getInt(b, s + 1);
-        long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 5);
-
-        // set the negative flag. "||" is necessary in case that months field 
is not there (so it is 0)
-        if (months < 0 || milliseconds < 0) {
-            months *= -1;
-            milliseconds *= -1;
-            positive = false;
-        }
-
-        int month = gCalInstance.getDurationMonth(months);
-        int year = gCalInstance.getDurationYear(months);
-        int millisecond = gCalInstance.getDurationMillisecond(milliseconds);
-        int second = gCalInstance.getDurationSecond(milliseconds);
-        int minute = gCalInstance.getDurationMinute(milliseconds);
-        int hour = gCalInstance.getDurationHour(milliseconds);
-        int day = gCalInstance.getDurationDay(milliseconds);
-
         ps.print("duration(\"");
-        if (!positive) {
-            ps.print("-");
-        }
-        try {
-            ps.print("P");
-            if (year != 0) {
-                WriteValueTools.writeInt(year, ps);
-                ps.print("Y");
-            }
-            if (month != 0) {
-                WriteValueTools.writeInt(month, ps);
-                ps.print("M");
-            }
-            if (day != 0) {
-                WriteValueTools.writeInt(day, ps);
-                ps.print("D");
-            }
-            if (hour != 0 || minute != 0 || second != 0 || millisecond != 0) {
-                ps.print("T");
-            }
-            if (hour != 0) {
-                WriteValueTools.writeInt(hour, ps);
-                ps.print("H");
-            }
-            if (minute != 0) {
-                WriteValueTools.writeInt(minute, ps);
-                ps.print("M");
-            }
-            if (second != 0 || millisecond != 0) {
-                WriteValueTools.writeInt(second, ps);
-            }
-            if (millisecond > 0) {
-                ps.print(".");
-                WriteValueTools.writeInt(millisecond, ps);
-            }
-            if (second != 0 || millisecond != 0) {
-                ps.print("S");
-            }
-            ps.print("\")");
-        } catch (IOException e) {
-            throw new AlgebricksException(e);
-        }
+        PrintTools.printDurationString(b, s, l, ps);
+        ps.print("\")");
     }
 }
\ No newline at end of file
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
index 550d74f..e0821f3 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/AIntervalPrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt8SerializerDeserializer;
 import edu.uci.ics.asterix.om.types.ATypeTag;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -41,26 +42,21 @@
 
         short typetag = AInt8SerializerDeserializer.getByte(b, s + 1 + 8 * 2);
 
-        IPrinter timeInstancePrinter;
-
         if (typetag == ATypeTag.DATE.serialize()) {
             ps.print("-date(\"");
-            timeInstancePrinter = ADatePrinter.INSTANCE;
-            ((ADatePrinter) timeInstancePrinter).printString(b, s + 4, 4, ps);
+            PrintTools.printDateString(b, s + 4, 4, ps);
             ps.print(", ");
-            ((ADatePrinter) timeInstancePrinter).printString(b, s + 12, 4, ps);
+            PrintTools.printDateString(b, s + 12, 4, ps);
         } else if (typetag == ATypeTag.TIME.serialize()) {
             ps.print("-time(\"");
-            timeInstancePrinter = ATimePrinter.INSTANCE;
-            ((ATimePrinter) timeInstancePrinter).printString(b, s + 4, 4, ps);
+            PrintTools.printTimeString(b, s + 4, 4, ps);
             ps.print(", ");
-            ((ATimePrinter) timeInstancePrinter).printString(b, s + 12, 4, ps);
+            PrintTools.printTimeString(b, s + 12, 4, ps);
         } else if (typetag == ATypeTag.DATETIME.serialize()) {
             ps.print("-datetime(\"");
-            timeInstancePrinter = ADateTimePrinter.INSTANCE;
-            ((ADateTimePrinter) timeInstancePrinter).printString(b, s, 8, ps);
+            PrintTools.printDateTimeString(b, s, 8, ps);
             ps.print(", ");
-            ((ADateTimePrinter) timeInstancePrinter).printString(b, s + 8, 8, 
ps);
+            PrintTools.printDateTimeString(b, s + 8, 8, ps);
         } else {
             throw new AlgebricksException("Unsupport internal time types in 
interval: " + typetag);
         }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ATimePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ATimePrinter.java
index 09ba7d1..0c41f50 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ATimePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/adm/ATimePrinter.java
@@ -14,19 +14,16 @@
  */
 package edu.uci.ics.asterix.dataflow.data.nontagged.printers.adm;
 
-import java.io.IOException;
 import java.io.PrintStream;
 
-import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem;
-import edu.uci.ics.asterix.om.base.temporal.GregorianCalendarSystem.Fields;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
 
 public class ATimePrinter implements IPrinter {
 
     public static final ATimePrinter INSTANCE = new ATimePrinter();
-    private static final GregorianCalendarSystem gCalInstance = 
GregorianCalendarSystem.getInstance();
 
     @Override
     public void init() {
@@ -36,18 +33,7 @@
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
         ps.print("time(\"");
-        printString(b,s,l, ps);
+        PrintTools.printTimeString(b, s, l, ps);
         ps.print("\")");
     }
-
-    public void printString(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        int time = AInt32SerializerDeserializer.getInt(b, s + 1);
-
-        try {
-            gCalInstance.getExtendStringRepUntilField(time, 0, ps, 
Fields.HOUR, Fields.MILLISECOND, true);
-        } catch (IOException e) {
-            throw new AlgebricksException(e);
-        }
-    }
-
 }
\ No newline at end of file
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADatePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADatePrinter.java
index 7f0b4d0..459dddd 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADatePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADatePrinter.java
@@ -16,13 +16,13 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
 
 public class ADatePrinter implements IPrinter {
 
-    private static long CHRONON_OF_DAY = 24 * 60 * 60 * 1000;
     public static final ADatePrinter INSTANCE = new ADatePrinter();
 
     @Override
@@ -32,10 +32,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        long chrononTime = AInt32SerializerDeserializer.getInt(b, s + 1) * 
CHRONON_OF_DAY;
-
-        ps.print("{ \"date\": ");
-        ps.print(chrononTime);
-        ps.print("}");
+        ps.print("\"");
+        PrintTools.printDateString(b, s, l, ps);
+        ps.print("\"");
     }
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADateTimePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADateTimePrinter.java
index c017f8a..47e5977 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADateTimePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADateTimePrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
@@ -31,10 +32,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        long chrononTime = AInt64SerializerDeserializer.getLong(b, s + 1);
-
-        ps.print("{ \"datetime\": ");
-        ps.print(chrononTime);
-        ps.print("}");
+        ps.print("\"");
+        PrintTools.printDateTimeString(b, s, l, ps);
+        ps.print("\"");
     }
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADayTimeDurationPrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADayTimeDurationPrinter.java
index f710b42..ad1b251 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADayTimeDurationPrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADayTimeDurationPrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
@@ -31,11 +32,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 1);
-
-        ps.print("{ \"day-time-duration\": ");
-        ps.print(milliseconds);
-        ps.print("}");
+        ps.print("\"");
+        PrintTools.printDayTimeDurationString(b, s, l, ps);
+        ps.print("\")");
     }
-
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADurationPrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADurationPrinter.java
index 665ca4d..f563c7c 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADurationPrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ADurationPrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -32,14 +33,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        int months = AInt32SerializerDeserializer.getInt(b, s + 1);
-        long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 5);
-
-        ps.print("{ \"duration\": { ");
-        ps.print("\"months\": ");
-        ps.print(months);
-        ps.print(", \"millis\": ");
-        ps.print(milliseconds);
-        ps.print("} }");
+        ps.print("\"");
+        PrintTools.printDurationString(b, s, l, ps);
+        ps.print("\"");
     }
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ATimePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ATimePrinter.java
index 25fdd1e..8c2a56b 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ATimePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/cleanjson/ATimePrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
@@ -31,11 +32,9 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        int time = AInt32SerializerDeserializer.getInt(b, s + 1);
-
-        ps.print("{ \"time\": ");
-        ps.print(time);
-        ps.print("}");
+        ps.print("\"");
+        PrintTools.printTimeString(b, s, l, ps);
+        ps.print("\"");
     }
 
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java
index 6d69c57..7dbe5f8 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADatePrinter.java
@@ -16,13 +16,13 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
 
 public class ADatePrinter implements IPrinter {
 
-    private static long CHRONON_OF_DAY = 24 * 60 * 60 * 1000;
     public static final ADatePrinter INSTANCE = new ADatePrinter();
 
     @Override
@@ -32,10 +32,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        long chrononTime = AInt32SerializerDeserializer.getInt(b, s + 1) * 
CHRONON_OF_DAY;
-
-        ps.print("{ \"date\": ");
-        ps.print(chrononTime);
-        ps.print("}");
+        ps.print("{ \"date\": \"");
+        PrintTools.printDateString(b, s, l, ps);
+        ps.print("\" }");
     }
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java
index d13286a..0bd4452 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADateTimePrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
@@ -31,10 +32,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        long chrononTime = AInt64SerializerDeserializer.getLong(b, s + 1);
-
-        ps.print("{ \"datetime\": ");
-        ps.print(chrononTime);
-        ps.print("}");
+        ps.print("{ \"datetime\": \"");
+        PrintTools.printDateTimeString(b, s, l, ps);
+        ps.print("\" }");
     }
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
index bd5c69c..20aff1c 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADayTimeDurationPrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
@@ -31,10 +32,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 1);
-
         ps.print("{ \"day-time-duration\": ");
-        ps.print(milliseconds);
+        PrintTools.printDayTimeDurationString(b, s, l, ps);
         ps.print("}");
     }
 
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
index 58e83ec..a329bd2 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ADurationPrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt64SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -32,14 +33,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        int months = AInt32SerializerDeserializer.getInt(b, s + 1);
-        long milliseconds = AInt64SerializerDeserializer.getLong(b, s + 5);
-
-        ps.print("{ \"duration\": { ");
-        ps.print("\"months\": ");
-        ps.print(months);
-        ps.print(", \"millis\": ");
-        ps.print(milliseconds);
-        ps.print("} }");
+        ps.print("{ \"duration\": \"");
+        PrintTools.printDurationString(b, s, l, ps);
+        ps.print("\" }");
     }
 }
diff --git 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java
 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java
index 7f34834..a1d0a2d 100644
--- 
a/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java
+++ 
b/asterix-om/src/main/java/edu/uci/ics/asterix/dataflow/data/nontagged/printers/json/ATimePrinter.java
@@ -16,6 +16,7 @@
 
 import java.io.PrintStream;
 
+import edu.uci.ics.asterix.dataflow.data.nontagged.printers.PrintTools;
 import 
edu.uci.ics.asterix.dataflow.data.nontagged.serde.AInt32SerializerDeserializer;
 import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
 import edu.uci.ics.hyracks.algebricks.data.IPrinter;
@@ -31,11 +32,8 @@
 
     @Override
     public void print(byte[] b, int s, int l, PrintStream ps) throws 
AlgebricksException {
-        int time = AInt32SerializerDeserializer.getInt(b, s + 1);
-
-        ps.print("{ \"time\": ");
-        ps.print(time);
-        ps.print("}");
+        ps.print("{ \"time\": \"");
+        PrintTools.printTimeString(b, s, l, ps);
+        ps.print("\" }");
     }
-
 }

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/363
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5c37d3b5aad7f286eba1cb8cb5f05ad456a6521e
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Chris Hillery <[email protected]>

Reply via email to