public FileUtente CreaNuovo(string nome_file, string path, DateTime t_creazione, DateTime t_modifica, int dim, string sha_contenuto = null) { int id = 0; DB_Table db = new DB_Table(); sha_contenuto = sha_contenuto != null ? sha_contenuto : ""; string[][] parameters = new string[6][]; lock (this) { parameters[0] = new string[2] { "@dim", dim.ToString() }; parameters[1] = new string[2] { "@t_modifica", t_modifica.ToString("u") }; parameters[2] = new string[2] { "@t_creazione", t_creazione.ToString("u") }; parameters[3] = new string[2] { "@sha_contenuto", sha_contenuto }; parameters[4] = new string[2] { "@nome_file", nome_file }; parameters[5] = new string[2] { "@path", path }; db.ExecuteQuery(sql_nuovo_file, parameters); id = (int)db.getLastInsertedId(); FileUtente fu = new FileUtente(id); fu.AggiungiVersione(t_modifica); this.__list_ids_files.Add(id); __file_list = new FileUtente[__list_ids_files.Count]; __deleted_list = new FileUtente[__list_deleted_ids.Count]; return(fu); } }
/// <summary> /// In ordine questa funzione: /// - Cancella il contenuto della cartella base_path /// - Cancella il database e lo ricrea con le tabelle vuote /// - Scarica la lista dei path relativi /// - Per ogni path, ricrea le cartelle e scarica i file con le loro versioni /// </summary> public static void RestoreAsLastStatusOnServer() { bool tmp = checker.Enabled; checker.Enabled = false; Log l = Log.getLog(); lock (syncLock) { //Puliamo la cartella... if (Directory.Exists(base_path)) { Directory.Delete(base_path, recursive: true); } try { DB_Table.RebuildDB(); Directory.CreateDirectory(base_path); ComandoListFolders c = new ComandoListFolders(); c.esegui(); FileUtenteList flist = FileUtenteList.getInstance(); foreach (string path_rel in c.Paths) { string[] directories = path_rel.Split('\\'); string tmp_path = base_path; foreach (string dir in directories) { tmp_path += dir + "\\"; if (!Directory.Exists(tmp_path)) { Directory.CreateDirectory(tmp_path); } } ComandoListDir c2 = new ComandoListDir(path_rel); c2.esegui(); foreach (string nome_file in c2.FileNames) { ComandoListVersions c_vers = new ComandoListVersions(nome_file, path_rel); c_vers.esegui(); DateTime[] versions = c_vers.Versions; DateTime last_vers = versions.Max(); ComandoScaricaFile c_scarica = new ComandoScaricaFile(nome_file, path_rel, last_vers); c_scarica.esegui(); FileUtente fu = flist.CreaNuovo(nome_file, path_rel, last_vers, last_vers, c_scarica.Dim, c_scarica.SHAContenuto); foreach (DateTime dt in versions) { if (dt != last_vers) { fu.AggiungiVersione(dt); } } } } } catch (ServerException e) { l.log(e.Message); throw; } checker.Enabled = tmp; } }