/**Inserta un atribuoto, el entidad especificada*/
        public void insAtributo(CNodoAtributo nuevo, CNodoEntidad ent)
        {
            CNodoAtributo aux, ant = null;

            aux = ent.getCabListAtri();

            while (aux != null)
            {
                ant = aux;
                aux = aux.getSigAtri();
            }

            if (aux == ent.getCabListAtri())
                ent.setCabListAtri(nuevo);
            else
                ant.setSigAtri(nuevo);

            nuevo.setSigAtri(aux);
       }
Example #2
0
        private void asiganaTipoDato(int i, CNodoAtributo auxAtri)
        {
            string cad = null;

            switch (auxAtri.getTipo())
            {
                case 1:
                    cad = "char";
                    break;
                case 2:
                    cad = "short";
                    break;
                case 3:
                    cad = "int";
                    break;
                case 4:
                    cad = "float";
                    break;
                case 5:
                    cad = "long";
                    break;
                case 6:
                    cad = "double";
                    break;
                case 7:
                    cad = "string";
                    break;
            }

            TablaDeAtributos.Rows[i].Cells[3].Value = cad;
        }
Example #3
0
        private CNodoAtributo creaNuevoAtri(DCapturaAtributo dlgAtri)
        {
            CNodoAtributo nuevo = new CNodoAtributo();
            int tam = 0, clave = 0;
            string ent;

            if (dlgAtri.clave.Checked == true)
                clave = 1;

            nuevo.setClavePrimaria(clave);
            nuevo.setNombre(dlgAtri.tbName.Text);
            nuevo.setTipo(dlgAtri.cbTipo.SelectedIndex + 1);
           
            switch (nuevo.getTipo())
            {
                case 1://Char
                    tam = 1;    
                break;
                case 2://short
                    tam = 2;    
                break;
                case 3://int
                    tam = 4;   
                break;
                case 4://float
                    tam = 4;     
                break;
                case 5://long
                    tam = 8;    
                break;
                case 6://double
                    tam = 8; 
                break;
                case 7://string
                    tam = Convert.ToInt32(dlgAtri.tbTamaño.Text);
                break;
            }

            nuevo.setTamaño(tam);
            ent = dlgAtri.cbListEnt.Text;

            CNodoEntidad aux;
            
            for (aux = archivo.getListaEntidad().getCabListEnt();
                 aux != null && aux.getNombre() != ent; aux = aux.getSigEnt()) ;

            if (aux != null)
            {
                nuevo.setEntRel(aux);
                nuevo.setApEntRel(aux.getDir());
            }

            return (nuevo);
        }
Example #4
0
        /**\brief Carga las entidades a una lista*/
        public void cargaListaEntidades()
        {
            /**
             * \details
             *  Se inicializa una lista que almacenara todas las entidades existentes en el diccionario
             *  de datos.
             */
            long cabAux, dir, ptrAtri, dirReg, ptrSigAtri, ptrDirExt, ptrCabDatos;
            int clave, tipo, tam;
            string name;
            CNodoEntidad aux, aux2, entRela = null;
            CNodoAtributo nuevo;

            cabAux = br.ReadInt64();

            //Cargar todas las entidades
            while (cabAux != -1)
            {
                br.BaseStream.Seek(cabAux, SeekOrigin.Begin);

                dir = br.ReadInt64();
                name = br.ReadString();
                ptrAtri = br.ReadInt64();
                dirReg = br.ReadInt64();
                ptrCabDatos = br.ReadInt64();

                listaEntidades.insEntidad(new CNodoEntidad(dir, name, ptrAtri, dirReg, ptrCabDatos));
                cabAux = dir;
                numEntidades++;
            }

            //Cargar las lista de atributos de cada entidad existente
            aux = listaEntidades.getCabListEnt();
            while (aux != null)
            {
                cabAux = aux.getApCabListAtri();
                while (cabAux != -1)
                {
                    //Se leen los registros del atributo
                    br.BaseStream.Seek(cabAux, SeekOrigin.Begin);
                    ptrSigAtri = br.ReadInt64();
                    clave = br.ReadInt32();
                    name = br.ReadString();
                    tipo = br.ReadInt32();
                    tam = br.ReadInt32();
                    ptrDirExt = br.ReadInt64();
                    dir = br.ReadInt64();

                    //Se busca la entidad relacion con la direccion de esta misma
                    entRela = null;
                    if (ptrDirExt != 0)
                    {
                        aux2 = listaEntidades.getCabListEnt();
                        while (aux2 != null)
                        {
                            if (ptrDirExt == aux2.getDir())
                            {
                                entRela = aux2;
                                break;
                            }
                            else
                                aux2 = aux2.getSigEnt();
                        }
                    }

                    nuevo = new CNodoAtributo(ptrSigAtri, clave, name, tipo, tam, ptrDirExt, entRela, dir);

                    listaEntidades.insAtributo(nuevo, aux);
                    cabAux = ptrSigAtri;
                }
                aux = aux.getSigEnt();
            }

        }
Example #5
0
        /** Actualiza un atributo*/
        public void modificaAtributo(string nameEnt, string nameAtri, CNodoAtributo nuevo)
        {
            CNodoEntidad nodoVert = null;
            CNodoAtributo nodoAtri;

            if (nameAtri.CompareTo(nuevo.getNombre()) != 0)
            {
                BajaAtributo(nameEnt, nameAtri);
                AltaAtributo(nuevo, nameEnt);
            }
            else
            {
                buscaEntidad(ref nodoVert, nameEnt);
                if (nodoVert != null)
                {
                    AbrirArchivo();

                    nodoAtri = nodoVert.getCabListAtri();
                    while (nodoAtri != null && nodoAtri.getNombre().CompareTo(nameAtri) != 0)
                        nodoAtri = nodoAtri.getSigAtri();

                    if (nodoAtri != null)
                    {
                        nodoAtri.setClavePrimaria(nuevo.getClave());
                        nodoAtri.setTipo(nuevo.getTipo());
                        nodoAtri.setNameTipo(nuevo.getNameTipo());
                        nodoAtri.setTamaño(nuevo.getTamaño());
                        nodoAtri.setEntRel(nuevo.getEntRel());
                        nodoAtri.setApEntRel(nuevo.getApEntRel());
                        nuevo.setDir(nodoAtri.getDir());
                        nuevo.setApSigAtri(nodoAtri.getApSigAtri());
                        escribeAtributo(nuevo, nuevo.getDir());
                    }

                    CerrarArchivo();
                }
            }
        }
Example #6
0
 /** Escribe un atributo en el archivo del diccionario*/
 private void escribeAtributo(CNodoAtributo nuevo, long posA)
 {
     bw.BaseStream.Seek(posA, SeekOrigin.Begin);
     bw.Write(nuevo.getApSigAtri());
     bw.Write(nuevo.getClave());
     bw.Write(nuevo.getNombre());
     bw.Write(nuevo.getTipo());
     bw.Write(nuevo.getTamaño());
     bw.Write(nuevo.getApEntRel());
     bw.Write(nuevo.getDir());
 }
Example #7
0
        /**\brief Inserta un atributo */
        public void AltaAtributo(CNodoAtributo nuevo, string nameEnt)
        {
            /**
             * \details
             * \param nuevo Atributo a insertar
             * \param nameEnt Nombre de la entidad a la pertenece el atributo
             * */
             
            CNodoEntidad nodoEnt = null;
            long ptrAux, ptrAnt = 0;
            CNodoAtributo aux, ant = null;
            bool band = false;

            AbrirArchivo();

            buscaEntidad(ref nodoEnt, nameEnt);

            aux = nodoEnt.getCabListAtri();
            ptrAux = nodoEnt.getApCabListAtri();

            while (aux != null)//Busqueda dell atributo
                if (aux.getNombre().CompareTo(nuevo.getNombre()) < 0)
                {
                    ant = aux;
                    ptrAnt = ptrAux;
                    ptrAux = aux.getApSigAtri();
                    aux = aux.getSigAtri();
                }
                else
                {
                    if (aux.getNombre().CompareTo(nuevo.getNombre()) == 0)
                        band = true;

                    break;
                }

            if (aux == nodoEnt.getCabListAtri())
            {
                if (band == false)
                {
                    nodoEnt.setApCabListAtri(fs.Length);
                    nodoEnt.setCabListAtri(nuevo);
                    escribeEntidad(nodoEnt, nodoEnt.getDir());
                }
            }
            else
                if (band == false)
                {
                    ant.setApSigAtri(fs.Length);
                    ant.setSigAtri(nuevo);
                    escribeAtributo(ant, ptrAnt);
                }

            if (band == false)
            {
                nuevo.setSigAtri(aux);
                nuevo.setApSigAtri(ptrAux);
                nuevo.setDir(fs.Length);
                escribeAtributo(nuevo, fs.Length);
            }

            CerrarArchivo();
        }
Example #8
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();
            }
        }
Example #9
0
        public void getInfo(CNodoAtributo aux, ref int tamA, ref int des, ref int tipo, ref int tamB)
        {
            bool band = true;
            CNodoAtributo aux2;

            aux2 = aux.getEntRel().getCabListAtri();
            while (aux2 != null)
            {
                if (band == true)
                    if (aux2.getClave() != 1)
                        des += aux2.getTamaño();
                    else
                    {
                        tipo = aux2.getTipo();
                        tamA = aux2.getTamaño();
                        band = false;
                    }

                tamB += aux2.getTamaño();
                aux2 = aux2.getSigAtri();
            }
            tamB += 8;
        }
Example #10
0
        public DataGridViewComboBoxColumn creaComboBoxColum(CNodoAtributo aux)
        {
            DataGridViewComboBoxColumn cB = null;

            cB = new DataGridViewComboBoxColumn();
            cB.Name = "CE";
            cB.HeaderText = aux.getNombre();
            cB.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
            tablaDatos.Columns.Add(cB);

            return (cB);
        }