public IOperate GetOperator(DataStructureTypes dataStructure, IDataStructure <TDataType> dataStructureInstance, object operation) { switch (dataStructure) { case DataStructureTypes.Array: break; case DataStructureTypes.SinglyLinkedList: case DataStructureTypes.DoublyLinkedList: case DataStructureTypes.CircularLinkedList: return(GetLinkedListOperationsHandler(dataStructureInstance, (LinkedListOperations)operation)); case DataStructureTypes.Stack: break; case DataStructureTypes.Queue: break; case DataStructureTypes.Tree: break; case DataStructureTypes.Graph: break; default: throw new ArgumentOutOfRangeException(nameof(dataStructure), dataStructure, null); } return(null); }
public void Run() { char anotherDs; do { DataStructureTypes selectedDataStructure = SelectDataStructure(); IDataStructure <TDataType> dataStructureInstance = dataStructureFactory.GetDataStructure(selectedDataStructure); char anotherOperation; do { object selectedOperation = SelectOperation(selectedDataStructure); IOperate dsOperator = operatorFactory.GetOperator(selectedDataStructure, dataStructureInstance, selectedOperation); dsOperator.Operate(); Console.WriteLine("Do you want to select another Operation? Y/N"); anotherOperation = Convert.ToChar(Console.ReadLine() ?? throw new InvalidOperationException()); } while (anotherOperation == 'y' || anotherOperation == 'Y'); Console.WriteLine("Do you want to select another Data Structure? Y/N"); anotherDs = Convert.ToChar(Console.ReadLine() ?? throw new InvalidOperationException()); } while (anotherDs == 'y' || anotherDs == 'Y'); }
private object SelectOperation(DataStructureTypes dataStructure) { Type operationType = dsAndOperationsMapper.GetOperationType(dataStructure); menuPrinter.ShowEnumBasedTabularMenu(operationType, new[] { "Index", "Operation" }); return(userInterface.GetEnumBasedInputByUser(operationType)); }
public Type GetOperationType(DataStructureTypes dataStructure) { if (!Enum.IsDefined(typeof(DataStructureTypes), dataStructure)) { throw new InvalidEnumArgumentException(nameof(dataStructure), (int)dataStructure, typeof(DataStructureTypes)); } return(dsAndOperationsMap[dataStructure]); }
public override String ToString() { var answer = DataStructureTypes.GetDataStructureTypeAsString(GetDataStructureType()); if (answer.Length == 0) { answer = base.ToString(); } return(answer + ": id = " + CommandId); }
public IDataStructure <TDataType> GetDataStructure(DataStructureTypes selectedDataStructure) { if (!Enum.IsDefined(typeof(DataStructureTypes), selectedDataStructure)) { throw new InvalidEnumArgumentException(nameof(selectedDataStructure), (int)selectedDataStructure, typeof(DataStructureTypes)); } switch (selectedDataStructure) { case DataStructureTypes.Array: break; case DataStructureTypes.SinglyLinkedList: return(new SinglyLinkedList <TDataType>()); case DataStructureTypes.DoublyLinkedList: break; case DataStructureTypes.CircularLinkedList: break; case DataStructureTypes.Stack: break; case DataStructureTypes.Queue: break; case DataStructureTypes.Tree: break; case DataStructureTypes.Graph: break; default: throw new ArgumentOutOfRangeException(nameof(selectedDataStructure), selectedDataStructure, null); } return(null); }