Monits / Anviz-Protocol

A (limited) Java implementation of the Anviz TCP communication protocol
8 stars 3 forks source link

Leer datos BAK.KQ #1

Open BrunoCodex opened 9 years ago

BrunoCodex commented 9 years ago

Buenas tardes muy buen aporte el de ustedes.

Tengo una consulta, como se haría para leer un archivo BAK.KQ con que clase y con que metodo.

he probado lo siguiente:

ThreeByteCodec tbc = new ThreeByteCodec(); tbc.decode("¿Que se coloca?", "¿Que se coloca?");

Porfa necesito su ayuda.

champo commented 9 years ago

Esta libreria es para comunicarse directamente por red, no se si podria adaptarse para usar ese formato. Si necesitas leer un archivo, hay un par de librerias node.js (por ejemplo: https://www.npmjs.com/package/anviz-backup2xls) que podrias usar.

BrunoCodex commented 9 years ago

Disculpa que sea insistente en verdad no quiero molestar, si e revisado las librerias en Node.js pero necesito hacerlo con java, me podrias ayudar?

champo commented 9 years ago

No lo probe, pero algo asi deberia ir:


public void parseFile() {

    FileReader fileStream = new FileReader("BAK.KQ");
    PackerInputStream packerStream = new PackerInputStream(fileStream);
    int bytes = new ThreeByteCodec().decode(packerStream, null);
    Codec<AttendanceRecord> codec = CodecFactory.get(AttendanceRecord.class);

    int records = bytes / 14;

    List<Action> results = new ArrayList<Action>();
    for (int i = 0; i < records; i++) {
        AttendanceRecord record = codec.decode(packerStream, null);

        DateTime date = buildDateTime(record.getSeconds());
        if (record.getType() == 0x00) {
            results.add(new CheckIn(record.getUserId(), date));
        } else {
            results.add(new CheckOut(record.getUserId(), date));
        }
    }

    // results tiene todo levantado
}

private DateTime buildDateTime(long seconds) {
    // The documentation says that dates are given as seconds since year 2000
    // However, experience shows that it's actually from the second day of the year 2000
    return new DateTime(2000, 01, 02, 00, 00, 00, timezone).plusSeconds((int) seconds);
}
BrunoCodex commented 9 years ago

Nada compañero :(

champo commented 9 years ago

¿Que significa nada? No compila, tira una exception, el array results termina vacio? Tampoco estoy seguro de si ese el formato correcto. Lo saque asi como esta de la libreria node que te pase. Sin saber el formato ni que pasa cuando probas eso no puedo hacer nada.

BrunoCodex commented 9 years ago
fileStream = new FileReader("BAK.KQ");
PackerInputStream packerStream = new PackerInputStream(fileStream);

Recién inicia y me lanza una excepción:

Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: Not supported yet. at com.monits.anviz.net.PackerInputStream.(PackerInputStream.java:38) at frm_lector.jButton3ActionPerformed(frm_lector.java:198) at frm_lector.access$200(frm_lector.java:40)