/// <summary>
        /// Método auxiliar que crea los componentes de la estructura de 
        /// archivos y almacena unos en otros, creando una estructura
        /// anidada.
        /// </summary>
        /// <returns></returns>
        private static Directorio creaComponentes()
        {
            // Creamos los elementos de la estructura
            Directorio raiz = new Directorio("Raiz");
            Directorio vacio = new Directorio("Directorio Vacio");
            Directorio unico = new Directorio("Directorio Con Archivo Unico");
            Directorio comprimidoSimple = new Directorio("Directorio Con Archivo Comprimido Simple");
            Directorio anidado = new Directorio("Directorio con Directorio Anidado");
            Directorio complejo = new Directorio("Directorio con Archivo Comprimido Complejo");
            Directorio vacio2 = new Directorio("Directorio Vacio En Archivo Comprimido");

            Archivo a1 = new Archivo("foto001.jpg", 10);
            Archivo a2 = new Archivo("foto002.jpg", 10);
            Archivo a3 = new Archivo("foto003.jpg", 10);
            Archivo a4 = new Archivo("foto004.jpg", 10);
            Archivo a5 = new Archivo("foto005.jpg", 10);
            Archivo a6 = new Archivo("foto006.jpg", 10);
            Archivo a7 = new Archivo("foto007.jpg", 10);
            Archivo a8 = new Archivo("foto008.jpg", 10);

            ArchivoComprimido ac1 = new ArchivoComprimido("ccSimple.zip");
            ArchivoComprimido ac2 = new ArchivoComprimido("ccComplejo.zip");
            ArchivoComprimido ac3 = new ArchivoComprimido("ccAnidada.zip");

            EnlaceDirecto e1 = new EnlaceDirecto(a1);
            EnlaceDirecto e2 = new EnlaceDirecto(ac1);
            EnlaceDirecto e3 = new EnlaceDirecto(vacio);

            // Creamos la estructura
            ac3.añadeArchivo(a7);
            ac2.añadeArchivo(ac3);
            ac2.añadeArchivo(a8);

            complejo.añadeElemento(a5);
            complejo.añadeElemento(a6);
            complejo.añadeElemento(ac2);

            anidado.añadeElemento(a4);
            anidado.añadeElemento(e2);
            anidado.añadeElemento(e3);
            anidado.añadeElemento(complejo);

            ac1.añadeArchivo(vacio2);
            ac1.añadeArchivo(a3);
            ac1.añadeArchivo(e1);

            comprimidoSimple.añadeElemento(a2);
            comprimidoSimple.añadeElemento(e1);
            comprimidoSimple.añadeElemento(ac1);

            unico.añadeElemento(a1);

            raiz.añadeElemento(vacio);
            raiz.añadeElemento(unico);
            raiz.añadeElemento(comprimidoSimple);
            raiz.añadeElemento(anidado);

            // Retornamos el directorio raíz
            return raiz;
        }
 /// <summary>
 /// Función que declara una operación de visita para los 
 /// objetos de tipo enlace directo. Retorna un String con
 /// su nombre
 /// </summary>
 /// <param name="ec"></param>
 /// <returns></returns>
 public override String formatoEnlaceDirecto(EnlaceDirecto ec)
 {
     return ec.Nombre.ToString();
 }
 public string imprime(EnlaceDirecto ea)
 {
     return tabulaciones() + ea.Nombre + "\n";
 }
Example #4
0
        static void Main(string[] args)
        {
            //Directorios
            Elemento d1 = new Directorio("Raiz");
            Elemento d2 = new Directorio("Directorio Vacio");
            Elemento d3 = new Directorio("Directorio Con Archivo Unico");
            Elemento d4 = new Directorio("Directorio Con Archivo Comprimido Simple");
            Elemento d5 = new Directorio("Directorio Vacio En Archivo Comprimido");
            Elemento d6 = new Directorio("Directorio Con Directorio Anidado");
            Elemento d7 = new Directorio("Directorio Con Archivo Comprimido Complejo");

            //Archivos
            Elemento a1 = new Archivo("foto001.jpg", 50);
            Elemento a2 = new Archivo("foto002.jpg", 50);
            Elemento a3 = new Archivo("foto003.jpg", 50);
            Elemento a4 = new Archivo("foto004.jpg", 50);
            Elemento a5 = new Archivo("foto005.jpg", 50);
            Elemento a6 = new Archivo("foto006.jpg", 50);
            Elemento a7 = new Archivo("foto007.jpg", 50);
            Elemento a8 = new Archivo("foto008.jpg", 50);

            //Archivos comprimidos
            Elemento ac1 = new ArchivoComprimido("ccSimple.zip");
            Elemento ac2 = new ArchivoComprimido("ccComplejo.zip");
            Elemento ac3 = new ArchivoComprimido("ccAnidada.zip");

            //Enlaces directos
            Elemento ed1 = new EnlaceDirecto(a1);
            Elemento ed2 = new EnlaceDirecto(a1);
            Elemento ed3 = new EnlaceDirecto(d2);
            Elemento ed4 = new EnlaceDirecto(ac1);

            //Añadir elementos a los directorios
            d1.add(d2);
            d1.add(d3);
            d3.add(a1);
            d1.add(d4);
            d4.add(a2);
            d4.add(ed1);
            d4.add(ac1);
            d1.add(d6);
            d6.add(a4);
            d6.add(ed4);
            d6.add(ed3);
            d6.add(d7);
            d7.add(a5);
            d7.add(a6);
            d7.add(ac2);

            //Añadir elementos a los archivos comprimidos
            ac1.add(d5);
            ac1.add(a3);
            ac1.add(ed2);
            ac2.add(ac3);
            ac3.add(a7);
            ac2.add(a8);

            IVisitor v1 = new ImpresionExtendida();
            IVisitor v2 = new ImpresionCompacta();
            Console.Out.Write("Impresión extendida del sistema de ficheros:\n\n");
            Console.Out.Write(d1.accept(v1));
            Console.Out.Write("\n\n--------------------------------------------------\n\n");
            Console.Out.Write("Impresión compacta del sistema de ficheros:\n\n");
            Console.Out.Write(d1.accept(v2));
            Console.In.Read();
        }
 /// <summary>
 /// Función que declara una operación de visita para los 
 /// objetos de tipo enlace directo. Retorna un String con
 /// su nombre
 /// </summary>
 /// <param name="ec"></param>
 /// <returns></returns>
 public abstract String formatoEnlaceDirecto(EnlaceDirecto ec);