Показаны сообщения с ярлыком CesarObject. Показать все сообщения
Показаны сообщения с ярлыком CesarObject. Показать все сообщения

четверг, 5 марта 2009 г.

Менеджер объектов CesarObject - Manager

Наконец то закончил и первично оттестировал менеджер объектов.
Краткое описание:
public class Manager
extends java.lang.Object

Менеджер объектов CesarObject. Управляет их размещением в памяти и на диске. В зависимости от статуса объект может быть размещен на диске или в памяти. Содержит множество самих объектов, их статусы, пользователей программы и текущего пользователя.
Инициализация - вызов Manager.Manager(). Он инициализирует множества, загружает ранее сохраненные или создает новые в каталоге пользователя в созданном подкаталоге .cesar 
Окончание работы - обязательный вызов save() - которая записывает все наработанные менеджером данные в файл. Это аналогично раздельному вызову saveStatuses() и saveUsers(). Данные по новому объекту сразу записываются в архивный файл при вызовеputCesarObject(CesarObject cesarObject)

http://tsvetkov.at.ua/publ/1-1-0-17 - полное описание

среда, 21 января 2009 г.

Вовремя заметил проблему

Изначально задача стояла в том, чтобы все результаты работы сохранялись, даже удаленные материалы не должны удалятся. Первым решением было установка флага в самом объекте. Возник вопрос - с течением времени размещение всех объектов в памяти компьютера может привести к сильному решению быстродействия. 
Принятое решение - из CesarObject удалил флаг состояния. Вместо этого буду реализовывать разные списки ссылок на CesarObject. Действующие объекты будут размещатся в памяти, а неактивные (удаленные) будут хранится на диске.
На самом деле проблема оказалась достаточно комплексной - затронулись вопросы безопасности, размещения объектов, быстроты доступа.

понедельник, 29 декабря 2008 г.

Защита данных


Исследовал различные механизмы реализации защиты данных при многопоточности. Итог - решил не реализовывать специальных механизмов гарантирующих целостных даннных при обращении к ним из разных потоков непосредственно в структуре данных, хотя это и возможно. Подобный метод как мне кажется приведет к утяжелению исходных объектов CesarObject. Защиту проще будет реализовать непосредственно в тех местах, где идет изменение данных при помощи блокировки/разблокировки критически важным мест.
Кроме этого в потоку уведомляющих событий нужно будет включить сохранение истории выполненных изменений.

среда, 24 декабря 2008 г.

Тестирование CesarObject

Тестирование при помощи JUnit сильно облегчает отладку свеженаписанных модулей. При предварительном тестировании CesarObject выявилось множество ошибок разной степени критичности, с которыми в дальнейшем было бы трудно работать. Предварительное тестирование позволило избавится от них. Бета версия CesarObject готова.

понедельник, 15 декабря 2008 г.

CesarObject

Основа системы - глобальный суперкласс CesarObject, свойства которого наследуют все остальные объекты создаваемые пользователями в системе Cesar. Он определяет структуру всех остальных данных и систему взаимоотношений между ними. Все остальные объекты происходят от него. 
Любой объект в системе идентифицируется на основе даты создания и имени
Объект может быть модифицирован любым пользователем имеющим на это разрешения. Не может меняться название объекта, его дата и автор.
CesarObject хранит основные данные объекта:
  • Автор, текущий собственник - ссылка на объекты типа User
  • Дата создания объекта
  • Название объекта
  • Текущее состояние объекта (создан/неутвержден, свободный, редактируется, удален/в работе не учавствует*)
  • Объект родитель - ссылка
  • Массив ссылок на дочерних объектов
  •  Список разрешенные действия над объектом для каждого из пользователей (примечание: в списке храняться пары ссылок пользователь - битовый массив разрешений по мере добавления новых пользователей, которым разрешены действия над данным объектом. Ссылки на пользователей, которым полностью закрыт доступ не храняться в данном массиве).
*Предпологается, что объекты не удаляются, выставляется лишь статус объекта.