Quiero obtener como producto un Proyecto en Eclipse, en lenguaje java, que pueda continuar por mi cuenta.
Se puede pensar como un proyecto universitario, aunque es un proyecto personal.
Debe presentar información de un archivo binario que se pase como parámetro. Y también debe permitir aplicar Transformadas a dicho archivo, generando un nuevo archivo.
Siempre que se ejecute el programa, toma un archivo (por ejemplo
archivo1000.dat) y genera información en un archivo plano (
archivo1000.txt) y genera un nuevo archivo transformado (
archivo1000.out).
En la ventana principal (no creo que necesite mas de una), se tiene que poder seleccionar/cargar datos de entrada (Path, nombre de archivo, extensión del archivo transformado, extensión del archivo de información). También puede haber parámetros en el código, dependiendo de que se trate.
Una opción debe permitir sacar información del archivo, a un archivo plano. Por ejemplo: Nombre del archivo, tamaño, cantidad de Bytes y resultados que provengan de métodos que busquen determinados patrones o información a definir en el futuro. Es decir, la clase que genere la información debe permitir agregar fácilmente métodos que obtengan información del archivo y se publique en el archivo plano de resultado.
Las transformadas, algunas las puedo definir, y otras las defineré a futuro. Por eso tiene que estar bien encapsulado en clases que permitan agregar métodos aprovechando lo realizado.
Las transformadas usaran la información del archivo de entrada para generar el archivo de salida. Para eso, hay que crear primitivas (métodos primitivos) que permitan obtener un determinado Byte, un determinado Bit, o "todos los 0101" por ejemplo. Y Métodos que tengan las transformadas a aplicar.
Me gustaría que las transformadas se puedan expresar en algún lenguaje mas simple que Java, de manera de concentrarme mas en las transformadas mas que en la programacion java. Y que usen primitivas como las mencionadas como base. Por ejemplo: Que tome los primeros 2 Bytes y que haga un XOR con un determinado valor (como si fuese un encriptador), y realice la misma función con los siguientes 2 Bytes y así sucesivamente hasta finalizar.
Si una transformada no hace "nada", se obtendria a la salida un archivo igual al de entrada.
Uno de los parámetros dinámicos es el tamaño de Bloque. Por ejemplo: 1000 Bytes. Que permitirá aplicar diversas transformadas por Bloque.
El tamaño de archivo máximo a procesar seria deseable que pueda ser de varios MegaBytes.
También me gustaría considerar la posibilidad de que al nivel de transformada se pueda definir una que tome el archivo de salida y lo vuelva a meter en la entrada (recursividad) aplicando la misma u otra transformada. Hay que pensar bien la condición de parada, por supuesto.
Yo ya hice el proyecto, y adjunto una ventana de ejemplo. Pero me lleva mucho tiempo definir cada transformada, porque no hice las funciones basicas reutilizables. Asi que la clave es definir de forma escalable las transformadas y sus primitivas.
Plazo de Entrega: No definido