private void FormOrg_FormClosed(object sender, FormClosedEventArgs e) { CNodoEntidad entidadAux, entCopia; CArchivo aO, aD; string nameFileO, nameFileN; int despCE, tipoD, tamCE, tamBloq, despCB, tipoCB, tamCB; ; despCE = tipoD = tamCE = tamBloq = despCB = tipoCB = tamCB = 0; aO = getArchivo(); aD = new CArchivo("Copia");//Se crea el nuevo archivo y se almacena en un directorio temporal nameFileO = aO.getNameFile();//Se obtienen la ruta de la organizacion de trabajo nameFileN = aD.getNameFile();//Se Obtiene la ruta del donde se hara el mantenimiento creaCopia(aO, aD);//Se caraga el diccionario de datos que utilizo en la organiacion aO.AbrirArchivo();//Abrir los flujos de archivos para operar en ellos aD.AbrirArchivo(); entidadAux = aO.getListaEntidad().getCabListEnt(); entCopia = aD.getListaEntidad().getCabListEnt(); while (entidadAux != null)//Se visitan todas las entidades de la organizacion { if (entidadAux.getApCabDatos() != -1) { DameCE(entidadAux, ref despCE, ref tipoD, ref tamCE, ref tamBloq, ref despCB, ref tipoCB, ref tamCB, null); switch(getTipoOrg()) { case 1://Mantenimiento en Organizacion Secuencial MantenimientoSec(aO, aD, entidadAux, entCopia, tamBloq); break; case 2://Manteniemito en Organizacion Secuencial Indexada MantenimientoSecInd(aO, aD, entidadAux, entCopia, tamBloq); break; case 3://Mantenimiento en Arboles B+ MantenimientoArbolBplus(aO, aD, entidadAux, entCopia, tamBloque); break; case 4://Mantenimiento en Hash Estática MantenimientoHashEstatica(aO, aD, entidadAux, entCopia, tamBloque); break; case 5://Mantenimiento en hash Dinámica MantenimientoHashDinamica(aO, aD, entidadAux, entCopia, tamBloque); break; } } entidadAux = entidadAux.getSigEnt(); entCopia = entCopia.getSigEnt(); } aO.CerrarArchivo(); aD.CerrarArchivo(); File.Delete(nameFileO);//Se elimina la organizacion a la que se le hizo mantenimiento File.Move(nameFileN,nameFileO);//Se mueve el archivo creado a la ruta de la orgnizacion que fue mantenida //Se conserva el mismo nombre de archivo }
private void mArchAbrir_Click(object sender, EventArgs e) { OpenFileDialog dlgAbrir = new OpenFileDialog(); string name; dlgAbrir.Filter = "Archivos |*.dic"; if (dlgAbrir.ShowDialog() == DialogResult.OK) { name = dlgAbrir.FileName; archivo = new CArchivo(name); btAddEntidad.Enabled = true; btDeleteEnt.Enabled = false; btEditarEntidad.Enabled = false; btAgregarAtri.Enabled = false; btEditaAtributo.Enabled = false; btElimarAtri.Enabled = false; TablaDeAtributos.Rows.Clear(); tablaEntidades.Rows.Clear(); if (archivo.getListaEntidad().getCabListEnt() != null) { btDeleteEnt.Enabled = true; btEditarEntidad.Enabled = true; imprimeEntidades(); } } }
/**Crea un nuevo archivo a partir de alguna organiacion de archivos *En el archivo destino, carga todo el diccionario de datos, sin datos*/ public void creaCopia(CArchivo aO, CArchivo aC) { CNodoAtributo auxAtri, nuevo = null; CNodoEntidad auxEnt, auxEntRel; auxEnt = aO.getListaEntidad().getCabListEnt(); //Copiar las entidades while (auxEnt != null) { aC.AltaEntidad(new CNodoEntidad(auxEnt.getNombre())); auxEnt = auxEnt.getSigEnt(); } //Copiar los atributos y sus relaciones de clave foranea auxEnt = aO.getListaEntidad().getCabListEnt(); while (auxEnt != null) { auxAtri = auxEnt.getCabListAtri(); while (auxAtri != null) { nuevo = new CNodoAtributo(); nuevo.setClavePrimaria(auxAtri.getClave()); nuevo.setNombre(auxAtri.getNombre()); nuevo.setTipo(auxAtri.getTipo()); nuevo.setTamaño(auxAtri.getTamaño()); nuevo.setEntRel(null); if (auxAtri.getEntRel() != null) { string entRel = auxAtri.getEntRel().getNombre(); auxEntRel = aC.getListaEntidad().getCabListEnt(); for (; auxEntRel != null; auxEntRel = auxEntRel.getSigEnt()) if (auxEntRel.getNombre().CompareTo(entRel) == 0) break; nuevo.setEntRel(auxEntRel); nuevo.setApEntRel(auxEntRel.getDir()); } aC.AltaAtributo(nuevo, auxEnt.getNombre()); auxAtri = auxAtri.getSigAtri(); } auxEnt = auxEnt.getSigEnt(); } }