Beispiel #1
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();
        }