Формулировка проблемы: для реализации задач мобильного клиента необходимо реализовать новый метод API для получения описания ноды хранилища, а также доработать существующий метод API поиска в хранилище.
Решение:
Необходимо доработать метод
rest/api/storage/search, добавив в каждый
выходной параметр результата поиска (json list)
новые данные:
right - сумма чисел, определяющая набор
прав на папку или файл:
READ = 1 (право на просмотр элемента);
ADD = 2 (право на добавление нового элемента);
DELETE = 4 (право на удаление элемента);
EDIT_FOLDER_VIEW = 8 (право на редактирование index страницы папки);
EDIT_DOCUMENT = 16 (право на редактирование документа);
ADD_COMMENT = 32 (право на добавление комментариев);
EDIT_COMMENT = 64 (право на редактирование комментариев);
DELETE_COMMENT = 128 (право на удаление комментариев);
READ_COMMENT = 256 (право на просмотр комментариев);
READ_VERSIONS = 512 (право на просмотр версий документа);
EDIT_VERSIONS = 1024 (право на восстановление версий документа);
EDIT_METADATA = 2048 (право на редактирование свойств документа);
READ_METADATA = 4096 (право на просмотр свойств документа);
EDIT_CATEGORIES = 8192 (право на редактирование классификатора документа);
READ_CATEGORIES = 16384 (право на просмотр классификатора документа);
ADD_DOCUMENT_REFERENCES = 32768 (право на добавление документа в список ссылок документа);
EDIT_DOCUMENT_REFERENCES = 65536 (право на редактирование списка ссылок документа);
DELETE_DOCUMENT_REFERENCES = 131072 (право на удаление ссылок документа);
READ_DOCUMENT_REFERENCES = 262144 (право на просмотр списка ссылок документа);
LOAD_DOCUMENT = 524288 (право на загрузку файла документа);
MOVE = 2097152 (право на перемещение / переименовывание элемента);
CHANGE_PERMISSION = 4194304 (право на назначение прав);
Примечание. Наличие всех прав должно
соответствовать максимальному значению переменной
int в java, т.е.
значению 2147483647. Отсутствие прав - значению 0.
icon_url - ссылка до иконки файла.
Пример возвращаемого массива
[
{
...
"right": 7,
"icon_url": "rest/api/storage/icons/get?aiType=ai_text&fileName=Файл1.odt"
},
{
...
"right": 2147483647,
"icon_url": "rest/api/storage/icons/get?aiType=ai_htd&fileName=Файл2.htd"
}
]
Необходимо реализовать следующий метод:
URL: rest/api/storage/description.
Тип: GET.
Метод принимает следующие строковые параметры:
elementID - идентификатор папки или файла
(обяз.);
locale - локаль пользователя,
ru/en/kz (не обяз., по умолчанию
ru).
В случае успешного выполнения возвращаемый json
содержит следующие поля:
identifier - идентификатор папки или файла;
is_folder (true/false) - папка («true») или
файл («false»);
size - размер файла в байтах (для папки
значение = 0);
path - полный путь до папки или файла;
name - название папки или файла;
modified - дата и время последнего
изменения папки или файла (в формате
yyyy-mm-dd hh:mm:ss);
userName - ФИО пользователя, выполнившего
последнее изменение папки или файла (в формате
Фамилия Имя О.);
userID - идентификатор пользователя,
выполнившего последнее изменение папки или файла;
right - сумма чисел, определяющая набор
прав на папку или файл:
READ = 1 (право на просмотр элемента);
ADD = 2 (право на добавление нового элемента);
DELETE = 4 (право на удаление элемента);
EDIT_FOLDER_VIEW = 8 (право на редактирование index страницы папки);
EDIT_DOCUMENT = 16 (право на редактирование документа);
ADD_COMMENT = 32 (право на добавление комментариев);
EDIT_COMMENT = 64 (право на редактирование комментариев);
DELETE_COMMENT = 128 (право на удаление комментариев);
READ_COMMENT = 256 (право на просмотр комментариев);
READ_VERSIONS = 512 (право на просмотр версий документа);
EDIT_VERSIONS = 1024 (право на восстановление версий документа);
EDIT_METADATA = 2048 (право на редактирование свойств документа);
READ_METADATA = 4096 (право на просмотр свойств документа);
EDIT_CATEGORIES = 8192 (право на редактирование классификатора документа);
READ_CATEGORIES = 16384 (право на просмотр классификатора документа);
ADD_DOCUMENT_REFERENCES = 32768 (право на добавление документа в список ссылок документа);
EDIT_DOCUMENT_REFERENCES = 65536 (право на редактирование списка ссылок документа);
DELETE_DOCUMENT_REFERENCES = 131072 (право на удаление ссылок документа);
READ_DOCUMENT_REFERENCES = 262144 (право на просмотр списка ссылок документа);
LOAD_DOCUMENT = 524288 (право на загрузку файла документа);
MOVE = 2097152 (право на перемещение / переименовывание элемента);
CHANGE_PERMISSION = 4194304 (право на назначение прав);
Примечание. Наличие всех прав должно
соответствовать максимальному значению переменной
int в java, т.е.
значению 2147483647. Отсутствие прав - значению 0.
mime - mime тип файла (отображается только
при значении is_folder = «false»);
icon - ссылка до иконки файла (отображается
только при значении is_folder = «false»);
parents - массив идентификаторов
родительских папок относительно дерева, начиная с самого
корня;
ai_type - тип элемента хранилища, один из
следующих вариантов:
ai_folder - папка;
ai_document - текстовый файл;
ai_image - файл изображения;
ai_audio - аудиофайл;
ai_video - видеофайл;
ai_application - прочие файлы.
Таким образом, набор параметров для папки и для файла выглядит следующим образом:
| Папка | Файл |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
| |
|
|
|
|
В случае неуспешного выполнения вовзращается
json с полями:
errorCode - код выполнения (число, отличное
от 0);
errorMessage - сообщение об ошибке (см.
ниже).
Альтернативные потоки событий.
Альтернативный поток №1. Параметр elementID
не передан, либо он пустой. Сервер возвращает ошибку:
Не передан параметр elementID
действие не осуществляется;
Альтернативный поток №2. Передан некорректный (несуществующий)
параметр elementID. Сервер возвращает
ошибку:
Передан некорректный параметр elementID
действие не осуществляется;
Пример возвращаемого массива
{
"identifier": "f5003070-3740-4920-a4c5-01f8bf440774",
"is_folder": false,
"size": "19644",
"path": "/company_root/Проект/Файл1.odt",
"name": "Файл1.odt",
"modified": "2013-03-13 16:35:45",
"userName": "Слепаков Иван И.",
"userID": "ee71a4c6-888a-4f04-86de-44ab394f5749",
"right": 7,
"mime ": "application/vnd.oasis.opendocument.text",
"icon": "rest/api/storage/icons/get?aiType=ai_text&fileName=Файл1.odt",
"parents": ["d1f91787-ac5d-4650-a7c0-1cdfbdd12165", "5860da7f-0615-4f46-8264-d8605d97ef9e"],
"ai_type": "ai_document"
}