blob: 1c4e3022e845d81019e8a6bef645a64555baaced [file] [log] [blame]
package edu.uci.ics.asterix.dataflow.data.nontagged.printers;
import java.io.IOException;
import java.io.PrintStream;
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;
import edu.uci.ics.hyracks.algebricks.data.utils.WriteValueTools;
public class ADurationPrinter implements IPrinter {
private static final long serialVersionUID = 1L;
public static final ADurationPrinter INSTANCE = new ADurationPrinter();
@Override
public void init() {
}
@Override
public void print(byte[] b, int s, int l, PrintStream ps) throws AlgebricksException {
boolean positive = true;
int months = AInt32SerializerDeserializer.getInt(b, s + 1);
int seconds = AInt32SerializerDeserializer.getInt(b, s + 5);
if (months < 0 || seconds < 0) {
months *= -1;
seconds *= -1;
positive = false;
}
int month = (int) (months % 12);
int year = (int) (months / 12);
int second = (int) (seconds % 60);
int minute = (int) (seconds % 3600 / 60);
int hour = (int) (seconds % (86400) / 3600);
int day = (int) (seconds / (86400));
ps.print("duration(\"");
if (!positive) {
ps.print("-");
}
try {
ps.print("D");
WriteValueTools.writeInt(year, ps);
ps.print("Y");
WriteValueTools.writeInt(month, ps);
ps.print("M");
WriteValueTools.writeInt(day, ps);
ps.print("DT");
WriteValueTools.writeInt(hour, ps);
ps.print("H");
WriteValueTools.writeInt(minute, ps);
ps.print("M");
WriteValueTools.writeInt(second, ps);
ps.print("S\")");
} catch (IOException e) {
throw new AlgebricksException(e);
}
}
}