note
.pdf41 КП-02068195-341-07-14
void setEmail(java.lang.String email) - Задание электронного адреса делового партнера.
void setFamilyName(java.lang.String familyName) - Задание фамилии делового партнера.
void setFirstName(java.lang.String fname) - Задание имени делового партнера.
void setOrganization(java.lang.String org) - Задание организации, которой принадлежит деловой партнер.
3.9.1.4 acquaintance.IAOutMessage
Интерфейс IAOutMessage представляет исходящие сообщения от компании к различным
деловым партнерам.
Методы интерфейса:
IAContact getContact() - Получение делового партнера для этого исходящего сообщения.
java.sql.Date getCreationDate() - Получение даты создания исходящего сообщения.
IAEmployee getCreatorEmployee() - Извлечение служащего, который первоначально создал это исходящее сообщение.
int getMessagelD() - Получение идентификатора исходящего сообщения.
String getMessageText() - Получение содержимого исходящего сообщения.
IAEmployee getSenderEmployee() - Извлечение служащего, который отвечает за передачу этого исходящего сообщения.
java.sql.Date getSentDate() - Получение даты передачи этого исходящего сообщения.
java.lang.String getSubject() - Получение темы исходящего сообщения.
|
void |
setContact(IAContact contact) - Задание делового партнера для данного исходящего |
сообщения. |
|
|
|
void |
setCreationDate(java.sql.Date date) - Задание даты создания этого исходящего |
сообщения. |
|
void setCreatorEmployee(IAEmployee emp) - Задание служащего, который создает это сообщение.
void setMessagelD(int id) - Задание идентификатора исходящего сообщения.
void setMessageText(java.lang.String text) - Задание текста исходящего сообщения.
void setSenderEmployee(IAEmployee emp) - Задание служащего, который отвечает за передачу этого исходящего сообщения.
void setSentDate(java.sql.Date date) - Задание даты передачи этого сообщения.
void setSubject(java.lang.String subject) - Задание темы исходящего сообщения.
3.9.1.5 presentation.PMain
Класс PMain (основной).
42 КП-02068195-341-07-14
Методы класса:
PMain() - Конструирует объект PMain в начале работы приложения.
void main(java.lang.String[] args) - Основной метод - начало работы приложения.
3.9.1.6 presentation.PСоnsоlе
Класс PСоnsоlе (консоль) представляет консольное окно, которое итерация 1 предоставляет
пользователю, чтобы взаимодействовать с приложением.
|
Методы класса: |
|
|
|
|
PConsole () - Создание |
нового |
консольного |
объекта. |
||
|
PConsole(CActioner |
actioner) |
- Создание |
нового консольного объекта для заданного |
|
исполнителя. |
|
|
|
|
|
|
void |
display(java.lang.String |
s) - Отображение строки на экране. |
||
|
void |
displayConfirmation() - Сообщение по электронной почте успешно передано, |
|||
информирование об этом |
пользователя. |
|
void displayEmailFailure(java.lang.String msg) - Неудачная попытка передачи сообщения по электронной почте.
void displayLogin() - Отображение экрана для ввода регистрационного имени и организация цикла, пока пользователь правильно введет это имя или пока не будет превышено допустимое число попыток.
boolean displayLoginError(java.lang.Object status) - Информирование пользователя о неправильном вводе регистрационного имени.
|
void |
displayMenu() - Отображение главного меню приложения. |
|
void |
displayMessages(Java.util.Collection msgs, boolean detail) – Ото-бражение сведений |
об исходящем сообщении на экран и, если переменная detail установлена, выводится также и тело исходящего сообщения.
void displayMessageText(java.lang.String input) - Отображение содержимого
исходящего сообщения.
java.lang.Object getUserInput(java.lang.String[] prompts) - Получение входной информации от пользователя в соответствии с текущим состоянием программы.
boolean prepareMessage(java.lang.String msgID) - Подготовка исходящего сообщения,
заданного своим MsgID, для отправки.
java.lang.String readlnput() - Чтение входной строки.
void tooManyMessages(int num) - Сообщение, что имеется слишком много исходящих сообщений, чтобы их можно было вывести на экран. Не все они извлечены из БД.
void viewMessages() - Просмотр списка непосланных сообщений.
43 КП-02068195-341-07-14
|
Поля класса: |
|
|
BufferedReader |
in; |
|
PrintStream |
out; |
String VIEW_MESSAGE = "1";
String VIEWJTEXT_MESSAGE = "2";
String SEND_MESSAGE = "3";
String QUIT = "4";
int LOGIN_STATE = 1 - Запрос информации о регистрационном имени.
int NORMAL_STATE = 2 - Отображение меню и запрос выбора пользователя.
int state - Состояние, в котором мы находимся.
CActioner actioner - Ассоциация со слоем control.
3.9.1.7 control.CActioner
Класс CActioner (исполнитель) инкапсулирует все операции, известные в итерации 1.
Методы класса:
CActioner() - Создание нового объекта класса CActioner.
CActioner(MBroker broker) - Создание нового объекта класса CActioner с заданием объекта класса MBroker.
void exit() - Завершение приложения.
IAEmployee getEmployee() - Извлечение текущего зарегистрированного служащего.
void handleEmailException(java.lang.Exception exc)
java.lang.Object login (java.lang.String username, java.lang.String passwd) - Регистрация пользователя с заданными пользовательским именем и паролем.
void logout() - Удаление пользователя без завершения приложения.
IAOutMessage retrieveMessage(int id) - Извлечение исходящего сообщения по его идентификатору.
int retrieveMessages(java.util.Collection msgs, int numMsgs) - Извлечение numMsgs
непосланных исходящих сообщений в msgs (список сообщений).
boolean |
send(java.lang.String from, |
java.lang.String to, java.lang.String |
subject, |
java.lang.String body) - Послать сообщение.
boolean sendMessage(IAOutMessage msg) - Послать сообщение и скорректировать БД в случае успешной передачи.
boolean sendMessage(IAOutMessage msg, java.lang.String from, java.lang.String to, java.lang.String subject, java.lang.String body) - Послать сообщение и скорректировать его в случае успешной передачи.
44 КП-02068195-341-07-14
Поля класса:
Object LOGINJDK = "LOGIN OK" - Регистрационное имя правильное;
Object LOGIN_FAIL_1 = "LOGIN FAIL 1" - Первая попытка при неправильном регистрационном имени;
Object LOGIN_FAIL_2 = "LOGIN FAIL 2" - Вторая попытка при неправильном регистрационном имени;
Object LOGIN_FAIL_3 = "LOGIN FAIL 3" - Заключительная попытка при неправильном регистрационном имени;
int MAX_LOGIN__TRY = 3 - Разрешено максимальное число попыток неправильного ввода регистрационного имени перед завершением программы;
MBroker broker - Ассоциация с посредником;
IAEmployee emp - Единственный объект EEmployee, который мы имеем;
int loginTry = 0 - Пока выполняются попытки ввести регистрационное имя;
3.9.1.8 domain.entity.IEDataSupplier
Интерфейс IEDataSupplier (источник данных) отвечает за предоставление данных объектам-
сущностям и за обеспечение для них возможности поддерживать связи ассоциации друг с другом.
В результате этого объекты-сущности, находясь в кэше памяти, представляют точный снимок подмножества состояния БД. Интерфейс IEDataSupplier обеспечивает также разъединение пакетов entity и mediator, чтобы устранить циклическую зависимость. Интерфейс реализован классом MBroker из пакета mediator и используется всеми тремя классами пакета entity.
Методы интерфейса:
|
IAContact |
getContact(int contactOID) - He может использоваться извне, |
только для |
||||||
классов пакета entity. |
|
|
|
|
|
|
|||
|
IAEmployee |
getEmployee(int |
empOID) - He может использоваться извне, |
только для |
|||||
классов пакета entity. |
|
|
|
|
|
|
|||
|
int |
retrieveUnsentMessages(IAContact |
contact, |
java.util.Collection |
msgs, |
int |
|||
numMsgRetrieve) - Извлечение числа numMsgRetrieve (число извлеченных сообщений) |
исходящих |
||||||||
сообщений |
для |
конкретного contact |
(деловой партнер) и размещение их в коллекции msgs |
||||||
(сообщения). |
|
|
|
|
|
|
|
|
|
|
int |
retrieveUnsentMessages(IAEmployee |
emp, |
java.util.Collection |
msgs, |
int |
numMsgRetrieve) - Извлечение числа numMsgRetrieve исходящих сообщений для конкретного emp и размещение их в коллекции msgs.
45 КП-02068195-341-07-14
3.9.1.9 domain.entity.EContact
Класс EContact (партнер) поддерживает связи ассоциации ко всем исходящим сообщениям
(объекты EOutMessage), адресованным ему и загруженным в настоящее время в память.
Класс EContact реализует интерфейс acquaintance.IAContact (партнёр).
|
Поля класса: |
|
|
java.lang.String |
contactID |
|
java.lang.String |
|
|
java.lang.String |
familyName |
|
java.lang.String |
firstName |
|
java.util.Collection |
msgs |
|
int |
OID |
|
java.lang.String |
organization |
IEDataSupplier ref
Методы класса:
|
EContact(IEDataSupplier ref) - Простой конструктор, используемый по |
умолчанию. |
|||
|
java.util.Collection |
getUnsentOutMessages(int |
numMsgToBeRetrieved) - |
Получение всех |
|
сообщений, предназначенных для данного партнера. |
|
|
|||
|
void |
removeSentOutMessage(IAOutMessage |
msg) - Удаление |
сообщения, |
|
предназначенного для |
данного партнера, по-видимому, из-за того, что оно уже послано. |
3.9.1.10 domain.entity.Eemployee
Класс Eemployee (служащий) поддерживает связи ассоциации ко всем исходящим сообщениям (объекты EOutMessage — класс «исходящее сообщение» пакета entity), назначенным ему и в текущий момент загруженным в память.
Объект-клиент может извлечь исходящие сообщения в соответствии с различными критериями, такими как запрос объекта EEmployee относительно его исходящих сообщений,
запрос объекта EContact для определения адресованных к нему исходящих со-общений или запрос объекта MBroker для нахождения требуемых исходящих сообщений.
Класс Eemployee реализует интерфейс acquaintance.IAEmployee.
|
Поля класса: |
|
|
java.lang.String |
|
|
java.lang.String |
employeelD |
|
java.lang.String |
familyName |
|
java.lang.String |
firstName |
|
java.lang.String |
loginName |
46 КП-02068195-341-07-14
|
java.util.Collection |
msgs |
|
int |
OID |
IEDataSupplier ref
Методы класса:
EEmployee(IEDataSupplier ref) - Простой конструктор, используемый по умолчанию.
Java.util.Collection getUnsentOutMessages(int maxMsgsRetrieve) - Получение всех
сообщений (вплоть до numMsgRetrieve – число извлекаемых сообщений), предназначенных данному служащему.
void removeSentOutMessage(IAOutMessage msg) - Удаление сообщения из этого списка
для служащего, по-видимому, из-за того, что оно уже послано.
3.9.1.11 domain.entity.EOutMessage
Класс EOutMessage (исходящее сообщение) реализует интерфейс acquaintance.IAOutMessage.
Каждый объект EOutMessage поддерживает связи ассоциации с EEmployee и EContact, если эти объекты в настоящее время загружены в память.
В итерации 1 служащий, который создает исходящее сообщение (creator_emp_id —
идентификатор служащего-создателя в таблице OutMessage), также отвечает и за передачу по электронной почте этого исходящего сообщения. После передачи сообщения столбцы sender_emp_id (идентификатор служащего-отправителя) и date_emailed (дата отправки сообщения по электронной почте) в таблице OutMessage обновляются.
|
Поля класса: |
|
|
IAContact |
contact |
|
int |
contactOID |
|
java.sql.Date |
creationDate |
|
IAEmployee |
creator |
|
int |
creatorOID |
|
int |
messagelD |
|
java.lang.String messageText |
|
|
int |
OID |
|
IEDataSupplier ref |
|
|
IAEmployee |
sender |
|
int |
senderOID |
|
java.sql.Date |
sentDate |
java.lang.String subject
Методы класса:
47 КП-02068195-341-07-14
EOutMessage(IEDataSupplier ref) - Простой конструктор, используемый по умолчанию.
IAContact getContact() - Получение делового партнера для этого сообщения.
IAEmployee getCreatorEmployee() - Извлечение сотрудника, кто первоначально создал это сообщение.
IAEmployee getSenderEmployee() - Извлечение сотрудника, который уполномочен послать сообщение.
|
void |
setContact(IAContact contact) - Позволяет задать делового партнера. |
|
|
void |
setCreatorEmployee(IAEmployee emp) - Задание сотрудника, который |
создает |
сообщение.
void setSenderEmployee(IAEmployee emp) - Задание сотрудника, который уполномочен
отправить сообщение.
3.9.1.12 domain.mediator.MBroker
Класс MBroker (посредник) соединяет и разделяет три пакета (control, entity и foundation),
чтобы ликвидировать неприятные зависимости. MBroker осведомлен об объектах пакета entity, в
настоящее время находящихся в кэше памяти. Он отвечает за извлечение данных из результатов
SQL-запросов (уровня foundation) и за поддержание основной логики создания компонентов пакета entity. MBroker управляет передачей данных строк таблиц (результатов запроса) в объекты пакета entity и наоборот.
Класс MBroker реализует интерфейс acquaintance.IAConstants (константы).
|
Поля класса: |
|
|
FConnection |
connection - Связь, используемая читающим/записывающим объектом. |
|
java.util.Map |
contacts - Кэш деловых партнеров. |
|
boolean |
dirty - Вызывает необходимость повторного извлечения кэша. |
|
оava.util.Map |
emps - Кэш сотрудников. |
|
java.util.Map |
msgs - Кэш сообщений. |
|
FReader |
reader - Объект чтения БД. |
|
int |
remainder - Количество сообщений, оставшихся в БД. |
FWriter writer - Объект записи в БД.
Методы класса:
MBroker() - Конструктор посредника.
|
MBroker(FConnection |
connection) - Создание нового брокера с конкретной связью. |
|
|
IAContact |
createContact() - Создание нового объекта делового партнера. |
|
|
IAEmployee |
createEmployee() - Создание нового объекта сотрудника. |
|
|
IAOutMessage |
createOutMessage() - Создание нового объекта исходящего сообщения. |
48 КП-02068195-341-07-14
|
java.util.Collection |
doRetrieveMessagesAndContacts(IAContact contact, int |
numMsgs) - |
|||||
Выполнение извлечения исходящих сообщений из БД. |
|
|
|
|||||
|
IAOutMessage |
doRetrieveUnsentMessageAndContact (IAEmployee |
em, |
int msgID) - |
||||
Выполнение извлечения сообщения с конкретным msgID непосредственно из |
БД. |
|
||||||
|
java.util.Collection doRetrieveUnsentMessagesAndContacts(IAEmployee emp, int numMsgs) - |
|||||||
Выполнение извлечения непосланных исходящих сообщений из |
БД. |
|
|
|||||
|
void |
flagCachef() |
- Изменение флага, указывающего, |
является ли |
кэш |
пакета entity |
||
«измененным». |
|
|
|
|
|
|
||
|
IAContact |
getContact(int |
contactOID) - Извне не используется, только для классов |
|||||
пакета entity. |
|
|
|
|
|
|
|
|
|
IAEmployee |
getEmployee(int |
empOID) - Извне не используется, только для классов пакета |
|||||
entity. |
|
|
|
|
|
|
|
|
|
int |
getOID(java.lang.Object |
o) - Создание идентификатора объекта для заданного |
|||||
объекта. |
|
|
|
|
|
|
|
IAOutMessage getOutMessageFromCache(int msgID) - Удаление исходящего сообщения из кэша, если такое уже там есть.
boolean isDirty() - Находится ли флаг кэша в состоянии «измененный»?
boolean isInCache(java.lang.Integer msgID) - Находится ли исходящее сообщение уже в кэше?
IAEmployee login(java.lang.String username, java.lang.String passwd) - Получение регистрационного имени и возвращение деталей служащего.
void logout() - Отмена регистрации пользователя, очистка всех связей.
|
IAContact |
mapContact(java.sql.ResultSet |
rs) - |
Размещение |
строки |
данных |
о |
деловом партнере |
в EContact. |
|
|
|
|
|
|
|
IAEmployee |
mapEmployee(java.sql.ResultSet |
rs) |
- Размещение строки |
данных |
о |
|
сотруднике в EEmployee. |
|
|
|
|
|
||
|
IAOutMessage |
mapOutMessage(java.sql.ResultSet |
rs) - Размещение строки данных об |
||||
исходящем сообщении в EOutMessage. |
|
|
|
|
|
java.util.Collection mapOutMessages(java.sql.ResultSet rs, int numRetrieve) - Извлечение только numRetrieve сообщений из результирующего набора.
void retrieveContacts(java.util.Collection msgs) - Извлечение деловых партнеров для данных сообщений.
IAOutMessage retrieveUnsentMessage(IAEmployee emp, int msgID) - Извлечение одного сообщения либо из кэша, либо непосредственно из БД.
49 КП-02068195-341-07-14
int retrieveUnsentMessages(IAEmployee emp, java.util.Collection msgs, int numMsgs) -
Извлечение недосланных исходящих сообщений из кэша или БД.
boolean updateMessage(int msgID) - Индикация, что сообщение было послано.
3.9.1.13 foundation.FConnection
Класс FConnection (соединение) выполняет типичные задачи по установлению соединения с БД. Он использует возможности классов FReader и FWriter (пакета foundation), чтобы соответственно выполнить поиск в БД или модифицировать ее.
|
Поля класса: |
|
|
java.sql.Connection |
conn |
|
java.lang.String |
dbDriver |
|
java.lang.String |
dbUrl |
|
Freader |
reader |
|
FWriter |
writer |
|
Методы класса: |
|
FConnection (java.lang.String driver, java.lang.String dbUrl) - Конструирование нового объекта FConnection.
void close() - Закрыть соединение.
boolean connect(java.lang.String username, java.lang.String passwd) - Получить соединение с БД, используя данные username и passwd. Если связь успешно установлена, но существует старая связь, старая связь будет закрыта и заменена новой связью.
FReader getReader() - Установить реализацию чтения по умолчанию, поддерживаемую этим соединением.
FWriter getWriter() - Установить реализацию записи по умолчанию, поддерживаемую этим соединением.
boolean isConnected() - Установлено ли соединение с БД?
3.9.1.14 foundation.FReader
Класс FReader (чтение) отвечает за выполнение строк SQL-запросов, возвращение множества результатов клиенту и зачистку множества результатов после того, как они были
обработаны. |
|
|
|
|
Методы класса: |
|
|
|
FReader(java.sql.Connection conn) |
- Создание объекта FReader для представленного |
|
соединения. |
|
|
|
|
void |
closeResult(java.sql.ResultSet |
rs) - MBroker вызывает этот метод после передачи |
множества результатов.
50 КП-02068195-341-07-14
|
java.sql.ResultSet |
query(java.lang.String |
sql) - Запрос к БД на основе строки |
SQL. |
|
|
void |
setConnection(java.sql.Connection |
conn) - Изменение соединения для |
этого |
объекта.
3.9.1.15 foundation.FWriter
Класс FWriter (запись) ответствен за выполнение строки корректировки SQL, переданной ему объектом MBroker, и зачистку множества результатов после того, как они были обработаны.
Методы класса:
FWriter(Java.sql.Connection conn) - Создание объекта FWriter, который записывает все изменения и новые данные с помощью переданного соединения.
void closeStatement(java.sql.PreparedStatement st)
void |
setConnection(java.sql.Connection conn) - Изменение соединения для этой |
записи. |
|
java.sql.PreparedStatement update(java.lang.String sql)
3.9.2Диаграмма классов
Диаграмма классов первой итерации приведена на Рис. 3.6.