示例#1
0
        /**Actualiza una entidad*/
        public void ModificaEntidad(string nameEnt, CNodoEntidad nueva)
        {
            CNodoEntidad aux, nodoVerAux = null;
            CNodoAtributo auxAtri;

            buscaEntidad(ref nodoVerAux, nameEnt);

            nueva.setCabListAtri(nodoVerAux.getCabListAtri());
            nueva.setApCabListAtri(nodoVerAux.getApCabListAtri());

            AbrirArchivo();
            nueva.setDir(fs.Length);

            aux = listaEntidades.getCabListEnt();

            while (aux != null)
            {
                if (aux != nodoVerAux)
                {
                    auxAtri = aux.getCabListAtri();
                    while (auxAtri != null)
                    {
                        if (auxAtri.getEntRel() == nodoVerAux)
                        {
                            auxAtri.setEntRel(nueva);
                            auxAtri.setApEntRel(nueva.getDir());
                            escribeAtributo(auxAtri, auxAtri.getDir());
                        }

                        auxAtri = auxAtri.getSigAtri();
                    }
                }

                aux = aux.getSigEnt();
            }
            CerrarArchivo();
            BajaEntidad(nameEnt);
            AltaEntidad(nueva);
        }
示例#2
0
        /**\brief Se inserta una entidad en el Diccionario de datos*/
        public void AltaEntidad(CNodoEntidad nueva)
        {
            /**
             * \details
             * \param nueva Recibe un objeto de tipo entidad, que sera agregada a la lista de entidades
             *  y posteriormente escrita en el diccionario
             **/ 
            CNodoEntidad aux, ant = null;
            long ptrAnt, ptrAux, posCab;
            bool band = false;
            ptrAux = ptrAnt = -1;

            AbrirArchivo();//Se abren el archivo que contiene el diccionario de datos

            aux = listaEntidades.getCabListEnt();
            ptrAux = leerCabecera();

            while (aux != null)
                if ((aux.getNombre()).CompareTo(nueva.getNombre()) < 0)
                {
                    ant = aux;
                    ptrAnt = ptrAux;
                    ptrAux = aux.getApSigEnt();
                    aux = aux.getSigEnt();
                }
                else
                    if ((aux.getNombre()).CompareTo(nueva.getNombre()) == 0)
                    {
                        band = true;
                        break;
                    }
                    else
                        break;

            if (aux == listaEntidades.getCabListEnt())
            {
                if (band == false)
                {
                    posCab = leerCabecera();
                    nueva.setApSigEnt(posCab);
                    actCab(fs.Length);
                    listaEntidades.setCabListEnt(nueva);
                }
            }
            else
                if (band == false)
                {
                    nueva.setApSigEnt(ptrAux);
                    ant.setApSigEnt(fs.Length);
                    escribeEntidad(ant, ptrAnt);
                    ant.setSigEnt(nueva);
                }

            if (band == false)
            {
                nueva.setDir(fs.Length);
                escribeEntidad(nueva, fs.Length);
                nueva.setSigEnt(aux);
            }
            numEntidades++;
            CerrarArchivo();
        }