Пример #1
0
 public NezarkaServer(TextReader input, TextWriter output)
 {
     _requestReader = input;
     _model         = ModelStore.LoadFrom(input);
     _view          = new ViewStore(output, _model);
     _controller    = new ControllerStore(_model, _view);
 }
Пример #2
0
        public static ModelStore LoadFrom(TextReader reader)
        {
            var store = new ModelStore();

            try {
                if (reader.ReadLine() != "DATA-BEGIN")
                {
                    return(null);
                }
                while (true)
                {
                    string line = reader.ReadLine();
                    if (line == null)
                    {
                        return(null);
                    }
                    else if (line == "DATA-END")
                    {
                        break;
                    }

                    string[] tokens = line.Split(';');
                    switch (tokens[0])
                    {
                    case "BOOK":
                        store.books.Add(new Book {
                            Id = int.Parse(tokens[1]), Title = tokens[2], Author = tokens[3], Price = int.Parse(tokens[4])
                        });
                        break;

                    case "CUSTOMER":
                        store.customers.Add(new Customer {
                            Id = int.Parse(tokens[1]), FirstName = tokens[2], LastName = tokens[3]
                        });
                        break;

                    case "CART-ITEM":
                        var customer = store.GetCustomer(int.Parse(tokens[1]));
                        if (customer == null)
                        {
                            return(null);
                        }
                        customer.ShoppingCart.Items.Add(new ShoppingCartItem {
                            BookId = int.Parse(tokens[2]), Count = int.Parse(tokens[3])
                        });
                        break;

                    default:
                        return(null);
                    }
                }
            } catch (Exception ex) {
                if (ex is FormatException || ex is IndexOutOfRangeException)
                {
                    return(null);
                }
                throw;
            }

            return(store);
        }
Пример #3
0
 public ControllerStore(ModelStore model, ViewStore view)
 {
     _model = model;
     _view  = view;
 }
Пример #4
0
 public ViewStore(TextWriter output, ModelStore model)
 {
     _output = output;
     _model  = model;
 }