н і параметри актуальних завдань без збереження їх на файлову систему; на відміну ?? т сховища завдань шару «Модель» (див п. 4.1.1 пп. 3) використовується в поточній роботі із завданнями, тобто всі користувачі модуля контролера завдань працюють саме з копією завдання у тимчасовому сховищі; це дозволяє проводити оновлення постійної копії задачі та її результатів непомітно для клієнтів модуля і виробляти швидке перемикання вмісту завдання при його оновленні;
монітор стану завдань - відстежує зміну стану завдань в черзі завдань серверного компонента (див. п. 3.3 пп 3), при виявленні зміни нотифікує сутність актуализатора завдань про зміну стану завдання;
актуалізатор завдань - при отриманні нотифікації про зміну стану завдання запрошувати оновлення стану задачі (використовуючи клієнтську бібліотеку) і оновлює задачу і результати в сховище завдань (див п. 4.1.1 пп. 3); обчислює зміни у вмісті завдання, оновлює робочу копію завдання у тимчасовому сховищі і повідомляє передплатників про виявлені зміни в задачі;
інтерфейс передплатника на повідомлення про зміну стану завдання - реалізується всіма сутностями, яким потрібна відстежувати зміни стану завдання.
Шар «Вид»
Шар складається з модулів графічного інтерфейсу користувача: модуль основного вікна, модуль меню і модулі вікон, створюваних по запитах з меню.
Взаємодія і призначення всіх сутностей даного шару докладно розглянуто і описано в підрозділ. 2.3, тому розгляд складу цих модулів сенсу не має.
.2 Реалізація шару «Модель» клієнтського компонента
Як і в описі реалізації серверного компонента для стислості викладу наведені тільки сигнатури класів (інтерфейсів), повний вихідний текст програмного комплексу наведений у додатку 2.
Модуль сховища налаштувань представлений наступними класами:
Клас надає статичні методи для отримання настройок у вигляді обгортки над XML-документом, а також для збереження цих налаштувань в сховище. Кожен екземпляр документа з настройками доступний за своїм імені (файлу).
package client.model; class RepositoryUtils {final static String REPOSITORY_PATH_ENVIRONMENT_VARIABLE= sustaining.suite.repository.path raquo ;; static final String REPOSITORY_SUFFIX= .repository.xml raquo ;; static final String REPOSITORY_TAG= repository raquo ;; static String sRepositoryDirectoryPath; static Map lt; String, Params gt; sRepositories=new HashMap lt; String, Params gt; (); synchronized static String getRepositoryDirectoryPath () static Params getRepository (String repositoryName) static Params loadRepositoryFromFile (String repositoryName) static void persistRepository (String repositoryName, Params newRepositoryContent)
}
Клас надає методи для доступу до налаштувань клієнта в об'єктному вигляді, в тому числі виробляє перетворення налаштувань клієнтського компонента з об'єктного виду в деревовидний вид документа XML і назад.
package client.model; class ClientContext {static final String CONNECTIONS_REPOSITORY= clusters.connections raquo ;; static final String CONNECTION_TAG= connection raquo ;; static final String CONNECTION_NAME= name raquo ;; static final String CONNECTION_ADDRESS= address raquo ;; static final String CONNECTION_LOGIN= login raquo ;; static Map lt; String, ConnectionParams gt; connectionsParams=null; static Map lt; String, ConnectionParams gt; getConnectionsParams () static boolean updateConnectionsParams (ConnectionParams existingConnectionParams, ConnectionParams newConnectionParams) throws ClientContextException
private static void persistConnectionsParams ()
}
Виняток специфічного типу, призначене для позначення помилки при роботі з контекстом клієнтського компонента.
package client.model; class ClientContextException extends Exception {ClientContextException (String message)
}
Модуль контексту з'єднання з СГД Centera представлений наступними класами:
Клас контексту сполуки, за своєю суттю є об'єктом - сховищем властивостей, що відносяться до поточного стану з'єднання з серверним компонентом (методи установки і отримання значень полів опущені).
package client.model; class ConnectionContext {enum State {(false), (true), (false); final boolean isConnected; State (boolean isConnected) boolean isConnected ()
}; ConnectionParams connectionParams; String password; State state; String centrastarVersion; SessionContext sessionContext; Collection lt; Node gt; nodes;
...
Клас параметрів з'єднання з кластером.
package client.model; class ConnectionParams {
private String connectionName;
private String address;
private String login;
public ConnectionParams (String connectionName, String clusterAddress, String login) String getConnectionName ()
public String getAddress ()
public String getL...