Browse Source

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

master
esoe 2 years ago
parent
commit
02392c7c57
  1. 61
      src/main/java/ru/egspt/ReportPane.java
  2. 92
      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 {
public void init(){ public void init(){
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.add(reportTablePane, BorderLayout.NORTH); 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); TitledBorder border = new TitledBorder(new LineBorder(Color.black), "report", TitledBorder.CENTER, TitledBorder.CENTER);
this.setBorder(border); this.setBorder(border);
this.setVisible(true); this.setVisible(true);
@ -48,35 +46,9 @@ public class ReportPane extends JPanel {
reportTablePane.setBorder(border); reportTablePane.setBorder(border);
reportTablePane.setVisible(true); 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 * @param report
*/ */
public void updateReport(Data report){ public void updateReport(Data report){
@ -85,36 +57,9 @@ public class ReportPane extends JPanel {
setReportTableModel(new ReportTableModel(report)); setReportTableModel(new ReportTableModel(report));
DefaultTableModel dm = new DefaultTableModel(getReportTableModel().getData(), getReportTableModel().getHeader()); DefaultTableModel dm = new DefaultTableModel(getReportTableModel().getData(), getReportTableModel().getHeader());
getReportTable().setModel(dm); getReportTable().setModel(dm);
//отображение в таблице отчета по тегу
//System.out.println("отображение в таблице отчета по тегу " + " ... ");
//setReportTable(new JTable(getReportTableModel()));
getReportTable().revalidate(); 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().fireTableDataChanged();//оповещаем об изменении данных
getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!! getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!!
}
public void setReportContent(Data report){
//устанавливаем заголовки
setReportHeader(report);
//устанавливаем данные
setReportData(report);
getReportTableModel().fireTableStructureChanged();//оповещаем об изменении структуры модели-таблицы!!!
getReportTableModel().fireTableDataChanged();//оповещаем об изменении данных
//getReportTable().repaint();
} }
public void setupReportTextPane(){} public void setupReportTextPane(){}
public void setupReportSettingsPane(){} public void setupReportSettingsPane(){}
@ -142,9 +87,8 @@ public class ReportPane extends JPanel {
public JTable getReportTable() { public JTable getReportTable() {
return reportTable; return reportTable;
} }
public void putTableToConsole(JTable table){ //данные таблицы в консоль
//Данные таблицы в консоль public void toConsole(JTable table){
//table.getModel();
//заголовки //заголовки
int i = 0; int i = 0;
while (i < table.getModel().getColumnCount()){ while (i < table.getModel().getColumnCount()){
@ -164,5 +108,4 @@ public class ReportPane extends JPanel {
i++; i++;
} }
} }
} }

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

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

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

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