Beispiel #1
0
 //Método para inicializar la instancia de secundario
 public void CreaSec(char t, BinaryWriter bw, long tam, int LD, string atributo)
 {
     sec          = new Secundario(t, atributo);
     sec.TamPrin1 = tam;
     secundarios.Add(sec);
     sec.CreaPrincipal(bw, LD);
 }
Beispiel #2
0
 //Llama al form que mostrará la información de los registros de una entidad
 private void registroToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (ListNombres.Text == "" || ListNombres.Text == " ")
     {
         MessageBox.Show("Selecciona la entidad");
     }
     else
     {
         ModEnt.Enabled = ModifAtrib.Enabled = false;
         //Busca la entidad seleccionada
         EncuentraEntidad();
         Registros reg = new Registros(); //Se crea el nuevo form
         reg.EntAux1 = EntReg;            //Se guarda la entidad que se selecionó
         reg.CreaRegistro(reg.EntAux1);   //Llama al método que crea el archivo
         //reg.CreaColumnas();         //Crea las columnas dependiendo de los atributos que tiene la entidad
         reg.ShowDialog();
         //Cambia la dirección de datos
         if (reg.LRegistros1.Count > 0)
         {
             EntReg.DD = reg.LRegistros1[0].DR;
             for (int i = 0; i < EntReg.LAtributo1.Count; i++)
             {
                 Atributo a = EntReg.LAtributo1[i];
                 //Checa índice primario
                 if (a.TI == 2)
                 {
                     a.DI = reg.Ind1.TamPrinPrim1;
                 }
                 if (a.TI == 3)
                 {
                     //asignar la dirección de bloque principal
                     for (int j = 0; j < reg.Ind1.Secundarios.Count; j++)
                     {
                         Secundario s = reg.Ind1.Secundarios[j];
                         if (a.NA == s.NombreAtrib1)
                         {
                             a.DI = s.TamPrin1;
                         }
                     }
                 }
                 if (a.TI == 4)
                 {
                     a.DI = reg.CabAr;
                 }
             }
             //AgregaAtribDG();
             //AgregaFila();
             Actualiza();
         }
     }
 }
Beispiel #3
0
 //Método que lee agrega secundarios a la lista de secundarios
 public void AgregaSec(char t, long tam, int LD, string atributo)
 { // t es el tipo de dato y atributo es el nombre del atributo
     sec          = new Secundario(t, atributo);
     sec.TamPrin1 = tam;
     secundarios.Add(sec);
 }
        /*Asignar en memoria datos del indice secundario*/ //checadoooooo
        public void asignarMemoriaIndice2()
        {
            bool   ban  = true;
            bool   ban2 = true;
            object o    = new object();
            long   data = 0;
            long   dir  = 0;
            long   temp;

            Fichero      = new FileStream(nombreArchivoIDX, FileMode.Open, FileAccess.Read);
            binaryReader = new BinaryReader(Fichero);
            binaryReader.BaseStream.Seek(entidades[pos].atributos[indice2].direccion_Indice, SeekOrigin.Begin);

            while (ban)
            {
                switch (entidades[pos].atributos[indice2].tipo_Dato)
                {
                case 'E':
                    o = binaryReader.ReadInt32();
                    break;

                case 'C':
                    char[] c = binaryReader.ReadChars(entidades[pos].atributos[indice2].longitud_Tipo);
                    o = new string(c);
                    break;
                }
                Secundario s1 = new Secundario(o);
                entidades[pos].secundarios.Add(s1);
                data = binaryReader.ReadInt64();
                entidades[pos].secundarios.Last().listSecD.Last().getClave     = o;
                entidades[pos].secundarios.Last().listSecD.Last().getDireccion = data;
                entidades[pos].secundarios.Last().getIteracion += 1;

                temp = Fichero.Position;
                if (data != -1)
                {
                    binaryReader.BaseStream.Seek(data, SeekOrigin.Begin);

                    while (ban2)
                    {
                        dir = binaryReader.ReadInt64();
                        entidades[pos].secundarios.Last().listSecD.Last().agregarBloquesDirecciones(-1);
                        entidades[pos].secundarios.Last().listSecD.Last().listSecDirs.Last().listIndiceSecundario.Last().getDireccion = dir;
                        entidades[pos].secundarios.Last().listSecD.Last().listSecDirs.Last().getIteracion += 1;

                        for (int i = 1; i < numeroDeIteracion(8); ++i)
                        {
                            dir = binaryReader.ReadInt64();
                            entidades[pos].secundarios.Last().listSecD.Last().listSecDirs.Last().addIndice(-1);
                            entidades[pos].secundarios.Last().listSecD.Last().listSecDirs.Last().listIndiceSecundario.Last().getDireccion = dir;
                            if (dir != -1)
                            {
                                entidades[pos].secundarios.Last().listSecD.Last().listSecDirs.Last().getIteracion += 1;
                            }
                        }

                        dir = binaryReader.ReadInt64();
                        entidades[pos].secundarios.Last().listSecD.Last().listSecDirs.Last().getApSiguiente = dir;
                        if (dir == -1)
                        {
                            ban2 = false;
                        }
                        else
                        {
                            binaryReader.BaseStream.Seek(dir, SeekOrigin.Begin);
                        }
                    }
                }
                binaryReader.BaseStream.Seek(temp, SeekOrigin.Begin);
                for (int i = 1; i < numeroDeIteracion(entidades[pos].atributos[indice2].longitud_Tipo); ++i)
                {
                    switch (entidades[pos].atributos[indice2].tipo_Dato)
                    {
                    case 'E':
                        o = binaryReader.ReadInt32();
                        break;

                    case 'C':
                        char[] c = binaryReader.ReadChars(entidades[pos].atributos[indice2].longitud_Tipo);
                        o = new string(c);
                        break;
                    }
                    entidades[pos].secundarios.Last().AddIndice(o);
                    data = binaryReader.ReadInt64();
                    entidades[pos].secundarios.Last().listSecD.Last().getClave     = o;
                    entidades[pos].secundarios.Last().listSecD.Last().getDireccion = data;

                    if (data != -1)
                    {
                        entidades[pos].secundarios.Last().getIteracion += 1;
                    }
                }
                //binaryReader.BaseStream.Seek(temp, SeekOrigin.Begin);
                data = binaryReader.ReadInt64();
                entidades[pos].secundarios.Last().getApuntadorSig = data;

                if (data == -1)
                {
                    ban = false;
                }
                else
                {
                    binaryReader.BaseStream.Seek(data, SeekOrigin.Begin);
                }
            }
            Fichero.Close();

            /*MessageBox.Show("El siguiente lugar donde se escribira sera en la posicion");
             * MessageBox.Show(entidades[pos].secundarios.Last().GetCajon.ToString());*/


            //Leer todas la direcciones por separado

            for (int i = 1; i < entidades[pos].secundarios.Last().getIteracion; ++i)
            {
                Fichero      = new FileStream(nombreArchivoIDX, FileMode.Open, FileAccess.Read);
                binaryReader = new BinaryReader(Fichero);
                binaryReader.BaseStream.Seek(entidades[pos].secundarios.Last().listSecD[i].getDireccion, SeekOrigin.Begin);

                for (int j = 0; j < numeroDeIteracion(8); ++j)
                {
                    dir = binaryReader.ReadInt64();
                    if (j == 0)
                    {
                        entidades[pos].secundarios.Last().listSecD[i].agregarBloquesDirecciones(-1);
                        entidades[pos].secundarios.Last().listSecD[i].listSecDirs.Last().listIndiceSecundario.Last().getDireccion = dir;
                        entidades[pos].secundarios.Last().listSecD[i].listSecDirs.Last().getIteracion += 1;
                    }
                    else
                    {
                        entidades[pos].secundarios.Last().listSecD[i].listSecDirs.Last().addIndice(-1);
                        entidades[pos].secundarios.Last().listSecD[i].listSecDirs.Last().listIndiceSecundario.Last().getDireccion = dir;
                        if (dir != -1)
                        {
                            entidades[pos].secundarios.Last().listSecD[i].listSecDirs.Last().getIteracion += 1;
                        }
                    }
                }
                dir = binaryReader.ReadInt64();
                Fichero.Close();
            }
        }
Beispiel #5
0
        /************************AQUI EMPIEZA HASH*******************************************/

        /*Asignar memoria al indice hash*/
        public void asignarMemoriaIndiceHash()
        {
            object o     = new object();
            long   data  = 0;
            long   dir   = 0;
            int    clave = 0;
            long   temp;

            Fichero      = new FileStream(nombreArchivoIDX, FileMode.Open, FileAccess.Read);
            binaryReader = new BinaryReader(Fichero);
            binaryReader.BaseStream.Seek(entidades[pos].atributos[indice2].direccion_Indice, SeekOrigin.Begin);

            ///Creo los primeros 7 cajones
            Secundario s1 = new Secundario(-1);

            entidades[pos].hash.Add(s1);
            for (int i = 1; i < 7; ++i)
            {
                entidades[pos].hash.Last().AddIndice(-1);
            }

            ///Leo las 7 direcciones
            for (int i = 0; i < 7; ++i)
            {
                data = binaryReader.ReadInt64();
                entidades[pos].hash.Last().listSecD[i].getDireccion = data;
            }
            Fichero.Close();

            ///Despues leemos los bloques de clave y direccion recorriendo el diccionario
            for (int i = 0; i < 7; i++)
            {
                if (entidades[pos].hash.Last().listSecD[i].getDireccion != -1)
                {
                    Fichero      = new FileStream(nombreArchivoIDX, FileMode.Open, FileAccess.Read);
                    binaryReader = new BinaryReader(Fichero);
                    binaryReader.BaseStream.Seek(entidades[pos].hash.Last().listSecD[i].getDireccion, SeekOrigin.Begin);

                    int cant = numeroDeIteracion(entidades[pos].atributos[indice2].longitud_Tipo);
                    entidades[pos].hash.Last().listSecD[i].agregarBloquesDirecciones(-1);
                    for (int j = 1; j < cant; j++)
                    {
                        entidades[pos].hash.Last().listSecD[i].listSecDirs.Last().addIndice(-1);
                    }

                    for (int j = 0; j < cant; j++)
                    {
                        clave = binaryReader.ReadInt32();
                        entidades[pos].hash.Last().listSecD[i].listSecDirs.Last().listIndiceSecundario[j].getClave = clave;
                        data = binaryReader.ReadInt64();
                        entidades[pos].hash.Last().listSecD[i].listSecDirs.Last().listIndiceSecundario[j].getDireccion = data;
                        if (data != -1)
                        {
                            entidades[pos].hash.Last().listSecD[i].listSecDirs.Last().getIteracion += 1;
                        }
                    }
                    data = binaryReader.ReadInt64();
                    entidades[pos].hash.Last().listSecD[i].listSecDirs.Last().getApSiguiente = data;
                    Fichero.Close();
                }
            }
        }