Ejemplo n.º 1
0
        private async void btnAceptar_Click(object sender, EventArgs e)
        {
            btnAceptar.Visible   = false;
            treeViewSync.Visible = false;
            Nodo   nodoSeleccionado = (Nodo)treeViewSync.SelectedNode.Tag;
            string pathRepositorio  = Environment.CurrentDirectory + "\\" + nodoSeleccionado.Name;

            bool exists = Directory.Exists(pathRepositorio);

            if (!exists && !Properties.Settings.Default.RepositoriosPath.Contains(pathRepositorio))
            {
                NodoLocal nodoLocal = new NodoLocal(pathRepositorio, false);
                await nodoLocal.Crear(nodoSeleccionado.Id);
                await PoblarCarpeta(nodoSeleccionado, pathRepositorio);

                Properties.Settings.Default.RepositoriosPath.Add(pathRepositorio);
                Properties.Settings.Default.RepositoriosId.Add(nodoSeleccionado.Id);
                Properties.Settings.Default.Save();
                PoblarListBoxRepositoriosGuardados();
            }
            else
            {
                MessageBox.Show("El directorio ya se está sincronizando");
            }
        }
        public async Task CrearNodoRemoto(string nodoPadre, string PathLocal)
        {
            Nodo nodo = new Nodo();
            bool EsArchivo;

            if (File.Exists(PathLocal))
            {
                EsArchivo = true;
            }
            else
            {
                EsArchivo = false;
            }

            nodo.Name = Path.GetFileName(PathLocal) ?? Path.GetDirectoryName(PathLocal);

            if (EsArchivo)
            {
                nodo.NodeType = "cm:content";
                Nodo nodoCreado = await NodosStatic.CrearNodoContenido(nodoPadre, nodo, File.ReadAllBytes(PathLocal));
            }
            else
            {
                nodo.NodeType = "cm:folder";
                Nodo nodoCreado = await NodosStatic.CrearNodo(nodoPadre, nodo);

                if (!(Directory.GetFiles(PathLocal) is null))
                {
                    foreach (var item in Directory.GetFiles(PathLocal))
                    {
                        NodoLocal nodoLocalHijo = new NodoLocal(item, true);
                        await nodoLocalHijo.CrearNodoRemoto(nodoCreado.Id);
                    }
                }
                if (!(Directory.GetDirectories(PathLocal) is null))
                {
                    foreach (var item in Directory.GetDirectories(PathLocal))
                    {
                        NodoLocal nodoLocalHijo = new NodoLocal(item, false);
                        await nodoLocalHijo.CrearNodoRemoto(nodoCreado.Id);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Pobla recursivamente la carpeta local con los nodos remotos
        /// </summary>
        /// <param name="carpetaSeleccionada">Nodo remoto del cual se quiere extraer</param>
        /// <param name="pathLocal">Ubicación local donde se poblarán los nodos</param>
        /// <returns></returns>
        private async Task PoblarCarpeta(Nodo carpetaSeleccionada, string pathLocal)
        {
            foreach (var nodoHijo in carpetaSeleccionada.NodosHijos)
            {
                if (nodoHijo.IsFolder)
                {
                    //Se crea el directorio y se le agrega el id
                    NodoLocal nodoLocal = new NodoLocal(pathLocal + "\\" + nodoHijo.Name, false);
                    await nodoLocal.Crear(nodoHijo.Id);

                    if (nodoHijo.NodosHijos.Count != 0)
                    {
                        await PoblarCarpeta(nodoHijo, pathLocal + "\\" + nodoHijo.Name);

                        await nodoLocal.ActualizarFechasLocales(nodoHijo);
                    }
                }
                else if (nodoHijo.IsFile)
                {
                    NodoLocal nodoLocal = new NodoLocal(pathLocal + "\\" + nodoHijo.Name, true);
                    await nodoLocal.Crear(nodoHijo.Id);
                }
            }
        }