示例#1
0
        public static void Main(string[] args)
        {
            StorageMaster storageMaster = new StorageMaster();
            Engine        engine        = new Engine(storageMaster);

            engine.Run();
        }
示例#2
0
        public static void Main()
        {
            StorageMaster sm     = new StorageMaster();
            Engine        engine = new Engine(sm);

            engine.Run();
        }
示例#3
0
 public Engine(IReader reader, IWriter writer)
 {
     this.reader   = reader;
     this.writer   = writer;
     storageMaster = new StorageMaster();
     isRunning     = true;
 }
示例#4
0
        static void Main()
        {
            StorageMaster storageMaster = new StorageMaster();

            Engine engine = new Engine(storageMaster);

            engine.Run();
        }
示例#5
0
        static void Main(string[] args)
        {
            IReader reader = new ConsoleReader();
            IWriter writer = new ConsoleWriter();

            var master = new StorageMaster(reader, writer);

            master.Run();
        }
示例#6
0
        static void Main()
        {
            var storageMaster = new StorageMaster();

            var inputLine = Console.ReadLine();

            while (!inputLine.Equals("END"))
            {
                var command = inputLine.Split().First();
                var args    = inputLine.Split().Skip(1).ToArray();

                try
                {
                    var output = string.Empty;
                    switch (command)
                    {
                    case "AddProduct":
                        output = storageMaster.AddProduct(args[0], double.Parse(args[1]));
                        break;

                    case "RegisterStorage":
                        output = storageMaster.RegisterStorage(args[0], args[1]);
                        break;

                    case "SelectVehicle":
                        output = storageMaster.SelectVehicle(args[0], int.Parse(args[1]));
                        break;

                    case "LoadVehicle":
                        output = storageMaster.LoadVehicle(args);
                        break;

                    case "SendVehicleTo":
                        output = storageMaster.SendVehicleTo(args[0], int.Parse(args[1]), args[2]);
                        break;

                    case "UnloadVehicle":
                        output = storageMaster.UnloadVehicle(args[0], int.Parse(args[1]));
                        break;

                    case "GetStorageStatus":
                        output = storageMaster.GetStorageStatus(args[0]);
                        break;
                    }

                    Console.WriteLine(output);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error: " + ex.Message);
                }

                inputLine = Console.ReadLine();
            }

            Console.WriteLine(storageMaster.GetSummary());
        }
示例#7
0
        public static void Main(string[] args)
        {
            var master = new StorageMaster();

            var input = Console.ReadLine();

            while (input != "END")
            {
                var tokens = input
                             .Split(" ", StringSplitOptions.RemoveEmptyEntries);

                var type = tokens[0];
                try
                {
                    switch (type)
                    {
                    case "AddProduct":
                        Console.WriteLine(master.AddProduct(tokens[1], double.Parse(tokens[2])));
                        break;

                    case "RegisterStorage":
                        Console.WriteLine(master.RegisterStorage(tokens[1], tokens[2]));
                        break;

                    case "SelectVehicle":
                        Console.WriteLine(master.SelectVehicle(tokens[1], int.Parse(tokens[2])));
                        break;

                    case "LoadVehicle":
                        Console.WriteLine(master.LoadVehicle(tokens.Skip(1)));
                        break;

                    case "SendVehicleTo":
                        Console.WriteLine(master.SendVehicleTo(tokens[1], int.Parse(tokens[2]), tokens[3]));
                        break;

                    case "UnloadVehicle":
                        Console.WriteLine(master.UnloadVehicle(tokens[1], int.Parse(tokens[2])));
                        break;

                    case "GetStorageStatus":
                        Console.WriteLine(master.GetStorageStatus(tokens[1]));
                        break;
                    }
                }
                catch (InvalidOperationException ioe)
                {
                    Console.WriteLine("Error: " + ioe.Message);
                }

                input = Console.ReadLine();
            }

            Console.WriteLine(master.GetSummary());
        }
示例#8
0
        public static void Main(string[] args)
        {
            var input         = Console.ReadLine();
            var storageMaster = new StorageMaster();
            var output        = "";

            while (input != "END")
            {
                var line = input.Split();
                var cmd  = line[0];

                try
                {
                    if (cmd == "AddProduct")
                    {
                        output = storageMaster.AddProduct(line[1], double.Parse(line[2]));
                    }
                    if (cmd == "RegisterStorage")
                    {
                        output = storageMaster.RegisterStorage(line[1], line[2]);
                    }
                    if (cmd == "SelectVehicle")
                    {
                        output = storageMaster.SelectVehicle(line[1], int.Parse(line[2]));
                    }
                    if (cmd == "LoadVehicle")
                    {
                        output = storageMaster.LoadVehicle(line.Skip(1));
                    }
                    if (cmd == "SendVehicleTo")
                    {
                        output = storageMaster.SendVehicleTo(line[1], int.Parse(line[2]), line[3]);
                    }
                    if (cmd == "UnloadVehicle")
                    {
                        output = storageMaster.UnloadVehicle(line[1], int.Parse(line[2]));
                    }
                    if (cmd == "GetStorageStatus")
                    {
                        output = storageMaster.GetStorageStatus(line[1]);
                    }
                }
                catch (InvalidOperationException ex)
                {
                    output = "Error: " + ex.Message;
                }
                Console.WriteLine(output);
                input = Console.ReadLine();
            }

            output = storageMaster.GetSummary();
            Console.WriteLine(output);
        }
示例#9
0
        public static void Main(string[] args)
        {
            var    storageMaster = new StorageMaster();
            string line;

            while ((line = Console.ReadLine()) != "END")
            {
                var tokens  = line.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToList();
                var command = tokens[0];
                var result  = string.Empty;
                tokens = tokens.Skip(1).ToList();
                try
                {
                    switch (command)
                    {
                    case "AddProduct":
                        result = storageMaster.AddProduct(tokens[0], double.Parse(tokens[1]));
                        break;

                    case "RegisterStorage":
                        result = storageMaster.RegisterStorage(tokens[0], tokens[1]);
                        break;

                    case "SelectVehicle":
                        result = storageMaster.SelectVehicle(tokens[0], int.Parse(tokens[1]));
                        break;

                    case "LoadVehicle":
                        result = storageMaster.LoadVehicle(tokens);
                        break;

                    case "SendVehicleTo":
                        result = storageMaster.SendVehicleTo(tokens[0], int.Parse(tokens[1]), tokens[2]);
                        break;

                    case "UnloadVehicle":
                        result = storageMaster.UnloadVehicle(tokens[0], int.Parse(tokens[1]));
                        break;

                    case "GetStorageStatus":
                        result = storageMaster.GetStorageStatus(tokens[0]);
                        break;
                    }
                    Console.WriteLine(result);
                }
                catch (InvalidOperationException err)
                {
                    Console.WriteLine("Error: " + err.Message);
                }
            }
            Console.WriteLine(storageMaster.GetSummary());
        }
        public static void Main()
        {
            var productFactory = new ProductFactory();
            var storageFactory = new StorageFactory();

            var storageMaster     = new StorageMaster(productFactory, storageFactory);
            var consoleDataReader = new ConsoleDataReader();
            var consoleDataWriter = new ConsoleDataWriter();

            var engine = new Engine(storageMaster, consoleDataReader, consoleDataWriter);

            engine.Run();
        }
示例#11
0
        static void Main(string[] args)
        {
            StorageMaster storageMaster = new StorageMaster();
            string        command;

            while ((command = Console.ReadLine()) != "END")
            {
                string[] splittedCommand = command.Split();
                try
                {
                    switch (splittedCommand[0])
                    {
                    case "AddProduct":
                        Console.WriteLine(storageMaster.AddProduct(splittedCommand[1], double.Parse(splittedCommand[2])));
                        break;

                    case "RegisterStorage":
                        Console.WriteLine(storageMaster.RegisterStorage(splittedCommand[1], splittedCommand[2]));
                        break;

                    case "SelectVehicle":
                        Console.WriteLine(storageMaster.SelectVehicle(splittedCommand[1], int.Parse(splittedCommand[2])));
                        break;

                    case "LoadVehicle":
                        Console.WriteLine(storageMaster.LoadVehicle(splittedCommand.Skip(1)));
                        break;

                    case "SendVehicleTo":
                        Console.WriteLine
                            (storageMaster
                            .SendVehicleTo(splittedCommand[1], int.Parse(splittedCommand[2]), splittedCommand[3])
                            );
                        break;

                    case "UnloadVehicle":
                        Console.WriteLine(storageMaster.UnloadVehicle(splittedCommand[1], int.Parse(splittedCommand[2])));
                        break;

                    case "GetStorageStatus":
                        Console.WriteLine(storageMaster.GetStorageStatus(splittedCommand[1]));
                        break;
                    }
                }
                catch (InvalidOperationException ex)
                {
                    Console.WriteLine("Error: " + ex.Message);
                }
            }
            Console.WriteLine(storageMaster.GetSummary());
        }
示例#12
0
        public static void Main()
        {
            StorageMaster sm = new StorageMaster();

            while (true)
            {
                string[] command = Console.ReadLine().Split();

                try
                {
                    if (command[0] == "END")
                    {
                        Console.WriteLine(sm.GetSummary());
                        break;
                    }
                    else if (command[0] == "AddProduct")
                    {
                        Console.WriteLine(sm.AddProduct(command[1], double.Parse(command[2])));
                    }
                    else if (command[0] == "RegisterStorage")
                    {
                        Console.WriteLine(sm.RegisterStorage(command[1], command[2]));
                    }
                    else if (command[0] == "SelectVehicle")
                    {
                        Console.WriteLine(sm.SelectVehicle(command[1], int.Parse(command[2])));
                    }
                    else if (command[0] == "LoadVehicle")
                    {
                        Console.WriteLine(sm.LoadVehicle(command.Skip(1)));
                    }
                    else if (command[0] == "SendVehicleTo")
                    {
                        Console.WriteLine(sm.SendVehicleTo(command[1], int.Parse(command[2]), command[3]));
                    }
                    else if (command[0] == "UnloadVehicle")
                    {
                        Console.WriteLine(sm.UnloadVehicle(command[1], int.Parse(command[2])));
                    }
                    else if (command[0] == "GetStorageStatus")
                    {
                        Console.WriteLine(sm.GetStorageStatus(command[1]));
                    }
                }
                catch (InvalidOperationException ioe)
                {
                    Console.WriteLine($"Error: {ioe.Message}");
                }
            }
        }
示例#13
0
        private static void ProcessCommand(string inputLine, StorageMaster storageMaster)
        {
            var tokens  = inputLine.Split();
            var command = tokens[0];

            switch (command)
            {
            case "AddProduct":
                var type  = tokens[1];
                var price = double.Parse(tokens[2]);
                Console.WriteLine(storageMaster.AddProduct(type, price));
                break;

            case "RegisterStorage":
                type = tokens[1];
                var name = tokens[2];
                Console.WriteLine(storageMaster.RegisterStorage(type, name));
                break;

            case "SelectVehicle":
                var storageName = tokens[1];
                var garageSlot  = int.Parse(tokens[2]);
                Console.WriteLine(storageMaster.SelectVehicle(storageName, garageSlot));
                break;

            case "LoadVehicle":
                var args = tokens.Skip(1).ToArray();
                Console.WriteLine(storageMaster.LoadVehicle(args));
                break;

            case "SendVehicleTo":
                var sourceName       = tokens[1];
                var sourceGarageSlot = int.Parse(tokens[2]);
                var destinationName  = tokens[3];
                Console.WriteLine(storageMaster.SendVehicleTo(sourceName, sourceGarageSlot, destinationName));
                break;

            case "UnloadVehicle":
                storageName = tokens[1];
                garageSlot  = int.Parse(tokens[2]);
                Console.WriteLine(storageMaster.UnloadVehicle(storageName, garageSlot));
                break;

            case "GetStorageStatus":
                storageName = tokens[1];
                Console.WriteLine(storageMaster.GetStorageStatus(storageName));
                break;
            }
        }
示例#14
0
        public void Run()
        {
            var storageMaster = new StorageMaster();

            var inputLine = string.Empty;

            while ((inputLine = Console.ReadLine()) != "END")
            {
                try
                {
                    ProcessCommand(inputLine, storageMaster);
                }
                catch (InvalidOperationException e)
                {
                    Console.WriteLine($"Error: {e.Message}");
                }
            }

            Console.WriteLine(storageMaster.GetSummary());
        }
示例#15
0
 public Engine(StorageMaster storage)
 {
     this.storage = storage;
 }
示例#16
0
 public Engine(StorageMaster storageMaster)
 {
     this.storageMaster = storageMaster;
 }
示例#17
0
 public Engine()
 {
     storageMaster = new StorageMaster();
 }
示例#18
0
        static void Main(string[] args)
        {
            var storageMaster = new StorageMaster();

            while (true)
            {
                var input = Console.ReadLine().Split(' ');

                switch (input[0])
                {
                case "AddProduct":
                    string productType  = input[1];
                    double productPrice = double.Parse(input[2]);
                    try
                    {
                        string result = storageMaster.AddProduct(productType, productPrice);
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        PrintException(e.Message);
                    }
                    break;

                case "RegisterStorage":
                    string storageType = input[1];
                    string storageName = input[2];
                    try
                    {
                        string result = storageMaster.RegisterStorage(storageType, storageName);
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        PrintException(e.Message);
                    }
                    break;

                case "SelectVehicle":
                    string storageToSearch = input[1];
                    int    slot            = int.Parse(input[2]);
                    try
                    {
                        string result = storageMaster.SelectVehicle(storageToSearch, slot);
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        PrintException(e.Message);
                    }
                    break;

                case "LoadVehicle":
                    var productsToLoad = input.Skip(1);
                    try
                    {
                        string result = storageMaster.LoadVehicle(productsToLoad);
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        PrintException(e.Message);
                    }
                    break;

                case "SendVehicleTo":
                    string source      = input[1];
                    int    garageSlot  = int.Parse(input[2]);
                    string destination = input[3];
                    try
                    {
                        string result = storageMaster.SendVehicleTo(source, garageSlot, destination);
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        PrintException(e.Message);
                    }
                    break;

                case "UnloadVehicle":
                    string storageNameForUnloading = input[1];
                    int    garageSlotToUnload      = int.Parse(input[2]);
                    try
                    {
                        string result = storageMaster.UnloadVehicle(storageNameForUnloading, garageSlotToUnload);
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        PrintException(e.Message);
                    }
                    break;

                case "GetStorageStatus":
                    string statusTarget = input[1];
                    try
                    {
                        string result = storageMaster.GetStorageStatus(statusTarget);
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        PrintException(e.Message);
                    }
                    break;

                case "END":
                    try
                    {
                        string result = storageMaster.GetSummary();
                        Console.WriteLine(result);
                        Environment.Exit(0);
                    }
                    catch (Exception e)
                    {
                        PrintException(e.Message);
                        Environment.Exit(0);
                    }
                    break;
                }
            }
        }
示例#19
0
 public Engine()
 {
     this.storageMaster = new StorageMaster();
 }
示例#20
0
        static void Main(string[] args)
        {
            StorageMaster sm = new StorageMaster();
            string        input;

            while ((input = Console.ReadLine()) != "END")
            {
                try
                {
                    string[] tokens = input.Split();
                    switch (tokens[0])
                    {
                    case "AddProduct":
                    {
                        Console.WriteLine(sm.AddProduct(tokens[1], double.Parse(tokens[2])));
                        break;
                    }

                    case "RegisterStorage":
                    {
                        Console.WriteLine(sm.RegisterStorage(tokens[1], tokens[2]));
                        break;
                    }

                    case "SelectVehicle":
                    {
                        Console.WriteLine(sm.SelectVehicle(tokens[1], int.Parse(tokens[2])));
                        break;
                    }

                    case "LoadVehicle":
                    {
                        List <string> products = new List <string>();
                        for (int i = 1; i < tokens.Length; i++)
                        {
                            products.Add(tokens[i]);
                        }
                        Console.WriteLine(sm.LoadVehicle(products));
                        break;
                    }

                    case "SendVehicleTo":
                    {
                        Console.WriteLine(sm.SendVehicleTo(tokens[1], int.Parse(tokens[2]), tokens[3]));
                        break;
                    }

                    case "UnloadVehicle":
                    {
                        Console.WriteLine(sm.UnloadVehicle(tokens[1], int.Parse(tokens[2])));
                        break;
                    }

                    case "GetStorageStatus":
                    {
                        Console.WriteLine(sm.GetStorageStatus(tokens[1]));
                        break;
                    }
                    }
                }
                catch (InvalidOperationException ie)
                {
                    Console.WriteLine($"Error: {ie.Message}");
                }
            }

            Console.WriteLine(sm.GetSummary());
        }
示例#21
0
        static void Main(string[] args)
        {
            var input         = string.Empty;
            var storageMaster = new StorageMaster();

            while (input != "END")
            {
                input = Console.ReadLine();
                var inputParams = input.Split();
                var command     = inputParams[0];

                try
                {
                    switch (command)
                    {
                    case "AddProduct":
                        var productType  = inputParams[1];
                        var productPrice = double.Parse(inputParams[2]);
                        Console.WriteLine(storageMaster.AddProduct(productType, productPrice));
                        break;

                    case "RegisterStorage":
                        var storageType = inputParams[1];
                        var storageName = inputParams[2];
                        Console.WriteLine(storageMaster.RegisterStorage(storageType, storageName));
                        break;

                    case "SelectVehicle":
                        var storageN   = inputParams[1];
                        var garageSlot = int.Parse(inputParams[2]);
                        Console.WriteLine(storageMaster.SelectVehicle(storageN, garageSlot));
                        break;

                    case "LoadVehicle":
                        var products = inputParams.Skip(1);
                        Console.WriteLine(storageMaster.LoadVehicle(products));
                        break;

                    case "SendVehicleTo":
                        var sourceName       = inputParams[1];
                        var sourceGarageSlot = int.Parse(inputParams[2]);
                        var destinationName  = inputParams[3];
                        Console.WriteLine(storageMaster.SendVehicleTo(sourceName, sourceGarageSlot, destinationName));
                        break;

                    case "UnloadVehicle":
                        var storageNameUnl = inputParams[1];
                        var gs             = int.Parse(inputParams[2]);
                        Console.WriteLine(storageMaster.UnloadVehicle(storageNameUnl, gs));
                        break;

                    case "GetStorageStatus":
                        var storageStatusName = inputParams[1];
                        Console.WriteLine(storageMaster.GetStorageStatus(storageStatusName));
                        break;

                    case "GetSummary":
                        Console.WriteLine(storageMaster.GetSummary());
                        break;
                    }
                }
                catch (InvalidOperationException e)
                {
                    Console.WriteLine($"Error: {e.Message}");
                }
            }

            Console.WriteLine(storageMaster.GetSummary());
        }
示例#22
0
        static void Main(string[] args)
        {
            var c = new StorageMaster();

            while (true)
            {
                string[] input = Console.ReadLine().Split();
                if (input[0] == "Q" || input[0] == "q" || input[0] == "exit")
                {
                    break;
                }
                if (input[0] == "RegisterStorage")
                {
                    try
                    {
                        string s = c.RegisterStorage(input[1], input[2]);
                        Console.WriteLine(s);
                    }
                    catch (InvalidOperationException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                else if (input[0] == "AddProduct")
                {
                    try
                    {
                        string s = c.AddProduct(input[1], double.Parse(input[2]));
                        Console.WriteLine(s);
                    }
                    catch (InvalidOperationException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                else if (input[0] == "SelectVehicle")
                {
                    try
                    {
                        string s = c.SelectVehicle(input[1], int.Parse(input[2]));
                        Console.WriteLine(s);
                    }
                    catch (InvalidOperationException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                else if (input[0] == "LoadVehicle")
                {
                    try
                    {
                        var products = input.ToList();
                        products.RemoveAt(0);



                        string s = c.LoadVehicle(products);
                        Console.WriteLine(s);
                    }
                    catch (InvalidOperationException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                else if (input[0] == "SendVehicleTo")
                {
                    try
                    {
                        string s = c.SendVehicleTo(input[1], int.Parse(input[2]), input[3]);
                        Console.WriteLine(s);
                    }
                    catch (InvalidOperationException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                else if (input[0] == "UnloadVehicle")
                {
                    try
                    {
                        string s = c.UnloadVehicle(input[1], int.Parse(input[2]));
                        Console.WriteLine(s);
                    }
                    catch (InvalidOperationException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }

                else if (input[0] == "GetSummary")
                {
                    try
                    {
                        string s = c.GetSummary();
                        Console.WriteLine(s);
                    }
                    catch (InvalidOperationException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
            }
        }
示例#23
0
        static void Main(string[] args)
        {
            StorageMaster storageMaster = new StorageMaster();

            string inputLine;

            StringBuilder sb = new StringBuilder();

            while ((inputLine = Console.ReadLine()) != END)
            {
                List <string> collection = inputLine.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();

                string command = collection[0];

                collection.RemoveAt(0);
                try
                {
                    switch (command)
                    {
                    case ADD_PRODUCT:
                        sb.AppendLine(storageMaster.AddProduct(collection[0], double.Parse(collection[1])).Trim());
                        break;

                    case REGISTERS_TORAGE:
                        sb.AppendLine(storageMaster.RegisterStorage(collection[0], collection[1]).Trim());
                        break;

                    case SELECT_VEHICLE:
                        sb.AppendLine(storageMaster.SelectVehicle(collection[0], int.Parse(collection[1])).Trim());
                        break;

                    case LOAD_VEHICLE:
                        sb.AppendLine(storageMaster.LoadVehicle(collection).Trim());
                        break;

                    case SEND_VEHICLE_TO:
                        sb.AppendLine(storageMaster.SendVehicleTo(collection[0], int.Parse(collection[1]), collection[2]).Trim());
                        break;

                    case UNLOAD_VEHICLE:
                        sb.AppendLine(storageMaster.UnloadVehicle(collection[0], int.Parse(collection[1])).Trim());
                        break;

                    case GET_STORAGE_STATUS:
                        sb.AppendLine(storageMaster.GetStorageStatus(collection[0]).Trim());
                        break;

                    default:
                        throw new EntryPointNotFoundException(Messages.InvalidInputCommand);
                    }
                }
                catch (InvalidOperationException m)
                {
                    sb.AppendLine(string.Format(Messages.Error, m.Message).Trim());
                }
            }

            sb.AppendLine(storageMaster.GetSummary());



            Console.WriteLine(sb.ToString().TrimEnd());
        }