Esempio n. 1
0
        protected virtual string ExecuteCreateCommand(string[] cmdArgs)
        {
            string objType = cmdArgs[0];

            switch (objType)
            {
            case "Apartment":
                var apartment = (IApartment)EstateFactory.CreateEstate(EstateType.Apartment);
                LoadEstateProperties(apartment, cmdArgs);
                apartment.Rooms       = int.Parse(cmdArgs[5]);
                apartment.HasElevator = bool.Parse(cmdArgs[6]);
                AddEstate(apartment);
                break;

            case "Office":
                var office = (IOffice)EstateFactory.CreateEstate(EstateType.Office);
                LoadEstateProperties(office, cmdArgs);
                office.Rooms       = int.Parse(cmdArgs[5]);
                office.HasElevator = bool.Parse(cmdArgs[6]);
                AddEstate(office);
                break;

            case "House":
                var house = (IHouse)EstateFactory.CreateEstate(EstateType.House);
                LoadEstateProperties(house, cmdArgs);
                house.Floors = int.Parse(cmdArgs[5]);
                AddEstate(house);
                break;

            case "Garage":
                var garage = (IGarage)EstateFactory.CreateEstate(EstateType.Garage);
                LoadEstateProperties(garage, cmdArgs);
                garage.Width  = int.Parse(cmdArgs[5]);
                garage.Height = int.Parse(cmdArgs[6]);
                AddEstate(garage);
                break;

            case "RentOffer":
                var rentOffer = (IRentOffer)EstateFactory.CreateOffer(OfferType.Rent);
                rentOffer.Estate        = FindEstateByName(cmdArgs[1]);
                rentOffer.PricePerMonth = decimal.Parse(cmdArgs[2]);
                AddOffer(rentOffer);
                break;

            case "SaleOffer":
                var saleOffer = (ISaleOffer)EstateFactory.CreateOffer(OfferType.Sale);
                saleOffer.Estate = FindEstateByName(cmdArgs[1]);
                saleOffer.Price  = decimal.Parse(cmdArgs[2]);
                AddOffer(saleOffer);
                break;

            default:
                throw new NotImplementedException("Unknown object to create: " + objType);
            }
            return(objType + " created.");
        }
Esempio n. 2
0
        static void Main()
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;

            IEstateEngine estateEngine = EstateFactory.CreateEstateEngine();

            while (true)
            {
                string commandLine = Console.ReadLine();
                if (commandLine == null || commandLine == "end")
                {
                    // End of command sequence reached
                    break;
                }
                if (commandLine != "")
                {
                    string[] commandTokens = commandLine.Split(' ');
                    string   cmd           = commandTokens[0];
                    string[] cmdArgs       = (commandTokens.Skip(1)).ToArray();
                    string   cmdResult     = estateEngine.ExecuteCommand(cmd, cmdArgs);
                    Console.WriteLine(cmdResult);
                }
            }
        }