kz.arta.synergy.server.api.rest.storage
Class StorageService

java.lang.Object
  extended by kz.arta.synergy.server.api.rest.storage.StorageService

public class StorageService
extends java.lang.Object

Created by IntelliJ IDEA. User: topa Date: 04.09.13 Time: 10:33 To change this template use File | Settings | File Templates.


Constructor Summary
StorageService()
           
 
Method Summary
 java.lang.String add(java.lang.String folderID, java.lang.String path, java.lang.String name, java.lang.String locale)
          Метод используется для добавления файла в хранилище
Тип: POST
URL: rest/api/storage/add
 java.lang.String copy(java.lang.String fileID, java.lang.String documentID, java.lang.String container, java.lang.String locale)
          Метод используется для копирования файла из хранилища в документ
Тип: POST
URL: rest/api/storage/copy
 java.lang.String create(java.lang.String folderID, java.lang.String folderName, java.lang.String locale)
          Метод используется для создания папки в хранилище
Тип: POST
URL: rest/api/storage/create
 java.lang.String createAttachment(java.lang.String docID, java.lang.String path, java.lang.String fileName, java.lang.String filePath, java.lang.String locale)
          Метод добавляет вложение к документу из временного файла, загруженного на сервер с помощью API хранилища

URL rest/api/storage/document/{docID}/attachment/create
Method POST

 java.lang.String getDescription(java.lang.String elementID, java.lang.String locale)
          Возвращает детальную информацию папки/файла
URL: rest/api/storage/description
Тип: GET
 java.lang.String getIdentifierByPath(java.lang.String path)
           
 java.lang.String getPathToElement(java.lang.String elementID, java.lang.String locale)
           
 java.lang.String listFavoriteFolders()
           Метод возвращает избранные папки в хранилище Метод не принимает никакие параметры.
 java.lang.String listFiles(java.lang.String parentID, boolean getOnlyFolders, java.lang.String locale)
           Метод возвращает список файлов в папке с идентификатором parentID

URL rest/api/storage/list
Method GET

 java.lang.String move(java.lang.String elementID, java.lang.String folderID, java.lang.String locale)
          Метод используется для перемещения файла или папки в хранилище
Тип: POST
URL: rest/api/storage/move
 java.lang.String remove(java.lang.String elementID, java.lang.String locale)
          Метод используется для удаления файла или папки в хранилище
Тип: POST
URL: rest/api/storage/remove
 java.lang.String rename(java.lang.String elementID, java.lang.String elementName, java.lang.String locale)
          Метод используется для переименования файла/папки в хранилище
Тип: POST
URL: rest/api/storage/rename
 java.lang.String search(java.lang.String contains, java.lang.String notContains, java.util.List<java.lang.Integer> categoryID, java.lang.String aiType, java.lang.String folderID, java.lang.String modifiedFrom, java.lang.String modifiedTo, int sizeType, int sortType, boolean includeUnpublished, boolean includeExpired, boolean includeCompanions, int firstResult, int maxResult, java.lang.String locale)
          Выполняет поиск в хранилище и возвращает список найденных файлов/папок

URL rest/api/storage/search
Method POST

 java.lang.String startUploadFile(java.lang.String locale)
          Метод создает временный файл на стороне сервера

URL rest/api/storage/start_upload
Method GET
Метод создает временный файл, для дальнейшего его использования в процессе загрузки файла на сервер.

 java.lang.String uploadPart(org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput input, java.lang.String file, java.lang.String locale)
          Дописывает байты во временный файл

URL rest/api/storage/upload_part
Method POST
Enctype multipart/form-data

название поля формы для части файла должно называться - body

 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StorageService

public StorageService()
Method Detail

startUploadFile

public java.lang.String startUploadFile(java.lang.String locale)

Метод создает временный файл на стороне сервера


URL rest/api/storage/start_upload
Method GET

Метод создает временный файл, для дальнейшего его использования в процессе загрузки файла на сервер. Метод возвращает путь к созданному файлу, который необходимо использовать далее в методе upload_part

Процесс загрузки файла на сервер должен выглядить следующим образом:

Parameters:
locale - локаль пользователя - по-умолчанию ru
Returns:
json объект с полями
errorCode 0 - результат выполнения (0 - удачно, иначе - ошибка)
errorMessage - сообщение об ошибке (в случае неуспешного завершения)
file - путь к созданному временному файлу

uploadPart

public java.lang.String uploadPart(org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput input,
                                   java.lang.String file,
                                   java.lang.String locale)

Дописывает байты во временный файл


URL rest/api/storage/upload_part
Method POST
Enctype multipart/form-data

название поля формы для части файла должно называться - body

Parameters:
file - имя временного файла, полученного методом startUploadFile (QueryParam)
locale - локаль пользователя, по-умолчанию ru (QueryParam)
Returns:
See Also:
startUploadFile(String)

getIdentifierByPath

public java.lang.String getIdentifierByPath(java.lang.String path)

listFiles

public java.lang.String listFiles(java.lang.String parentID,
                                  boolean getOnlyFolders,
                                  java.lang.String locale)

Метод возвращает список файлов в папке с идентификатором parentID


URL rest/api/storage/list
Method GET

Parameters:
parentID - - идентификатор папки
locale - - локаль пользователя - по-умолчанию ru
Returns:
json со списком файлов:
     [{json_for_file1}, {json_for_file_2}, ... , {json_for_file_N}]
 
Описание конвертацию одного файла см в методе StorageWrapper#convertNodeToElement
See Also:
StorageWrapper.convertNodeToElement(AiNode)

listFavoriteFolders

public java.lang.String listFavoriteFolders()

Метод возвращает избранные папки в хранилище

Метод не принимает никакие параметры.


URL: rest/api/storage/favorite_folders
Тип: GET

Returns:

В случае успешного выполнения возвращаемый json содержит, в свою очередь, список json, каждый из которых имеет следующее поле:

  • identifier - идентификатор папки
  • name - название закладки.

Пример возвращаемого массива
  [
     {
         "identifier": "5719212b-97b9-4558-9e67-baa04d0adc62"
         "name": "Общие документы"
     },
     {
         "identifier": "91d1816a-b30e-47ea-988c-bd8864daa253"
         "name": "Регламенты"
     }
  ]
 

search

public java.lang.String search(java.lang.String contains,
                               java.lang.String notContains,
                               java.util.List<java.lang.Integer> categoryID,
                               java.lang.String aiType,
                               java.lang.String folderID,
                               java.lang.String modifiedFrom,
                               java.lang.String modifiedTo,
                               int sizeType,
                               int sortType,
                               boolean includeUnpublished,
                               boolean includeExpired,
                               boolean includeCompanions,
                               int firstResult,
                               int maxResult,
                               java.lang.String locale)

Выполняет поиск в хранилище и возвращает список найденных файлов/папок


URL rest/api/storage/search
Method POST

Parameters:
contains - строка, которая должна содержаться в искомых файлах
notContains - строка, которая не должна содержаться в искомых файлах
categoryID - идентификатор классификатора, которому должны принадлежать искомые файлы. Значение данного параметра может быть передано несколько раз.
aiType - определяет тип искомых файлов. Может быть передано значение одной из констант:
  • AIConstants.AI_FOLDER
  • AIConstants.AI_DOCUMENT
  • AIConstants.AI_IMAGE
  • AIConstants.AI_AUDIO
  • AIConstants.AI_VIDEO
  • AI_APPLICATION

Параметр можно не передавать. В этом случае поиск вернет все файлы.
folderID - идентификатор папки хранилища, в которой необходимо осуществить поиск. Параметр можно не передавать, в этом случае поиск будет произведен по всем файлам, на которые у пользователя есть права
modifiedFrom - начало периода последнего изменения в формате yyyy-MM-dd, параметр не нужно передавать если нет необходимости выполнять поиск по дате изменения
modifiedTo - завершение периода последнего изменения в формате yyyy-MM-dd, параметр не нужно передавать если нет необходимости выполнять поиск по дате изменения
sizeType - определяет размер искомого файла. Значением параметра может быть одно из значений констант:
  • AIConstants.ALL_SIZES
  • AIConstants.LITTLE
  • AIConstants.MIDDLE
  • AIConstants.BIG
Значение по-умолчанию: AIConstants.ALL_SIZES
sortType - параметр определяет тип сортировки файлов. Значением параметра может быть одно из значений констант:
  • ExtendedSearchParams.SORT_RELEVANCE
  • ExtendedSearchParams.SORT_DATE
  • ExtendedSearchParams.SORT_READSCOUNT
Значение по-умолчанию ExtendedSearchParams.SORT_RELEVANCE
includeUnpublished - отображать ли в результатах поиска неопубликованные файлы, значение по-умолчаню - нет
includeExpired - отображать ли в результатах поиска файлы, срок действия которых истек,
includeCompanions - осуществлять ли поиск в папках документов, проектов, значение по-умолчанию - нет
firstResult - номер первой записи для возвращаемых результатов выборки, значение по-умолчанию - 1
maxResult - количество записей, которые должны быть возвращены, значение по-умолчанию - 30
locale - локаль пользователя - по-умолчанию ru
Returns:
json вида
 
{
"list": [] список найденных файлов
"begin": "", номер первой записи
"length": "", количество возвращенных записей
"count": "" общее количество найденных записей
}
Json каждого результата поиска имеет вид
 
{
identifier: идентификатор файла
ai_type: тип файла
name: название файла
path: путь к файлу
modified: стам изменения
parentID: идентификатор родительского элемента
fragments: фрагменты текста файла наиболее удовлетворяющие поиску (поле может отсутствовать)
icon_url: ссылка до иконки файла (поле может отсутствовать)
right: сумма чисел, определяющая набор прав на папку или файл
}
See Also:
AIConstants.AI_FOLDER, AIConstants.AI_DOCUMENT, AIConstants.AI_IMAGE, AIConstants.AI_AUDIO, AIConstants.AI_VIDEO, AIConstants.AI_APPLICATION, AIConstants.ALL_SIZES, AIConstants.LITTLE, AIConstants.MIDDLE, AIConstants.BIG, ExtendedSearchParams.SORT_RELEVANCE, ExtendedSearchParams.SORT_DATE, ExtendedSearchParams.SORT_READSCOUNT

getPathToElement

public java.lang.String getPathToElement(java.lang.String elementID,
                                         java.lang.String locale)

createAttachment

public java.lang.String createAttachment(java.lang.String docID,
                                         java.lang.String path,
                                         java.lang.String fileName,
                                         java.lang.String filePath,
                                         java.lang.String locale)

Метод добавляет вложение к документу из временного файла, загруженного на сервер с помощью API хранилища


URL rest/api/storage/document/{docID}/attachment/create
Method POST

Parameters:
docID - UUID документа
path - строка, показывающая в какую подпапку контейнера файлов документа необходимо положить файл. Возможные значения:
  • ase:attachmentContainer (DocFileType.INBOX_FILE)
  • ase:workContainer (DocFileType.WORK_FILE)
fileName - Название загружаемого файла
filePath - Путь к временному файлу, загруженному на сервер
locale - локаль пользователя, по-умолчанию ru
Returns:
json объект с полями - errorCode - код выполнения операции (0 успешно, иначе - ошибка), id - новый идентификатор файла, errorMessage - сообщение об ошибке. В случае успешного выполнения так же возвращается полная информация о работе.
See Also:
startUploadFile(String), uploadPart(org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput, String, String)

remove

public java.lang.String remove(java.lang.String elementID,
                               java.lang.String locale)
Метод используется для удаления файла или папки в хранилище
Тип: POST
URL: rest/api/storage/remove

Parameters:
elementID - идентификатор файла либо папки (обязательный параметр)
locale - локаль (ru/en/kz, по умолчанию - ru)
Returns:
метод возвращает объект json с полями
errorCode код выполнения (0 - успешно, иначе - ошибка)
errorMessage сообщение, характеризующее успешное выполнение либо ошибку

move

public java.lang.String move(java.lang.String elementID,
                             java.lang.String folderID,
                             java.lang.String locale)
Метод используется для перемещения файла или папки в хранилище
Тип: POST
URL: rest/api/storage/move

Parameters:
elementID - идентификатор файла либо папки (что перемещаем, обязательный параметр)
folderID - идентификатор папки (куда перемещаем, обязательный параметр)
locale - локаль (ru/en/kz, по умолчанию - ru)
Returns:
метод возвращает объект json с полями
errorCode код выполнения (0 - успешно, иначе - ошибка)
errorMessage сообщение, характеризующее успешное выполнение либо ошибку

rename

public java.lang.String rename(java.lang.String elementID,
                               java.lang.String elementName,
                               java.lang.String locale)
Метод используется для переименования файла/папки в хранилище
Тип: POST
URL: rest/api/storage/rename

Parameters:
elementID - идентификатор файла либо папки (обязательный параметр)
elementName - новое имя файла либо папки (обязательный параметр)
locale - локаль (ru/en/kz, по умолчанию - ru)
Returns:
объект json с полями
errorCode код выполнения (0 - успешно, иначе - ошибка)
errorMessage сообщение, характеризующее успешное выполнение либо ошибку

create

public java.lang.String create(java.lang.String folderID,
                               java.lang.String folderName,
                               java.lang.String locale)
Метод используется для создания папки в хранилище
Тип: POST
URL: rest/api/storage/create

Parameters:
folderID - идентификатор папки, внутри которой происходит создание (обязательный параметр)
folderName - имя новой папки
locale - локаль (ru/en/kz, по умолчанию - ru)
Returns:
в случае успешного выполнения метод возвращает объект json с одним полем folderID - идентификатор новой папки, в случае ошибки:

errorCode 13
errorMessage сообщение, характеризующее ошибку
Пример успешного выполнения: {"folderID" : "550e8400-e29b-41d4-a716-446655440000"}

copy

public java.lang.String copy(java.lang.String fileID,
                             java.lang.String documentID,
                             java.lang.String container,
                             java.lang.String locale)
Метод используется для копирования файла из хранилища в документ
Тип: POST
URL: rest/api/storage/copy

Parameters:
fileID - идентификатор файла (обязательный параметр)
documentID - идентификатор документа, куда будет копироваться файл (обязательный параметр)
container - контейнер (приложения либо прочие, по умолчанию - ase:attachmentContainer)
locale - локаль (ru/en/kz, по умолчанию - ru)
Returns:
в случае успешного выполнения сервер возвращает объект json с одним полем fileID - идентификатор нового файла, в случае ошибки:

errorCode 13
errorMessage сообщение, характеризующее ошибку
Пример успешного выполнения: {"fileID" : "550e8400-e29b-41d4-a716-446655440000"}
See Also:
DocFileType.INBOX_FILE, DocFileType.WORK_FILE

add

public java.lang.String add(java.lang.String folderID,
                            java.lang.String path,
                            java.lang.String name,
                            java.lang.String locale)
Метод используется для добавления файла в хранилище
Тип: POST
URL: rest/api/storage/add

Parameters:
folderID - идентификатор папки куда будет добавляться файл (обязательное поле)
path - абсолютный путь до файла (обязательное поле)
name - имя файла (обязательное поле)
locale - локаль (ru/en/kz, ru - по умолчанию)
Returns:
в случае успешного выполнения сервер возвращает объект json с одним полем fileID - идентификатор нового файла, в случае ошибки:

errorCode 13
errorMessage сообщение, характеризующее ошибку
Пример успешного выполнения: {"fileID" : "550e8400-e29b-41d4-a716-446655440000"}

getDescription

public java.lang.String getDescription(java.lang.String elementID,
                                       java.lang.String locale)
Возвращает детальную информацию папки/файла
URL: rest/api/storage/description
Тип: GET

Parameters:
elementID - идентификатор папки или файла (обяз.)
locale - локаль пользователя, ru/en/kz (не обяз., по умолчанию ru)
Returns:
В случае успешного выполнения возвращаемый json содержит следующие поля:
  • identifier - идентификатор папки или файла
  • is_folder (true/false) - папка («true») или файл («false»)
  • size - размер файла в байтах (для папки значение = 0)
  • path - полный путь до папки или файла
  • name - название папки или файла
  • modified - дата и время последнего изменения папки или файла (в формате yyyy-mm-dd hh:mm:ss)
  • userName - ФИО пользователя, выполнившего последнее изменение папки или файла (в формате Фамилия Имя О.)
  • userID - идентификатор пользователя, выполнившего последнее изменение папки или файла
  • right - сумма чисел, определяющая набор прав на папку или файл
  • mime - mime тип файла (отображается только при значении is_folder = «false»)
  • icon - ссылка до иконки файла (отображается только при значении is_folder = «false»)
  • parents - массив идентификаторов всех папок из path, причем порядок следования идентификаторов в массиве должен соответствовать порядку в параметре path (слева направо)
  • ai_type - тип элемента хранилища, один из следующих вариантов:
    • ai_folder - папка
    • ai_document - текстовый файл
    • ai_image - файл изображения
    • ai_audio - аудиофайл
    • ai_video - видеофайл
    • ai_application - прочие файлы

Набор прав на папку или файл, права в системе:

   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 (право на назначение прав)
   FULL_ACCESS = 2147483647
 

В случае неуспешного выполнения вовзращается json с полями:

  • errorCode - код выполнения (число, отличное от 0)
  • errorMessage - сообщение об ошибке (см. ниже)

Пример возвращаемого массива

  {
      "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"
  }