private void ListInfoAStorageList(List <Storage> storegeList) { foreach (Storage store in storegeList) { if (store is Hdd) { Hdd hdd = (Hdd)store; ShConsole.ConsoleInfo(hdd.ToString()); } else if (store is DvD_RW) { DvD_RW dvd_rw = (DvD_RW)store; ShConsole.ConsoleInfo(dvd_rw.ToString()); } else if (store is DVD) { DVD dvd = (DVD)store; ShConsole.ConsoleInfo(dvd.ToString()); } else if (store is Floppy) { Floppy floppy = (Floppy)store; ShConsole.ConsoleInfo(floppy.ToString()); } } }
public void StorageMenu() { if (System.IO.File.Exists(storesfilepath) && new FileInfo(storesfilepath).Length > 0) { FileHandling.DeserializerProcess(storages, storesfilepath); } if (System.IO.File.Exists(mountedfilepath) && new FileInfo(mountedfilepath).Length > 0) { FileHandling.DeserializerProcess(computer.GetStorages(), mountedfilepath); } while (true) { try { StorageMenuList(); ShConsole.UserInput("Choose a menu: "); string answer = Console.ReadLine().ToLower(); if (answer == "listmounts" || answer == "list mounts") { if (computer.GetStorages().Count == 0) { throw new NullReferenceException("Mount at least one storage first"); } else { ListInfoAStorageList(computer.GetStorages()); } Console.WriteLine(); } else if (answer == "liststores" || answer == "list stores") { if (storages.Count == 0) { throw new NullReferenceException("Make at least one storage first"); } else { ListInfoAStorageList(storages); } Console.WriteLine(); } else if (answer == "addmount" || answer == "add mount") { if (storages.Count == 0) { throw new NullReferenceException("Make one storage at least!"); } else { ListInfoAStorageList(storages); ShConsole.UserInput("Give me the storage Id,which you want put on the computer: "); string addAnswer = Console.ReadLine(); computer.Mount(addAnswer, storages); } Console.WriteLine(); } else if (answer == "usemount" || answer == "use mount") { ListInfoAStorageList(computer.GetStorages()); MountedStorageHandler msh = new MountedStorageHandler(ShConsole, computer); msh.MountedMenu(); Console.WriteLine(); } else if (answer == "addstore" || answer == "add store") { Console.WriteLine("What storage you want to make(Hdd,Dvd,Dvd_rw,Floppy)"); string newstorage = Console.ReadLine().ToLower(); string id = IdGenerator(); if (newstorage == "hdd") { string[] storageParams = new string[] { "Max capacity", "Name" }; List <string> sp = new List <string>(); foreach (string param in storageParams) { ShConsole.UserInput($"Give me {param}: "); sp.Add(Console.ReadLine()); } Storage storage = new Hdd(id, Convert.ToInt32(sp[0]), sp[1]); storages.Add(storage); } else if (newstorage == "dvd" || newstorage == "floppy" || newstorage == "dvd_rw" || newstorage == "dvd-rw" || newstorage == "dvd rw") { ShConsole.UserInput($"Give me the storage Name : "); string name = Console.ReadLine(); if (newstorage == "dvd") { Storage storage = new DVD(id, name); storages.Add(storage); } else if (newstorage == "floppy") { Storage storage = new Floppy(id, name); storages.Add(storage); } else if (newstorage == "dvd_rw" || newstorage == "dvd-rw" || newstorage == "dvd rw") { Storage storage = new DvD_RW(id, name); storages.Add(storage); } } else { throw new ArgumentException("Invalid argument"); } ShConsole.ConsoleInfo($"The {newstorage} storage has been created"); Console.WriteLine(); } else if (answer == "deletestore" || answer == "delete store") { if (storages.Count == 0) { throw new NullReferenceException("Create a storage first please"); } else { ListInfoAStorageList(storages); ShConsole.UserInput("Give me the storage Id you want to delete: "); string deletingStoreId = Console.ReadLine(); for (int i = 0; i < storages.Count; i++) { if (storages[i].Id == deletingStoreId) { ShConsole.UserInput($"Are you sure you want to delete this storage {storages[i].StoreName}?(yes/no): "); string deleteAnswer = Console.ReadLine().ToLower(); if (deleteAnswer == "yes" || deleteAnswer == "y") { ShConsole.ConsoleInfo($"the {storages[i].StoreName} has been deleted"); storages.Remove(storages[i]); } else if (deleteAnswer == "no" || deleteAnswer == "n") { ShConsole.ConsoleInfo("the deleting process has been declined"); } else { throw new ArgumentException("invalid input"); } } else if (storages[i].Id != deletingStoreId && i == storages.Count() - 1) { throw new NullReferenceException("There is no such store"); } } Console.WriteLine(); } } else if (answer == "remove mount" || answer == "removemount") { if (computer.GetStorages().Count == 0) { throw new NullReferenceException("There is no mounted storage"); } else { ListInfoAStorageList(computer.GetStorages()); ShConsole.UserInput("Give me the storage Id you want to remove: "); string removingStoreId = Console.ReadLine(); for (int i = 0; i < computer.GetStorages().Count; i++) { if (computer.GetStorages()[i].Id == removingStoreId) { ShConsole.UserInput($"Are you sure you want to remove this storage {computer.GetStorages()[i].StoreName}?(yes/no) : "); string removeAnswer = Console.ReadLine().ToLower(); if (removeAnswer == "yes" || removeAnswer == "y") { ShConsole.ConsoleInfo($"the {computer.GetStorages()[i].StoreName} has been removed"); storages.Add(computer.GetStorages()[i]); computer.GetStorages().Remove(computer.GetStorages()[i]); } else if (removeAnswer == "no" || removeAnswer == "n") { ShConsole.ConsoleInfo("the removing process has been declined"); } else { throw new ArgumentException("invalid input"); } break; } else if (computer.GetStorages()[i].Id != removingStoreId && i == computer.GetStorages().Count() - 1) { throw new NullReferenceException("There is no such store"); } } } Console.WriteLine(); } else if (answer == "modify mount" || answer == "modifymount") { if (computer.GetStorages().Count == 0) { throw new NullReferenceException("There is no mounted storage"); } else { ListInfoAStorageList(computer.GetStorages()); ShConsole.UserInput("Give me the mounted storage Id you want to modify"); string modifyingMountedStoreId = Console.ReadLine(); for (int i = 0; i < computer.GetStorages().Count; i++) { if (computer.GetStorages()[i].Id == modifyingMountedStoreId) { ShConsole.UserInput($"Are you sure You want to modify the storage NAME?(yes/no): "); string removeAnswer = Console.ReadLine().ToLower(); if (removeAnswer == "yes" || removeAnswer == "y") { ShConsole.UserInput("Give me the new store name: "); string newName = Console.ReadLine(); computer.GetStorages()[i].StoreName = newName; } else if (removeAnswer == "no" || removeAnswer == "n") { ShConsole.ConsoleInfo("the modifying process has been declined"); } else { throw new ArgumentException("invalid input"); } break; } else if (computer.GetStorages()[i].Id != modifyingMountedStoreId && i == computer.GetStorages().Count() - 1) { throw new Exception("There is no such mounted store"); } } } Console.WriteLine(); } else if (answer == "modify store" || answer == "modifystore") { if (storages.Count == 0) { throw new NullReferenceException("There is no unmounted storage"); } else { ListInfoAStorageList(storages); ShConsole.UserInput("Give me the storage Id you want to modify: "); string modifyingStoreId = Console.ReadLine(); for (int i = 0; i < storages.Count; i++) { if (storages[i].Id == modifyingStoreId) { if (storages[i].FileList.Count == 0) { ShConsole.UserInput($"Are you sure You want to modify the storage NAME?(yes/no): "); string removeAnswer = Console.ReadLine().ToLower(); if (removeAnswer == "yes" || removeAnswer == "y") { ShConsole.UserInput("Give me the new store name: "); string newName = Console.ReadLine(); storages[i].StoreName = newName; } else if (removeAnswer == "no" || removeAnswer == "n") { ShConsole.ConsoleInfo("the modifying process has been declined"); } else { throw new ArgumentException("invalid input"); } } else if (storages[i].FileList.Count > 0) { throw new Exception("The store is not empty,you can't modify the name"); } } else if (storages[i].Id != modifyingStoreId && i == computer.GetStorages().Count() - 1) { throw new NullReferenceException("There is no such store"); } } Console.WriteLine(); } } else if (answer == "save") { FileHandling.SerializeProcess(storages, storesfilepath); ShConsole.ConsoleInfo("the storage data has been saved"); FileHandling.SerializeProcess(computer.GetStorages(), mountedfilepath); ShConsole.ConsoleInfo("the mounted storage data has been saved"); Console.WriteLine(); } else if (answer == "exit") { FileHandling.SerializeProcess(storages, storesfilepath); ShConsole.ConsoleInfo("the storage data has been saved"); FileHandling.SerializeProcess(computer.GetStorages(), mountedfilepath); ShConsole.ConsoleInfo("the mounted storage data has been saved"); Console.WriteLine(); ShConsole.ConsoleInfo("Good bye"); break; } else { throw new ArgumentException("invalid argument"); } } catch (Exception ex) { ShConsole.Error(ex.Message); } } }
public void MountedMenu() { if (computer.GetStorages().Count == 0) { MsConsoleLogger.Warning("Mount a storage first"); return; } else { Storage ChoosedStorage = SelectMounted(); while (true) { try { MountedMenuList(); MsConsoleLogger.UserInput("Choose a menu: "); string answer = Console.ReadLine().ToLower(); if (answer == "addfile" || answer == "add file") { string[] fileParams = new string[] { "file name", "file size", "only read(true/false)", "system", "hidden(true/false)" }; List <string> fp = new List <string>(); foreach (string param in fileParams) { if (param == "file size") { while (true) { MsConsoleLogger.UserInput($"Give me {param}: "); int n; bool isNumeric = int.TryParse(Console.ReadLine(), out n); if (isNumeric && n > 0) { fp.Add(Convert.ToString(n)); break; } else { MsConsoleLogger.Warning("Give me a proper file size"); } } } else if (param == "only read(true/false)") { while (true) { MsConsoleLogger.UserInput($"Give me {param}: "); string paramanswer = Console.ReadLine().ToLower(); if (paramanswer == "true" || paramanswer == "false") { fp.Add(paramanswer); break; } else { MsConsoleLogger.Warning("Give me a proper argument(false/true)"); } } } else if (param == "hidden(true/false)") { while (true) { MsConsoleLogger.UserInput($"Give me {param}: "); string paramanswer = Console.ReadLine().ToLower(); if (paramanswer == "true" || paramanswer == "false") { fp.Add(paramanswer); break; } else { MsConsoleLogger.Warning("Give me a proper argument(false/true)"); } } } else { MsConsoleLogger.UserInput($"Give me {param}: "); fp.Add(Console.ReadLine()); } } ChoosedStorage.AddFile(fp[(int)Fileenum.Filename], Convert.ToInt32(fp[(int)Fileenum.FileSize]), Convert.ToBoolean(fp[(int)Fileenum.Onlyread]), fp[(int)Fileenum.System], Convert.ToBoolean(fp[(int)Fileenum.Hidden])); MsConsoleLogger.ConsoleInfo("The file has been added to the storage"); Console.WriteLine(); } else if (answer == "check cap" || answer == "checkcap") { if (ChoosedStorage is DVD || ChoosedStorage is DvD_RW || ChoosedStorage is Hdd) { MsConsoleLogger.ConsoleInfo($"max capacity = {ChoosedStorage.MaxCapacity:F1}GB" + $" free capacity = {ChoosedStorage.FreeCapacity:F1}GB" + $" reserved capacity = {ChoosedStorage.ReservedCapacity:F1}GB"); } else if (ChoosedStorage is Floppy) { MsConsoleLogger.ConsoleInfo($"max capacity = {ChoosedStorage.MaxCapacity:F1}Kb" + $" free capacity = {ChoosedStorage.FreeCapacity:F1}Kb" + $" reserved capacity = {ChoosedStorage.ReservedCapacity:F1}Kb"); } } else if (answer == "list file" || answer == "listfile") { ListFile(ChoosedStorage); } else if (answer == "remove") { if (ChoosedStorage.FileList.Count == 0) { throw new NullReferenceException("The storage is empty"); } else { ListFile(ChoosedStorage); Console.WriteLine(); MsConsoleLogger.UserInput("Give me the file which you want to delete: "); string fileYouWantToRemove = Console.ReadLine(); ChoosedStorage.Remove(fileYouWantToRemove); } } else if (answer == "archive") { Storage secondStorage = SelectMounted(); List <File> mutualFiles = computer.Archive(ChoosedStorage, secondStorage); foreach (File file in mutualFiles) { MsConsoleLogger.ConsoleInfo($"{file.ToString()} is already on the {secondStorage.StoreName} storage "); } MsConsoleLogger.ConsoleInfo($"The unmutual files has been archive to the {secondStorage} storage"); Console.WriteLine(); } else if (answer == "format") { ChoosedStorage.Format(); MsConsoleLogger.ConsoleInfo($"The {ChoosedStorage.StoreName} has been formatted"); Console.WriteLine(); } else if (answer == "setdefense" || answer == "set defense") { if (ChoosedStorage is DvD_RW || ChoosedStorage is DVD) { DVD dvd = (DVD)ChoosedStorage; dvd.Block(); MsConsoleLogger.ConsoleInfo("The dvd's write defense has been set"); } else if (ChoosedStorage is Floppy) { Floppy floppy = (Floppy)ChoosedStorage; floppy.TurnOnWriteDefense(); MsConsoleLogger.ConsoleInfo("The floppy's write defense has been set"); } else if (!(ChoosedStorage is Floppy) && !(ChoosedStorage is DVD) && !(ChoosedStorage is DvD_RW)) { throw new InvalidCastException("To this storage has no write defense "); } Console.WriteLine(); } else if (answer == "open") { if (ChoosedStorage is DvD_RW) { DvD_RW dvd_rw = (DvD_RW)ChoosedStorage; dvd_rw.Open(); MsConsoleLogger.ConsoleInfo("You can write again on this storage,but all saved file what was on this storage has been removed"); } else if (!(ChoosedStorage is DvD_RW)) { throw new InvalidCastException("This is not a dvd_rw storage please select another mounted storage,wich type is dvd_rw"); } } else if (answer == "exit") { MsConsoleLogger.ConsoleInfo("Go back to the storage menu"); Console.WriteLine(); break; } else { throw new ArgumentException("Invalid argument"); } } catch (Exception ex) { MsConsoleLogger.Error(ex.Message); } } } }