You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
4.7 KiB

@startuml anyreport
!theme cerulean-outline
'left to right direction
package moodle-anyreport{
' сборка приложения
class App{
- accessPane : AccessPane
- tagPane : TagPane
- reportPane : ReportPane
}
'панель подключения к базе данных
class AccessPane{}
AccessPane --> App
'панель просмотра базы данных (аналог phpmyadmin)
class BasePane{}
BasePane --> App
'панель управления тегами для формирования выборки пользователей
class TagPane{}
TagPane --> App
'панель отображения отчета по выборке
class ReportPane{}
ReportPane -->App
/'методы обработки действий пользователя
клики мыши, нажатия клавишь, итд.
'/
class TagControls <<static>>{
+ enterPressed() : void
+ addTag() : void
+ removeTag() : void
+ clearTags() : void
}
TagControls --> TagPane
'Пользователь попросил сохранить отчет в файл
'Указывает путь куда сохранить
class ReportControls <<static>>{
- path : String
+ getTableReport() : void
+ getXLSXReport() : void
+ getTextReport() : void
}
ReportControls --> ReportPane
'модель данных для текстового отчета
class ReportTextModel{
'количество пройденных тестов
'список пройденных тестов
'количество пользователей в выборке
'количество уникальных пользователей
}
ReportTextModel --> ReportControls
'модель данных для отчета xlsx
class ReportXLSXModel{
- path : String
+ ReportXLSXModel(Data data) : void
+ setPath() : void
+ getPath() : String
+ CreateXLSXReport() : void
}
ReportXLSXModel --> ReportControls
'модель данных для отображения в gui
class ReportTableModel{}
ReportTableModel --> ReportControls
/'Общий инструментарий работы с базой данных
'/
class BaseControls <<static>>{
+ connectToServer() : void
+ disconnectFromServer() : void
+ showBaseList() : void
+ selectCurrentBase() : void
+ showTables() : void
}
BaseControls --> AccessPane
BaseControls --> BasePane
/'
получение данных из базы данных
доступ к базе данных
'/
class Base{
- access : Access
- connection : Connection
+ setConnection(Connection connaction) : void
+ getConnaction() : Connaction
+ connect(Base b) : void
+ disconnect(Base b) : void
' запрос к базе, возвращает ответ
+ querry(String querry) : ResultSet
}
Base --> Data
Base --> BaseControls
enum Access{
- login : String
- password : String
- link : String
}
Access --> Base
' хранение и представление данных
class Data{
- userlist : UserListModel
- results : ArrayList<Result>
- quizes : ArrayList<Quiz>
}
Data --> ReportTextModel
Data --> ReportXLSXModel
Data --> ReportTableModel
/'формирование перечня пользователей
- на основании тегов
- на основании исходных перечней (из файла)
'/
class UserListModel{
- userlist : ArrayList<User>
+ getUsers() : ArrayList<User>
+ setUsersByTag(TagModel tags) : void
+ setUsersFromFile(File file) : void
}
UserListModel --> Data
enum User{
- id : int
- login : String
- mail : String
}
User --> UserListModel
enum Result{
- id : int
- quizid : int
- userid : int
- grade : double
- time : Long
}
Result --> Data
enum Quiz{
- id : int
- name : String
}
Quiz --> Data
class TagModel{
- tags : ArrayList<String>
+ setTags(ArrayList<String> tags) : void
+ getTags() : ArrayList<String>
+ addTag(String tag) : void
+ removeTag(String tag) : void
}
TagModel --> TagControls
TagModel --> UserListModel
}
@enduml