Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Leer datos BAK.KQ #1

Open
BrunoCodex opened this issue Mar 16, 2015 · 6 comments
Open

Leer datos BAK.KQ #1

BrunoCodex opened this issue Mar 16, 2015 · 6 comments

Comments

@BrunoCodex
Copy link

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
Copy link
Member

champo commented Mar 16, 2015

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
Copy link
Author

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
Copy link
Member

champo commented Mar 17, 2015

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
Copy link
Author

Nada compañero :(

@champo
Copy link
Member

champo commented Mar 17, 2015

¿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
Copy link
Author

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants