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."); }
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); } } }