Подсистема обеспечения устойчивости на базе JDBC Необходима для доступа к хранящимся(устойчивым, persist) данным Моделировались только операции чтения IPersistSystem: initialize() получение соединения с базой данных getBankbooks(criteria:String):BankbookList получение списка счетов по условию(SQL запросу) getOffices(criteria:String):OfficeList получение списка офисов по условию(SQL запросу) getClients(criteria:String):ClientList получение списка клиентов по условию(SQL запросу) updateClient(obj:Client):void обновление клиента в базе updateBankbook(obj:Bankbook):void обновление счета в базе updateOffice(obj:Office):void обновление информации об отделении в базе createClient():Client создание клиента в базе createOffice():Office создание отделения в базе createBankbook():Bankbook создание счета в базе deleteClient(obj:Client):void удаление клиента из базы deleteOffice(office:Office):void удаление офиса из базы deleteBankbook(bankbook:Bankbook):void удаление счета из базы Классы: Office Содержит информацию об отделении, хранимый класс Атрибуты id Int айдишник для базы number Int номер офиса name String название офиса address String адрес офиса clients ClientList список клиентов офиса bankbooks BankbookList список счетов в отделении Методы addClient(client:Client):void добавление к офису(списку clients) клиента client removeClient(client:Client):void удаление из офиса(списка clients) клиента client getClients():ClientList возвращает копию списка clients addBankbook(bankbook):void добавление к офису(списку bankbooks) счета bankbook removeBankbook(bankbook):void удаление из офиса(списка bankbooks) счета bankbook getBankbooks():BankbookList возвращает копию списка bankbooks new():void создание пустого офиса delete():void удаление пустого офиса update(properties: Map):void обновляет сведения о счете с помощью переданных значений. Ключ properties - имя атрибута, значение - новое значение атрибута. getData():String для сохранения в БД setData(data:String):void для загрузки из БД Client Содержит информацию о клиенте, хранимый класс Атрибуты id Int айдишник для базы fio String ФИО клиента в случае физлица, иначе - пусто companyName String название организации в случае юрлица, иначе - пусто formalAddress String адрес регистриции/юридический адрес factAddress String адрес проживания/фактический адрес phone String телефон клиента email String email клиента office Office офис, где зарегистрирован клиент bankbooks BankbookList список счетов клиента Методы addBankbook(bankbook):void добавление к клиенту(списку bankbooks) счета bankbook removeBankbook(bankbook):void удаление из клиента(списка bankbooks) счета bankbook getBankbooks():BankbookList возвращает копию списка bankbooks new():void создание пустого клиента delete():void удаление клиента со всеми закрытыми счетами update(properties: Map):void обновляет сведения о клиенте с помощью переданных значений. Ключ properties - имя атрибута, значение - новое значение атрибута setOffice(office:Office):void сеттер для офиса, в котором зарегистрирован клиент getData():String для сохранения в БД setData(data:String):void для загрузки из БД Bankbook Содержит информацию о счете, хранимый класс Атрибуты id Int айдишник для базы number Int номер счета openDate Date дата открытия счета balance Double баланс счета bankbookType BankBookType тип счета office Office офис, к которому прикреплен счет client Client клиент, которому принадлежит счет balanceChanges BalanceChangeList список операций изменения счета isClose Boolean показывает, закрыт ли счет Методы incBalance(value: Double):void увеличение balance на value decBalance(value: Double):void уменьшение balance на value getBalance():Double возвращает значение balance addBalanceChange(balanceChange: BalanceChange):void добавляет к balanceChanges balanceChange, характеризующий изменение счета getBalanceChanges():BalanceChangeList получение списка операций изменения счета balanceChanges getType():BankBookType получение типа счета new():void создание нового счета close():void закрытие счета с нулевым балансом getLastPlusBalanceDate():Date возвращает дату, когда в последний раз баланс был положительным. Использует balanceChanges для рассчетов setClient(client:Client):void сеттер для клиента setOffice(office:Office):void сеттер для офиса getData():String для сохранения в БД setData(data:String):void для загрузки из БД BankBookType Содерижит информацию о типе счета, хранимый счет Атрибуты id Int айдишник для базы number Int номер типа счета name String название типа счета overdraft Double максимальный овердрафт по счету overdraftDays Int максимальный срок овердрафта percentage Double проценты по счету durationForPercentaging Int период выплаты процентов в месяцах Методы getNumber():Int геттер для номера getName():String геттер для имени getOverdraft():Double геттер для величина овердрафта getOverdraftDays():Int геттер для срока овердрафта getPercentage():Double геттер для процентов getDurationForPercentaging():Int геттер для промежутка начисления процентов setNumber(number:Int):void сеттер для номера setName(name:String):void сеттер для имени setOverdraft(value:Double):void сеттер для величины овердрафта setOverdraftDays(days:Int):void сеттер для срока овердрафта setPercentage(percentage:Double):void сеттер для процентов setDurationForPercentaging(durationForPercentaging:Int):void сеттер для промежутка начисления процентов BalanceChange Содержит информацию об изменении счета, хранимый класс Атрибуты id Int айдишник для базы date Date дата совершения операции value Double величина операции(со знаком) bankbook Bankbook счет, по которому совершена операция Методы getDate():Date геттер для даты совершения операции setDate(date:Date):void сеттер для даты совершения операции getValue():Double геттер величины операции setValue(value:Double):void сеттер величины операции getBankbook():Bankbook геттер для счета setBankbook(bankbook:Bankbook):void сеттер для счета new():void конструктор для создания нового изменения счета BankbookList Список счетов Методы new():void конструктор для создания пустого списка счетов add(obj:Bankbook):void добавление счета obj к списку OfficeList Список отделений Методы new():void конструктор для создания пустого списка офисов add(obj:Office):void добавление офиса obj к списку ClientList Список клиентов Методы new():void конструктор для создания пустого списка клиентов add(obj:Client):void добавление клиента obj к списку BalanceChangeList Список изменений счета Методы new():void конструктор для создания пустого списка изменений баланса add(obj:BalanceChange):void добавление изменения баланса obj к списку PercentsProcessController Контроллер для юзкейса начисления процентов Методы processPercents():void обработка начисления процентов для всех счетов в банке EditOfficeController Контроллер для юзкейса изменения информации об офисе Методы deleteOffice(office:Office):void удаление офиса office, без зарегистрированных в нем клиентов getOffice(criteria:String):Office получение конкреьного офиса по criteria createOffice(office:Office):void создание офиса office в системе updateOffice(office:Office):void обновление информации об офисе office moveAllClientFromOfficeToOffice(officeFrom:Office, officeTo:Office):void перемещение всех клиентов и счетов из офиса officeFrom в офис officeTo getOffices():OfficeList получение списка офисов в системе createTemplateOffice():Office создание шаблонного офиса EditClientController Контроллер для юзкейса изменения информации о клиенте Методы createClient(client:Client):void создание клиента deleteClient(client:Client):void удаление клиента, у которого закрыты все счета updateClient(client:Client):void изменение клиента canBeDeleted(client:Client):Boolean проверка на то, может ли быть клиент удален getClient(client:criteria):ClientList получение списка клиентов по запросу createTemplateClient():Client создание шаблонного клиента CreateDeleteBankbookController Контроллер для юзкейса создания/закрытия счета Методы createBankbook(bankbook:Bankbook):void создание счета deleteBankbook(bankbook:Bankbook):void закрытие счета с нулевым балансом getBankbook(criteria:String):Bankbook получение счета по критерию createTemplateBankbook():Bankbook создание шаблонного счета ChangeBalanceController Контроллер для юзкейса изменения счета Методы increment(bankbook:Bankbook, value:Double):void увеличение счета bankbook на value isLegalDecrementBy(bankbook:Bankbook, value:Double):Boolean проверка на корректность уменьшения юаланса счета bankbook на величину value decrement(bankbook:Bankbook, value:Double):Boolean уменьшение баланса счета bankbook на value, Возвращает true в случае успеха getBankbook(criteria:String):BanbookList получение списка счетов по запросу criteria