Skip to content

Пользователи, проекты и файлы

Galina Tomilina edited this page Apr 6, 2016 · 3 revisions

Пользователи, проекты и файлы

###Иллюстрации работы с проектами fileupload

createproject

deletetheproject

deletethefile

###Хранение информации repositories-fvklvy

Хранение файлов на сервере

изменения, связанные с появлением разделения на проекты, не отражены

Для реализации хранения пользовательских файлов в памяти приложения на данный момент используются два класса, представленные на диаграмме ниже.

repository_to_wiki_3

FileRepository - класс, реализующий интерфейс IFileRepository. Сторонний пользователь может использовать функцию addNewFile для загрузки файлов на сервер и функции GetFileByID, GetFiles для получения файлов из репозитория для работы с ними. Ниже подробнее описана работа этих функций.

Загрузка файлов на сервер

Для загрузки файлов на сервер нужно использовать вызов типа:

 FileRepository.repo.addNewFile(part, fileName, "guest");

где part - это переменная типа Part из HttpServletRequest, fileName - имя файла, извлечённое из реквеста, типа String, а "guest" или какая-то другая переменная типа String - имя пользователя.

В этом случае управление передаётся функции addNewFile, которая обращается к функции createCorrectName для создания токена, записывает файл (в виде ByteArrayInputStream) в репозиторий и возвращает строку с названием файла, однозначно определяющим его в репозитории (токеном).

Токен формируется из имени файла и индекса при помощи приватных функций createCorrectName и isNameCorrect. Он состоит из имени файла, извлечённого из реквеста при загрузке, и, при необходимости, индекса. Например, три загруженных файла с именем "data" в репозитории будут иметь имена "data", "data_1" и "data_2".

Получение файлов из репозитория

На данный момент реализовано три типа обращения к репозиторию с целью получения файлов

  1. по токену
  2. по имени, данному файлу пользователем, и имени пользователя
  3. по имени, данному файлу пользователем

Примеры вызовов, соответствующих данным обращениям:

ByteArrayInputStream file = FileRepository.repo.getFileByID(token);
ArrayList<ByteArrayInputStream> allFilesForUser = FileRepository.repo.getFiles(filename, login);
ArrayList<ByteArrayInputStream> allFiles = FileRepository.repo.getFiles(filename);

В первом случае, если файл с указанным токеном существует, фунция возвращает единственный объект типа ByteArrayInputStream, соответствующий ему. Во втором случае проверяется ArrayList files в репозитории, и возвращается ArrayList объектов, которые соответствуют указанному имени среди файлов данного пользователя. Третья функция возвращает ArrayList из всех объектов, имевших перед загрузкой данное имя - при введении многопользовательского режима она, скорее всего, будет удалена, используйте с осторожностью.

Development

  1. Project structure
  2. Heroku
  3. Coding Guidelines

Вычисляемые статистики

Architecture

R

Matlab

Выбор базы данных

Angular 2

Источники данных

Random

  1. Interpolation
  2. [Charts comparison](displaying graphs control)
  3. What is Servlet?
  4. Ace-editor

GDS

  1. Библиотека CoreArray
  2. Сборка CoreArray
  3. Сравнение скоростей способов доступа к CoreArray
  4. Переделка Gdsfmt под java
  5. Разбор структуры файла из центра биоинформатики

Институт биоинформатики

Темы:

  1. Классические категориальные тесты на независимость
Clone this wiki locally