* Listo el problema de tipo 2 .. me faltaba otro if ... el problema se daba cuando el ultimo parametro era el tipo 2
es decir :
emufs_view -f facturas.xml 2
emufs_view -f facturas.xml 2 -a articulos.xml 2
emufs_view -a articulos.xml 2 -f facturas.xml 2
GUI vuelve a compilar. Ahora las estadisticas respetan el enunciado pero se ven
bastante mas confusas :(
Tal vez hay que agregar mas items (todos los que estan en la estructura
estadisticas ademas de lo que piden en el enunciado, para que se entienda bien).
Alan Kennedy [Sun, 18 Apr 2004 18:25:22 +0000 (18:25 +0000)]
Cambios en la estructura de estadisticas discutidos en la lista. POR FAVOR chequeen sus tipos (tipo1 y tipo3) para ver que no me haya mandado cagada y habria que hacer una mini pruebita de stats con calculadora en mano. Yo la hize con mi tipo2, si estan muy a full, me ocupo de hacerla con los otros dos, pero avisen
comiteo esto porque no se si estoy yendo por el buen camino con la doc, me puse a comentar las funciones principales pero eme di cuenta que es un poco redundante con lo que pueda llegar a salir del doxygen, aceptio todo tipo de criticas
* BUGFIX : procesar_guardar_factura grababa mal
* BUGFIX : leer_items no leia si el tipo de archivo era variable
* Completo : Completo Ver Registros para factura para cualquier tipo de archivo.
Se termina el fatidico tipo1.
Hay varios cambios:
- Vuela la funcion grabar_registro_con_id(), no tenia sentido porque, como en
modificar(), si borro un registro y lo grabo inmediatamente conserva el id.
- grabar_registro() es ahora mas inteligente, permitiendo a compactar() ser mas
estupida.
Basicamente ahora grabar_registro() maneja mejor los registros multibloque,
usando la nueva funcion fsc_buscar_n_lugares(). Ahora si hay un hueco en el
medio del archivo con N bloques libres (siendo N la cantidad de bloques que
necesita mi registro), lo aprovecha e inserta ahi.
- compactar() se limita entonces al siguiente (y estupido) algoritmo:
Por cada registro en el archivo: 1- Lee el registro.
2- Borra el registro.
3- Graba registro.
Con la inteligencia de grabar_registro() es todo lo que necesito.
Con las pruebas simples todo parece andar pipon.
* Se agrega generador de facturas. Primero hay que correr el generador de articulos
que deja un archivo txt con datos que se van a usar. Las notas son sacadas
de un archivo llamado nota.txt.
Faltan un par de campos. Los subo en 5 minutos.
Los datos cumplen con la relacion de % pedidos en el enunciado.
Alan Kennedy [Sat, 17 Apr 2004 18:48:12 +0000 (18:48 +0000)]
Ahora si, recompactacion finalizada. Se me habia cagado un file de anoche para hoy cuando hize un svn up y estaba mal la insersion de GAPS (no la hacia ordenada), ergo mi recompactar se volvia loco
Luca, leer_registro de tipo1 anda mal cuando tengo mas de un bloque en un registro!
Creo que te estas olvidando de saltar el header de los registros siguientes.
si hubiera una materia que se llame boludos atomicos a mi me la dan por aprobada sin cursar.... me faltaba generar el nombre del archivo, por eso no truncaba
* Agrego programa para generar archivo de articulos.
- Para hacerlo mas lindo, hay que agregar mas datos en los
diccionario ;-) ...
marcas.txt : Marcas de productos
productos.txt : Nombre de productos
presentacion.txt : formas en que pueden venir productos.
Agreguen a gusto!!. Tengan en cuenta que la descripcion se arma
con un producto y con una marca. No se preocupen por que queden
cosas poco logicas como (Yerba mate Coca Cola), porque no importa.
* Pongo un XML de 2000 articulos como ejemplo.
* Se agregan compactar facturas y notas (notas no estoy seguro de tener
que ponerlo, ya que compactar notas puede modificar los IDs y se cagan
las facturas. Ya lo pregunte. Veremos!)
* Termino el manejo de parametros desde la linea de comandos. Falta
pulir la verificacion de cuando uso emufs_abrir que realmente
abra algo que existe.
gui -h o --help para ver la ayuda.
GUI 99% terminada, faltan 5 o 6 detalles. Me pongo a laburar en el generador
de articulos y facturas que se necesita para el informe.
* Se realiza una limpieza en gui.c. Ahora hay una unica rutina de
manejo de menu, en lugar de 1 para cada vez que la necesitaba :-)
* Se crean 2 lindas macros para simplificar la creacion del menu.
* Se pone todo al dia.
Primer intento de compactar(). Parece andar bien lo que esta implementado. Falta
truncar el archivo a los bloques realmente usados y manejar los registros
multibloque.
Para esto se crea grabar_registro_con_id() que es igual a grabar_registro() pero
se le puede pasar un id arbitrario (para conservar el id). grabar_registro() es
ahora un wrapper a grabar_registro_con_id().
Tambien se hace una funcion para obtener la longitud del archivo, aunque al
final la usa solo leer_estadisticas().
Impelentacion de compactar terminada pero NO ESTA TESTEADA del todo..
hice solo un par de pruebas.
En esta misma funcion tuve un quilombo con un fclose, que se me hace que es porque el archivo ya estaba cerrado, asi que lo saque y le dejo la tarea al sistema operativo :-P
me voy a poner a testear lo mas que pueda para despues empezar a documentar.
- Se agrega leer_estadisticas().
- Se agrega chequeo en emufs_crear() para que no se pueda crear un archivo con
bloque mas chico que 2 * sizeof(cabecera de registro).
* BUGFIX : cuando se recreaba con otro formato el archivo de
articulos faltaba cambiar el campo nombre para que quede
consistente. Ahora se puede pasar de un tipo a otro y a otro
tantas veces que se quiera.
* BUGFIX : EN idx_get faltaba un sizeof(EMUFS_REG_ID) (aunque el valgrind se sigue quejando)
* tipo_leer_raw retocada.
* Algunas cosa en GUI que no recuerdo
Se implementa borrar_registro en tipo1. Soporta registros mas grandes que el
bloque. Lo unico que falta es alinear a izquiera los registros del bloque
modificado (si hubiera registros a la derecha del registro borrado).
Hay algo en leer que falla y ademas hay un if ( cant_bloques == 0 ) que no me gusta, porque tendria que ser 1, pero con cero anda mejor ... ademas con bloques de 54 para abajo se cuelga, ni idea por que.. busco..
Bueno, por lo pronto parece que anda todo bien...
Faltaria dedicarle un tiempo de testing pero lo probe en la gui y se ve bastante cariñoso.
Espero que no falle.
Puede ser que queden cosas raras en el archivo de espacios libres. Pero en los otros queda todo pipon.