Exemple #1
0
        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();
               }
            }
        }
Exemple #3
0
        /**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();
            }
        }