Browse Source

рабочая версия

master
esoe 2 years ago
parent
commit
02392c7c57
  1. 61
      src/main/java/ru/egspt/ReportPane.java
  2. 100
      src/main/java/ru/egspt/ReportTableModel.java
  3. 4
      src/main/java/ru/egspt/TagControls.java
  4. BIN
      target/classes/ru/egspt/ReportPane.class
  5. BIN
      target/classes/ru/egspt/ReportTableModel.class
  6. BIN
      target/classes/ru/egspt/TagControls.class

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

@ -24,8 +24,6 @@ public class ReportPane extends JPanel { @@ -24,8 +24,6 @@ public class ReportPane extends JPanel {
public void init(){
this.setLayout(new BorderLayout());
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);
@ -48,35 +46,9 @@ public class ReportPane extends JPanel { @@ -48,35 +46,9 @@ public class ReportPane extends JPanel {
reportTablePane.setBorder(border);
reportTablePane.setVisible(true);
}
public void setReportData(Data data){
getReportTableModel().setData(data);
}
public void setReportHeader(Data report){
//настройка заголовков таблицы
System.out.println("настраиваем отображение заголовков таблицы отчетов ... ");
reportTableModel = new ReportTableModel(report);
System.out.println("reportTableModel.getColumnCount(): " + reportTableModel.getColumnCount());
System.out.println("reportTableModel.getHeader().length: " + reportTableModel.getHeader().length);
reportTable = new JTable(reportTableModel);
System.out.println("reportTable.getColumnModel().getColumnCount(): " + reportTable.getColumnModel().getColumnCount());
int j = 0;
while (j < getReportTableModel().getHeader().length){
getReportTable().getColumnModel().getColumn(j).setHeaderValue(getReportTableModel().getHeader()[j]);
System.out.println(j + " Заголовок модели: " + getReportTableModel().getHeader()[j]);
System.out.println("Заголовок таблицы: " + getReportTable().getColumnName(j));
j++;
}
//getReportTableModel().fireTableStructureChanged();
//getReportTableModel().fireTableDataChanged();
}
/**
* формирование таблицы с новым отчетом
* обработка заголовков таблицы и данных в одном методе,
* замещаем методы:
* setReportHeader()
* setReportData()
* setReportContent()
*
* @param report
*/
public void updateReport(Data report){
@ -85,36 +57,9 @@ public class ReportPane extends JPanel { @@ -85,36 +57,9 @@ public class ReportPane extends JPanel {
setReportTableModel(new ReportTableModel(report));
DefaultTableModel dm = new DefaultTableModel(getReportTableModel().getData(), getReportTableModel().getHeader());
getReportTable().setModel(dm);
//отображение в таблице отчета по тегу
//System.out.println("отображение в таблице отчета по тегу " + " ... ");
//setReportTable(new JTable(getReportTableModel()));
getReportTable().revalidate();
//отображение заголовков таблицы
/*
int j = 0;
while (j < getReportTableModel().getHeader().length){
getReportTable().getColumnModel().getColumn(j).setHeaderValue(getReportTableModel().getHeader()[j]);
j++;
}
*/
//getReportTableModel().toConsole();
putTableToConsole(getReportTable());
getReportTableModel().fireTableDataChanged();//оповещаем об изменении данных
getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!!
}
public void setReportContent(Data report){
//устанавливаем заголовки
setReportHeader(report);
//устанавливаем данные
setReportData(report);
getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!!
getReportTableModel().fireTableDataChanged();//оповещаем об изменении данных
//getReportTable().repaint();
}
public void setupReportTextPane(){}
public void setupReportSettingsPane(){}
@ -142,9 +87,8 @@ public class ReportPane extends JPanel { @@ -142,9 +87,8 @@ public class ReportPane extends JPanel {
public JTable getReportTable() {
return reportTable;
}
public void putTableToConsole(JTable table){
//Данные таблицы в консоль
//table.getModel();
//данные таблицы в консоль
public void toConsole(JTable table){
//заголовки
int i = 0;
while (i < table.getModel().getColumnCount()){
@ -164,5 +108,4 @@ public class ReportPane extends JPanel { @@ -164,5 +108,4 @@ public class ReportPane extends JPanel {
i++;
}
}
}

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

@ -1,9 +1,9 @@ @@ -1,9 +1,9 @@
package ru.egspt;
import java.time.LocalTime;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
public class ReportTableModel extends AbstractTableModel{
private Object[] header;
@ -89,52 +89,78 @@ public class ReportTableModel extends AbstractTableModel{ @@ -89,52 +89,78 @@ public class ReportTableModel extends AbstractTableModel{
this.data = data;
}
/**
*
* добавить проверку соответствия данных поля и заголовка столбца
*/
public void setData(Data report) {
//создаем объект data - инициализация переменной
Object[][] d = new Object[report.getUsers().size()][3 + 2*report.getQuizes().size()];
//формируем строку заголовков
Object[] header = new Object[3 + 2*report.getQuizes().size()];
int i = 0;
header[i] = "id";
i++;
header[i] = "login";
i++;
header[i] = "mail";
i++;
int j = 0;
while (j < report.getQuizes().size()){
header[i] = report.getQuizes().get(j).getName();
i++;
header[i] = "time";
i++;
j++;
}
//заголовки в консоль
int h = 0;
while (h < header.length){
System.out.println("header " + h + ": " + header[h]);
h++;
}
//построчно заполняем модель отчета данными
int userCurr = 0;
int userCurr = 0;//номер строки в отчете
while (userCurr < report.getUsers().size()){
ArrayList<Object> string = new ArrayList<>();//новая строка отчета
//пишем данные пользователя (первые три столбца)
string.add(report.getUsers().get(userCurr).getId());
string.add(report.getUsers().get(userCurr).getLogin());
string.add(report.getUsers().get(userCurr).getMail());
Boolean find = false;
//перебираем остальные заголовки (перечень опросов)
int quizCurr = 0;
while (quizCurr < report.getQuizes().size()){
if (find == false){
//перебираем результаты, ищем результаты по текущему опросу
int resultCurr = 0;
while (resultCurr < report.getResults().size()){
//если текущий результат относится к текущему опросу:
int col = 0;//номер столбца в строке
//заполняем данные пользователя (имя и почту)
d[userCurr][col] = report.getUsers().get(userCurr).getId();
col++;
d[userCurr][col] = report.getUsers().get(userCurr).getLogin();
col++;
d[userCurr][col] = report.getUsers().get(userCurr).getMail();
col++;
//Заполняем результаты тестирвоания пользователя
//Перебираем результаты, получаем результаты текущего пользователя
int resultCurr = 0;
while (resultCurr < report.getResults().size()){
if (report.getResults().get(resultCurr).getUserid() == report.getUsers().get(userCurr).getId()){
//если текущий результат относится к текущему пользователю
//взять индекс теста из результата и сопоставить с полями заголовков (определить номер ячейки для формирования записи)
String quizname = "";
int quizCurr = 0;
while (quizCurr < report.getQuizes().size()){
if (report.getResults().get(resultCurr).getQuizid() == report.getQuizes().get(quizCurr).getId()){
//если текущий результат относится к текущему пользователю
if (report.getResults().get(resultCurr).getUserid() == report.getUsers().get(userCurr).getId()){
string.add(report.getResults().get(resultCurr).getGrade());
string.add(report.getResults().get(resultCurr).getTime());
find = true;
}
quizname = report.getQuizes().get(quizCurr).getName();
}
resultCurr++;
quizCurr++;
}
//поиск индекса ячейки, куда писать результаты
int ihead = 0;
int headerCurr = 0;//номер ячейки в которую писать результаты тестирования (+2)
while (ihead < header.length){
if (quizname.equals(header[ihead])){
headerCurr = ihead;
ihead++;
}
ihead++;
}
//формируем ячейку grade
d[userCurr][headerCurr] = report.getResults().get(resultCurr).getGrade();
//формируем ячейку time
Long time = report.getResults().get(resultCurr).getTime();
String t = LocalTime.MIN.plusSeconds(time).toString();
d[userCurr][headerCurr + 1] = t;
}
else{
string.add(" ");
string.add(" ");
find = false;
}
find = false;
quizCurr++;
}
//пишем строку в d
int j = 0;
while (j < string.size()){
d[userCurr][j] = string.toArray()[j];
j++;
resultCurr++;
}
userCurr++;
}

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

@ -1,7 +1,5 @@ @@ -1,7 +1,5 @@
package ru.egspt;
import java.util.ArrayList;
public class TagControls {
//добавляем тег в модель
public static void addTag(App app){
@ -19,8 +17,6 @@ public class TagControls { @@ -19,8 +17,6 @@ public class TagControls {
report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults()));
//формирование таблицы отчетов
app.getReportPane().updateReport(report);
//app.getReportPane().setReportContent(report);
}
//удаляем тег из модели
public static void removeTag(App app){

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