esoe 3 years ago
parent
commit
24d90ffe96
  1. 11
      docs/diagrams/src/anyreport.puml
  2. 13
      src/main/java/ru/egspt/App.java
  3. 11
      src/main/java/ru/egspt/BaseControls.java
  4. 130
      src/main/java/ru/egspt/DataPane.java
  5. 127
      src/main/java/ru/egspt/ReportPane.java
  6. 41
      src/main/java/ru/egspt/ReportTableModel.java
  7. 17
      src/main/java/ru/egspt/TagControls.java
  8. BIN
      target/classes/ru/egspt/App.class
  9. BIN
      target/classes/ru/egspt/BaseControls.class
  10. BIN
      target/classes/ru/egspt/DataPane.class
  11. BIN
      target/classes/ru/egspt/ReportPane.class
  12. BIN
      target/classes/ru/egspt/ReportTableModel.class
  13. BIN
      target/classes/ru/egspt/TagControls.class

11
docs/diagrams/src/anyreport.puml

@ -6,6 +6,7 @@ package moodle-anyreport{ @@ -6,6 +6,7 @@ package moodle-anyreport{
class App{
- accessPane : AccessPane
- tagPane : TagPane
- dataPane : DataPane
- reportPane : ReportPane
}
'панель подключения к базе данных
@ -16,8 +17,10 @@ package moodle-anyreport{ @@ -16,8 +17,10 @@ package moodle-anyreport{
BasePane --> App
'панель управления тегами для формирования выборки пользователей
class TagPane{}
TagPane --> App
TagPane --> DataPane
'панель отображения отчета по выборке
class DataPane{}
DataPane -->App
class ReportPane{}
ReportPane --> App
@ -40,7 +43,7 @@ package moodle-anyreport{ @@ -40,7 +43,7 @@ package moodle-anyreport{
+ getXLSXReport() : void
+ getTextReport() : void
}
ReportControls --> ReportPane
ReportControls --> DataPane
'модель данных для текстового отчета
class ReportTextModel{
@ -61,7 +64,7 @@ package moodle-anyreport{ @@ -61,7 +64,7 @@ package moodle-anyreport{
ReportXLSXModel --> ReportControls
'модель данных для отображения в gui
class ReportTableModel{}
ReportTableModel --> ReportControls
DataTableModel --> ReportControls
/'Общий инструментарий работы с базой данных
'/
@ -106,7 +109,7 @@ package moodle-anyreport{ @@ -106,7 +109,7 @@ package moodle-anyreport{
}
Data --> ReportTextModel
Data --> ReportXLSXModel
Data --> ReportTableModel
Data --> DataTableModel
/'формирование перечня пользователей
- на основании тегов

13
src/main/java/ru/egspt/App.java

@ -13,15 +13,16 @@ public class App extends JPanel{ @@ -13,15 +13,16 @@ public class App extends JPanel{
private Base base = new Base();
private Data data = new Data();
private TagModel tagModel = new TagModel();
private TagPane tagPane = new TagPane(this);
private DataPane dataPane = new DataPane(this);
private ReportPane reportPane = new ReportPane(this);
private AccessPane accessPane = new AccessPane(this);
private TagPane tagPane = new TagPane(this);
public void init(){
this.setLayout(new BorderLayout());
this.add(getAccessPane(), BorderLayout.NORTH);
this.add(getTagPane(), BorderLayout.SOUTH);
this.add(getReportPane(), BorderLayout.CENTER);
this.add(getDataPane(), BorderLayout.CENTER);
this.add(getReportPane(), BorderLayout.SOUTH);
this.setVisible(true);
}
public void initFrame(){
@ -55,6 +56,12 @@ public class App extends JPanel{ @@ -55,6 +56,12 @@ public class App extends JPanel{
public AccessPane getAccessPane() {
return accessPane;
}
/**
* @return the dataPane
*/
public DataPane getDataPane() {
return dataPane;
}
/**
* @return the reportPane
*/

11
src/main/java/ru/egspt/BaseControls.java

@ -15,12 +15,15 @@ public class BaseControls { @@ -15,12 +15,15 @@ public class BaseControls {
app.getData().setUsers(app.getData().getUsersFromBase(app.getBase()));
app.getData().setQuizes(app.getData().getQuizesFromBase(app.getBase()));
app.getData().setResults(app.getData().getResultsFromBase(app.getBase()));
//данные в панель данных
app.getDataPane().init();
app.getDataPane().setUsers(app.getData());
app.getDataPane().setQuizes(app.getData());
app.getDataPane().setResults(app.getData());
app.getDataPane().setVisible(true);
//данные в панель отчетов
app.getReportPane().init();
app.getReportPane().setUsers(app.getData());
app.getReportPane().setQuizes(app.getData());
app.getReportPane().setResults(app.getData());
app.getReportPane().setVisible(true);
app.getReportPane().setReportData(app.getData());
}

130
src/main/java/ru/egspt/DataPane.java

@ -0,0 +1,130 @@ @@ -0,0 +1,130 @@
package ru.egspt;
import java.awt.Color;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
public class DataPane extends JPanel{
private JPanel controlPane = new JPanel();//панель кнопок - пока не надо
private JButton generateXLSXButton = new JButton("create xlsx");
private JButton generateTXTButton = new JButton("create txt");
private JPanel usersPane = new JPanel();//панель пользователей
private JPanel quizesPane = new JPanel();//панель опросов
private JPanel resultsPane = new JPanel();//панель результатов
private JTable usersTable;
private JTable quizesTable;
private JTable resultsTable;
private UsersTableModel usersTableModel;
private QuizesTableModel quizesTableModel;
private ResultsTableModel resultsTableModel;
public DataPane(){}
public DataPane(App app){
setupUsersPane(app);
setupQuizesPane(app);
setupResultsPane(app);
}
public void init(){
this.setupControlPane();
this.setLayout(new BorderLayout());
this.add(controlPane, BorderLayout.NORTH);
this.add(usersPane, BorderLayout.WEST);
this.add(quizesPane, BorderLayout.CENTER);
this.add(resultsPane, BorderLayout.EAST);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "data", TitledBorder.CENTER, TitledBorder.CENTER);
this.setBorder(border);
this.setVisible(true);
}
public void setupControlPane(){
controlPane.add(generateXLSXButton);
controlPane.add(generateTXTButton);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "ControlPane", TitledBorder.CENTER, TitledBorder.CENTER);
controlPane.setBorder(border);
}
/**
* Настройка панели пользователей
*/
public void setupUsersPane(App app){
usersTableModel = new UsersTableModel(app.getData());
usersTable = new JTable(usersTableModel);
//настройка заголовков
int i = 0;
while (i < usersTable.getColumnCount()){
usersTable.getColumnModel().getColumn(i).setHeaderValue(usersTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(usersTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
usersPane.setLayout(new BorderLayout());
usersPane.add(scrollPane);
usersPane.add(app.getTagPane(), BorderLayout.NORTH);//добавили панель тегов
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Users", TitledBorder.CENTER, TitledBorder.CENTER);
usersPane.setBorder(border);
}
/**
* Настройка панели опросов
*/
public void setupQuizesPane(App app){
quizesTableModel = new QuizesTableModel(app.getData());
quizesTable = new JTable(quizesTableModel);
//настройка заголовков
int i = 0;
while (i < quizesTable.getColumnCount()){
quizesTable.getColumnModel().getColumn(i).setHeaderValue(quizesTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(quizesTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
quizesPane.setLayout(new BorderLayout());
quizesPane.add(scrollPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Quizes", TitledBorder.CENTER, TitledBorder.CENTER);
quizesPane.setBorder(border);
}
/**
* Настройка панели результатов
*/
public void setupResultsPane(App app){
resultsTableModel = new ResultsTableModel(app.getData());
resultsTable = new JTable(resultsTableModel);
//настройка заголовков
int i = 0;
while (i < resultsTable.getColumnCount()){
resultsTable.getColumnModel().getColumn(i).setHeaderValue(resultsTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(resultsTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
resultsPane.setLayout(new BorderLayout());
resultsPane.add(scrollPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Results", TitledBorder.CENTER, TitledBorder.CENTER);
resultsPane.setBorder(border);
}
public void setQuizes(Data data){
getQuizesTableModel().setData(data);
}
public void setUsers(Data data){
getUsersTableModel().setData(data);
}
public void setResults(Data data){
getResultsTableModel().setData(data);
}
/**
* @return the tableModel
*/
public UsersTableModel getUsersTableModel() {
return usersTableModel;
}
/**
* @return the quizesTableModel
*/
public QuizesTableModel getQuizesTableModel() {
return quizesTableModel;
}
public ResultsTableModel getResultsTableModel() {
return resultsTableModel;
}
}

127
src/main/java/ru/egspt/ReportPane.java

@ -3,129 +3,58 @@ package ru.egspt; @@ -3,129 +3,58 @@ package ru.egspt;
import java.awt.Color;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.TableColumnModel;
public class ReportPane extends JPanel {
private JPanel controlPane = new JPanel();//панель кнопок - пока не надо
private JButton generateXLSXButton = new JButton("create xlsx");
private JButton generateTXTButton = new JButton("create txt");
private JPanel usersPane = new JPanel();//панель пользователей
private JPanel quizesPane = new JPanel();//панель опросов
private JPanel resultsPane = new JPanel();//панель результатов
private JTable usersTable;
private JTable quizesTable;
private JTable resultsTable;
private UsersTableModel usersTableModel;
private QuizesTableModel quizesTableModel;
private ResultsTableModel resultsTableModel;
private JPanel reportTablePane = new JPanel();
private ReportTableModel reportTableModel;
private JTable reportTable;
private JPanel reportTextPane = new JPanel();
private JPanel reportSettingsPane = new JPanel();
public ReportPane(){}
public ReportPane(App app){
setupUsersPane(app);
setupQuizesPane(app);
setupResultsPane(app);
setupReportTablePane(app);
}
public void init(){
this.setupControlPane();
this.setLayout(new BorderLayout());
this.add(controlPane, BorderLayout.NORTH);
this.add(usersPane, BorderLayout.WEST);
this.add(quizesPane, BorderLayout.CENTER);
this.add(resultsPane, BorderLayout.EAST);
this.add(reportTablePane, BorderLayout.NORTH);
//this.add(reportTextPane, BorderLayout.WEST);
//this.add(reportSettingsPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "report", TitledBorder.CENTER, TitledBorder.CENTER);
this.setBorder(border);
this.setVisible(true);
}
public void setupControlPane(){
controlPane.add(generateXLSXButton);
controlPane.add(generateTXTButton);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "ControlPane", TitledBorder.CENTER, TitledBorder.CENTER);
controlPane.setBorder(border);
}
/**
* Настройка панели пользователей
*/
public void setupUsersPane(App app){
usersTableModel = new UsersTableModel(app.getData());
usersTable = new JTable(usersTableModel);
public void setupReportTablePane(App app){
reportTableModel = new ReportTableModel(app);
reportTable = new JTable(reportTableModel);
//настройка заголовков
int i = 0;
while (i < usersTable.getColumnCount()){
usersTable.getColumnModel().getColumn(i).setHeaderValue(usersTableModel.getHeader()[i]);
while (i < reportTable.getColumnCount()){
reportTable.getColumnModel().getColumn(i).setHeaderValue(reportTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(usersTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
usersPane.setLayout(new BorderLayout());
usersPane.add(scrollPane);
usersPane.add(new TagPane(app), BorderLayout.NORTH);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Users", TitledBorder.CENTER, TitledBorder.CENTER);
usersPane.setBorder(border);
JScrollPane scrollPane = new JScrollPane(reportTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
reportTablePane.setLayout(new BorderLayout());
reportTablePane.add(scrollPane);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "report tables", TitledBorder.CENTER, TitledBorder.CENTER);
reportTablePane.setBorder(border);
reportTablePane.setVisible(true);
}
/**
* Настройка панели опросов
*/
public void setupQuizesPane(App app){
quizesTableModel = new QuizesTableModel(app.getData());
quizesTable = new JTable(quizesTableModel);
//настройка заголовков
int i = 0;
while (i < quizesTable.getColumnCount()){
quizesTable.getColumnModel().getColumn(i).setHeaderValue(quizesTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(quizesTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
quizesPane.setLayout(new BorderLayout());
quizesPane.add(scrollPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Quizes", TitledBorder.CENTER, TitledBorder.CENTER);
quizesPane.setBorder(border);
public void setReportData(Data data){
getReportTableModel().setData(data);
}
public void setupReportTextPane(){}
public void setupReportSettingsPane(){}
/**
* Настройка панели результатов
* @return the reportTableModel
*/
public void setupResultsPane(App app){
resultsTableModel = new ResultsTableModel(app.getData());
resultsTable = new JTable(resultsTableModel);
//настройка заголовков
int i = 0;
while (i < resultsTable.getColumnCount()){
resultsTable.getColumnModel().getColumn(i).setHeaderValue(resultsTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(resultsTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
resultsPane.setLayout(new BorderLayout());
resultsPane.add(scrollPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Results", TitledBorder.CENTER, TitledBorder.CENTER);
resultsPane.setBorder(border);
}
public void setQuizes(Data data){
getQuizesTableModel().setData(data);
}
public void setUsers(Data data){
getUsersTableModel().setData(data);
}
public void setResults(Data data){
getResultsTableModel().setData(data);
}
/**
* @return the tableModel
*/
public UsersTableModel getUsersTableModel() {
return usersTableModel;
}
/**
* @return the quizesTableModel
*/
public QuizesTableModel getQuizesTableModel() {
return quizesTableModel;
}
public ResultsTableModel getResultsTableModel() {
return resultsTableModel;
public ReportTableModel getReportTableModel() {
return reportTableModel;
}
}

41
src/main/java/ru/egspt/ReportTableModel.java

@ -3,10 +3,11 @@ package ru.egspt; @@ -3,10 +3,11 @@ package ru.egspt;
import javax.swing.table.AbstractTableModel;
public class ReportTableModel extends AbstractTableModel{
private String[] header = {"id", "login", "mail"};
private String[] header = new String[]{"id", "login", "mail"};
private Object[][] data;
public ReportTableModel(Data data){
setData(data);
public ReportTableModel(){}
public ReportTableModel(App app){
setData(app.getData());
}
@Override
public int getRowCount() {
@ -28,25 +29,41 @@ public class ReportTableModel extends AbstractTableModel{ @@ -28,25 +29,41 @@ public class ReportTableModel extends AbstractTableModel{
public Object[][] getData() {
return data;
}
/**
* Настройка заголовков отчета
* @param data
*/
public void setHeader(Data data){
/**
* Определение количества заголовков:
* первые три (с нумерацией строк - четыре) заголовка определяются таблицей пользователей и всегда постоянны
* остальные заголовки определяются:
* количеством тестов, в прохождении которых участвовали пользователи, помноженным на
* количество отчетных данных (результат сдачи теста и время потраченное на прохождение теста)
*/
//String[] h = new String[3 + 0];
//
}
/**
*
*/
public void setData(Data data) {
public void setData(Data report) {
//создаем объект data - инициализация переменной
int row = 0;
row = data.getUsers().size();
int col = 3;//по количеству заголовков
this.data = new Object[row][col];
this.data = new Object[report.getUsers().size()][3];
//заполняем модель данными пользователей
int i = 0;
while (i < data.getUsers().size()){
this.data[i][0] = data.getUsers().get(i).getId();
this.data[i][1] = data.getUsers().get(i).getLogin();
this.data[i][2] = data.getUsers().get(i).getMail();
while (i < report.getUsers().size()){
this.data[i][0] = report.getUsers().get(i).getId();
this.data[i][1] = report.getUsers().get(i).getLogin();
this.data[i][2] = report.getUsers().get(i).getMail();
i++;
this.fireTableDataChanged();
}
}
public void setData(Object[][] data){
this.data = data;
}
/**
* @return the header
*/

17
src/main/java/ru/egspt/TagControls.java

@ -9,10 +9,13 @@ public class TagControls { @@ -9,10 +9,13 @@ public class TagControls {
app.getTagPane().updateTagArea(app.getTagModel());
app.getTagPane().getCurrentTagField().setText("");
//Выводим пользователей в отчет
Data data = new Data();
data.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel()));
app.getReportPane().setUsers(data);
app.getReportPane().getUsersTableModel().fireTableDataChanged();
Data report = new Data();
report.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel()));
report.setResults(app.getData().getResults());
report.setQuizes(app.getData().getQuizes());
//report.setHeaders();
app.getReportPane().setReportData(report);
app.getReportPane().getReportTableModel().fireTableDataChanged();
}
//удаляем тег из модели
public static void removeTag(App app){
@ -25,7 +28,9 @@ public class TagControls { @@ -25,7 +28,9 @@ public class TagControls {
//Выводим пользователей в отчет
Data data = new Data();
data.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel()));
app.getReportPane().setUsers(data);
app.getReportPane().getUsersTableModel().fireTableDataChanged();
//app.getDataPane().setUsers(data);
//app.getDataPane().getUsersTableModel().fireTableDataChanged();
app.getReportPane().setReportData(data);
app.getReportPane().getReportTableModel().fireTableDataChanged();
}
}

BIN
target/classes/ru/egspt/App.class

Binary file not shown.

BIN
target/classes/ru/egspt/BaseControls.class

Binary file not shown.

BIN
target/classes/ru/egspt/DataPane.class

Binary file not shown.

BIN
target/classes/ru/egspt/ReportPane.class

Binary file not shown.

BIN
target/classes/ru/egspt/ReportTableModel.class

Binary file not shown.

BIN
target/classes/ru/egspt/TagControls.class

Binary file not shown.
Loading…
Cancel
Save