package ru.upos;

import javax.xml.bind.DatatypeConverter;
import java.io.ByteArrayOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Различные утилиты для работы с терминалом UPOS 1.0
 */
public class UposUtils {

    private static final String logDateTimeFormat = "[HH:mm:ss,SSS]";

    public static String getDataHex(String header, byte[] data) {
        return header + ": " + DatatypeConverter.printHexBinary(data);
    }

    public static String getData(String header, byte[] data) {
        return header + ": " + new String(data);
    }

    public static String getTimeDataHex(String header, byte[] data) {
        SimpleDateFormat format = new SimpleDateFormat(logDateTimeFormat);
        return format.format(new Date()) + " " + getDataHex(header, data);
    }

    public static byte[] convertLongMsb(long value) {
        ByteArrayOutputStream buf = new ByteArrayOutputStream();

        for (int i = 0; i < 4; ++i) {
            buf.write((int)((value >> (i * 8)) & 0xFF));
        }
        return buf.toByteArray();
    }

    public static long convertMsbLong(byte[] buf) {
        long value = 0;

        for (int i = 0; i < 4; ++i) {
            value += ((buf[i] & 0xFF) << (i * 8));
        }
        return value;
    }
}
