コード例 #1
0
 public void execute(BankWindow bankWindow)
 {
     if (bankWindow.getCurrentOperation().getTimeOperation() != 0)
     {
         bankWindow.getCurrentOperation().doOperation();
     }
     else
     {
         switch (bankWindow.getClient().getNumberOperation())
         {
             case Credit.CREDIT: bankWindow.setCountCredits(bankWindow.getCountCredits() + 1); break;
             case Deposit.DEPOSIT: bankWindow.setCountDeposits(bankWindow.getCountDeposits() + 1); break;
             case Card.CARD: bankWindow.setCountCards(bankWindow.getCountCards() + 1); break;
             case Transfer.TRANSFER: bankWindow.setCountTransfers(bankWindow.getCountTransfers() + 1); break;
             case Payment.PAYMENT: bankWindow.setCountPayments(bankWindow.getCountPayments() + 1); break;
         }
         bankWindow.setCountAllOperations(bankWindow.getCountAllOperations() + 1);
         bankWindow.setClient(null);
         bankWindow.setCurrentOperation(null);
         if(bankWindow.isBreak == true)
         {
             bankWindow.setState(new BankWindowBreakState());
             bankWindow.isBreak = false;
         }
         else
             bankWindow.setState(new BankWindowFreeState());
     }
 }
コード例 #2
0
 protected override BankWindow createOperations(int number, OperationManager manager)
 {
     OperationFactory factory = new OperationFactory();
     BankWindow bankWindow = new BankWindow(number, manager);
     Random r = new Random();
     List<int> operations = new List<int>();
     int count = r.Next(1, NUMBER_OF_OPERATION + 1);
     while (true)
     {
         bool flag = true;
         int numberOperation = r.Next(1, NUMBER_OF_OPERATION + 1);
         for (int k = 0; k < operations.Count; k++)
         {
             if (numberOperation == operations[k])
                 flag = false;
         }
         if (flag)
         {
             bankWindow.addOperation(factory.createOperation(numberOperation));
             operations.Add(numberOperation);
             count--;
         }
         if (count == 0) break;
     }
     return bankWindow;
 }
コード例 #3
0
 protected override BankWindow createOperations(int number, OperationManager manager)
 {
     OperationFactory factory = new OperationFactory();
     BankWindow bankWindow = new BankWindow(number, manager, new BankWindowFreeState());
     bankWindow.addOperation(factory.createOperation(Transfer.TRANSFER));
     bankWindow.addOperation(factory.createOperation(Payment.PAYMENT));
     return bankWindow;
 }
コード例 #4
0
 protected override BankWindow createOperations(int number)
 {
     OperationFactory factory = new OperationFactory();
     BankWindow bankWindow = new BankWindow(number, new BankWindowFreeState());
     bankWindow.addOperation(factory.createOperation(Credit.CREDIT));
     bankWindow.addOperation(factory.createOperation(Deposit.DEPOSIT));
     return bankWindow;
 }
コード例 #5
0
 protected override BankWindow createOperations(int number)
 {
     OperationFactory factory = new OperationFactory();
     BankWindow bankWindow = new BankWindow(number, new BankWindowFreeState());
     bankWindow.addOperation(factory.createOperation(Deposit.DEPOSIT));
     bankWindow.addOperation(factory.createOperation(Card.CARD));
     bankWindow.addOperation(factory.createOperation(Transfer.TRANSFER));
     return bankWindow;
 }
コード例 #6
0
 protected override BankWindow createOperations(int number, OperationManager manager)
 {
     OperationFactory factory = new OperationFactory();
     BankWindow bankWindow = new BankWindow(number, manager);
     bankWindow.addOperation(factory.createOperation(Credit.CREDIT));
     bankWindow.addOperation(factory.createOperation(Deposit.DEPOSIT));
     bankWindow.addOperation(factory.createOperation(Card.CARD));
     bankWindow.addOperation(factory.createOperation(Transfer.TRANSFER));
     bankWindow.addOperation(factory.createOperation(Payment.PAYMENT));
     return bankWindow;
 }
コード例 #7
0
ファイル: Bank.cs プロジェクト: SergeyStaroletov/Patterns15
        public Bank()
        {
            //this.listBankWindows = new List<BankWindow>();
            this.clientQueue = new ClientQueue();
            this.periodTimer = 1000;
            this.numberOfNewClients = 0;
            this.timer = new Timer(periodTimer);
            this.timer.Elapsed += OnTimedEvent;
            this.countBankWindows = 0;
            this.nameClients = new List<string>();
            string line;
            System.IO.StreamReader file = new System.IO.StreamReader(@"nameClients.txt",System.Text.Encoding.Default);
            while ((line = file.ReadLine()) != null)
            {
                this.nameClients.Add(line);
            }
            file.Close();

            bankWindows = new BankWindowComposite();
            BankWindowComponent one = new BankWindowComposite();
            BankWindowComponent two = new BankWindowComposite();
            BankWindowComponent three = new BankWindowComposite();

            BankWindowComponent oneWindow = new BankWindow(1);
            oneWindow.addOperation(new Credit());
            oneWindow.addOperation(new Deposit());
            bankWindows.add(oneWindow);
            bankWindows.add(one);

            BankWindowComponent twoWindow = new BankWindow(2);
            twoWindow.addOperation(new Credit());
            twoWindow.addOperation(new Deposit());
            twoWindow.addOperation(new Card());
            BankWindowComponent threeWindow = new BankWindow(3);
            threeWindow.addOperation(new Payment());
            threeWindow.addOperation(new Transfer());
            threeWindow.addOperation(new CurrencyExchangeAdapter(new CurrencyExchange()));
            one.add(twoWindow);
            one.add(threeWindow);
            one.add(two);

            BankWindowComponent fourWindow = new BankWindow(4);
            fourWindow.addOperation(new Deposit());
            fourWindow.addOperation(new Transfer());
            two.add(fourWindow);
            two.add(three);

            BankWindowComponent fiveWindow = new BankWindow(5);
            fiveWindow.addOperation(new Deposit());
            fiveWindow.addOperation(new Transfer());
            fiveWindow.addOperation(new Card());
            three.add(fiveWindow);
        }
コード例 #8
0
 public void build(BankWindowCreator creator, int number, OperationManager manager)
 {
     bankWindow = creator.createWindow(number, manager);
     List<IOperation> operations = bankWindow.getProcessOperation();
     for (int i = 0; i < operations.Count; i++)
     {
         switch (operations[i].getNumberOperation())
         {
             case Credit.CREDIT: operations[i].setNameOperation("Credits"); break;
             case Deposit.DEPOSIT: operations[i].setNameOperation("Deposits"); break;
             case Card.CARD: operations[i].setNameOperation("Cards"); break;
             case Transfer.TRANSFER: operations[i].setNameOperation("Transfers"); break;
             case Payment.PAYMENT: operations[i].setNameOperation("Payments"); break;
         }
     }
     bankWindow.setBuilder(new EngBuilder());
 }
コード例 #9
0
 public BankWindow(BankWindow bw)
 {
     this.number = bw.number;
     this.processOperation = new List<IOperation>();
     List<IOperation> oper = bw.getProcessOperation();
     for (int k = 0; k < oper.Count; k++)
     {
         this.addOperation(oper[k]);
     }
     if(bw.getClient() != null)
         this.client = new Client(bw.client);
     if (bw.getCurrentOperation() != null)
     {
         switch (bw.currentOperation.getNumberOperation())
         {
             case Credit.CREDIT: this.currentOperation = new Credit(); break;
             case Deposit.DEPOSIT: this.currentOperation = new Deposit(); break;
             case Card.CARD: this.currentOperation = new Card(); break;
             case Transfer.TRANSFER: this.currentOperation = new Transfer(); break;
             case Payment.PAYMENT: this.currentOperation = new Payment(); break;
         }
         this.currentOperation.setTimeOperation(bw.currentOperation.getTimeOperation());
     }
     this.manager = new OperationManager(bw.manager);
     if(bw.state.GetType() == typeof(BankWindowBusyState))
     {
         this.state = new BankWindowBusyState();
     }
     else
         if (bw.state.GetType() == typeof(BankWindowFreeState))
         {
             this.state = new BankWindowFreeState();
         }
         else
             if (bw.state.GetType() == typeof(BankWindowBreakState))
             {
                 this.state = new BankWindowBreakState();
             }
     this.isBreak = bw.isBreak;
     this.countAllOperations = bw.countAllOperations;
     this.countCredits = bw.countCredits;
     this.countDeposits = bw.countDeposits;
     this.countCards = bw.countCards;
     this.countTransfers = bw.countTransfers;
     this.countPayments = bw.countPayments;
 }
コード例 #10
0
ファイル: Bank.cs プロジェクト: SergeyStaroletov/Patterns15
 //добавление окна
 public void addBankWindow(List<string> operations)
 {
     this.countBankWindows++;
     BankWindow bankWindow = new BankWindow(this.countBankWindows);
     for (int i = 0; i < operations.Count; i++)
     {
         switch(operations[i])
         {
             case Credit.CREDIT: bankWindow.addOperation(new Credit()); break;
             case Deposit.DEPOSIT: bankWindow.addOperation(new Deposit()); break;
             case Card.CARD: bankWindow.addOperation(new Card()); break;
             case Transfer.TRANSFER: bankWindow.addOperation(new Transfer()); break;
             case Payment.PAYMENT: bankWindow.addOperation(new Payment()); break;
         }
     }
     this.listBankWindows.Add(bankWindow);
 }
コード例 #11
0
ファイル: Bank.cs プロジェクト: SergeyStaroletov/Patterns15
        public Bank(Bank bank)
        {
            this.manager = new OperationManager(bank.manager);
            this.listBankWindows = new List<BankWindow>();
            for (int i = 0; i < bank.countBankWindows; i++)
            {
                BankWindow bw = new BankWindow(bank.listBankWindows[i]);
                bw.setManager(this.manager);
                this.listBankWindows.Add(bw);
            }

            this.clientQueue = new ClientQueue(bank.clientQueue);
            this.timer = new Timer(bank.periodTimer);
            this.periodTimer = bank.periodTimer;

            this.timer.Elapsed += OnTimedEvent;
            this.numberOfNewClients = bank.numberOfNewClients;
            this.countBankWindows = bank.countBankWindows;
            this.nameClients = bank.nameClients;
            //this.timerActive = bank.timerActive;
        }
コード例 #12
0
 public void execute(BankWindow bankWindow)
 {
 }
コード例 #13
0
 public void build(BankWindowCreator creator, int number, OperationManager manager)
 {
     bankWindow = creator.createWindow(number, manager);
     bankWindow.setBuilder(new RusBuilder());
 }