示例#1
0
 //Llama al método que se encarga de leer el bloque principal
 public void Abrir(char t, BinaryReader br)
 {
     if (TipoIndice == 1)
     {
         prim = new Primario(t);
         prim.LeePrincipal(br);
     }
 }
示例#2
0
        public VistaIndice(Entidad e)
        {
            InitializeComponent();
            entidad = e;
            p       = e.Prim;
            s       = e.Sec;
            foreach (var a in e.Atrib)
            {
                switch (a.TipoIndice)
                {
                case 2:
                    indice = a.Ind;
                    p      = (Primario)indice;
                    break;

                    /*case 3:
                     *  indice = a.Ind;
                     *  if (s == null)
                     *       s = new List<Secundario>();
                     *  s.Add((Secundario)indice);
                     *  break;*/
                }
            }
            Atributo z = e.Atrib.Find(o => o.TipoIndice == 6);

            if (z != null && z.DirAtributo != -1)
            {
                h = (HashDinamico)z.Ind;
            }
            if (p != null)
            {
                carga();
            }
            if (s != null)
            {
                cargaSec();
            }
            if (h != null)
            {
                hash();
            }
        }
示例#3
0
 //Metodo para inicializar la instancia de primario
 public void CreaIndice(char t, BinaryWriter bw, long tam)
 {
     TamPrinPrim = tam;
     prim        = new Primario(t);
     prim.CreaBloquePrincipal(bw);
 }
示例#4
0
        /*Escribir en memoria los datos del indice*/
        public void asignaMemoriaDatosIndice()
        {
            bool   ban = true;
            object o   = new object();
            long   dat = 0;

            //MessageBox.Show("nombre archivo: " + nombreArchivoIndice);
            Fichero      = new FileStream(nombreArchivoIndice, FileMode.Open, FileAccess.Read);
            binaryReader = new BinaryReader(Fichero);
            binaryReader.BaseStream.Seek(entidades[pos].atributos[indice1].direccion_Indice, SeekOrigin.Begin);

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

                case 'C':
                    char[] c = binaryReader.ReadChars(entidades[pos].atributos[indice1].longitud_Tipo);
                    o = new string(c);
                    break;

                case 'F':
                    o = binaryReader.ReadSingle();
                    break;
                }
                dat      = binaryReader.ReadInt64();
                primario = new Primario(o, dat, entidades[pos].atributos[indice1]);
                entidades[pos].primarios.Add(primario);
                entidades[pos].primarios.Last().primario_Iteracion += 1;
                for (int i = 1; i < numeroDeIteracion(entidades[pos].atributos[indice1].longitud_Tipo); ++i)
                {
                    switch (entidades[pos].atributos[indice1].tipo_Dato)
                    {
                    case 'E':
                        o = binaryReader.ReadInt32();
                        break;

                    case 'C':
                        char[] c = binaryReader.ReadChars(entidades[pos].atributos[indice1].longitud_Tipo);
                        o = new string(c);
                        break;

                    case 'F':
                        o = binaryReader.ReadSingle();
                        break;
                    }

                    dat = binaryReader.ReadInt64();

                    if (dat != -1)
                    {
                        entidades[pos].primarios.Last().primario_Iteracion += 1;
                    }
                    entidades[pos].primarios.Last().AddIndice(o, dat, entidades[pos].atributos[indice1]);
                }

                dat = binaryReader.ReadInt64();
                entidades[pos].primarios.Last().apuntador_Siguiente = dat;
                // MessageBox.Show("DAT asigna memoria indice primario: " + dat);
                if (dat == -1)
                {
                    ban = false;
                }
                else
                {
                    binaryReader.BaseStream.Seek(dat, SeekOrigin.Begin);
                }
            }
            Fichero.Close();
        }