コード例 #1
0
ファイル: FormOrg.cs プロジェクト: miguellgt/file-structures
        /**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();
            }
        }