From 02392c7c5726fa99da3f8d2cae4cba4b054b786b Mon Sep 17 00:00:00 2001 From: esoe Date: Wed, 8 Jun 2022 17:05:28 +0300 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=87=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/egspt/ReportPane.java | 61 +---------- src/main/java/ru/egspt/ReportTableModel.java | 100 +++++++++++------- src/main/java/ru/egspt/TagControls.java | 4 - target/classes/ru/egspt/ReportPane.class | Bin 5846 -> 4757 bytes .../classes/ru/egspt/ReportTableModel.class | Bin 4471 -> 5023 bytes target/classes/ru/egspt/TagControls.class | Bin 2119 -> 2119 bytes 6 files changed, 65 insertions(+), 100 deletions(-) diff --git a/src/main/java/ru/egspt/ReportPane.java b/src/main/java/ru/egspt/ReportPane.java index 20634eb..d502b45 100644 --- a/src/main/java/ru/egspt/ReportPane.java +++ b/src/main/java/ru/egspt/ReportPane.java @@ -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 { 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 { 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 { 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 { i++; } } - } diff --git a/src/main/java/ru/egspt/ReportTableModel.java b/src/main/java/ru/egspt/ReportTableModel.java index fc999f2..ce7e794 100644 --- a/src/main/java/ru/egspt/ReportTableModel.java +++ b/src/main/java/ru/egspt/ReportTableModel.java @@ -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{ 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 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++; } diff --git a/src/main/java/ru/egspt/TagControls.java b/src/main/java/ru/egspt/TagControls.java index e6de355..4c75a8a 100644 --- a/src/main/java/ru/egspt/TagControls.java +++ b/src/main/java/ru/egspt/TagControls.java @@ -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 { report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults())); //формирование таблицы отчетов app.getReportPane().updateReport(report); - //app.getReportPane().setReportContent(report); - } //удаляем тег из модели public static void removeTag(App app){ diff --git a/target/classes/ru/egspt/ReportPane.class b/target/classes/ru/egspt/ReportPane.class index 092563d30328488498bcfa041a27c0f660cae377..225dfa99ffff546f5db416ae0ad03ab48ac669c6 100644 GIT binary patch delta 1307 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 aPejaBL{nz!RYXzN-{=OS6fVa^ss90`N3$3J diff --git a/target/classes/ru/egspt/ReportTableModel.class b/target/classes/ru/egspt/ReportTableModel.class index 59d532e0c75ad494b919ae3d270582509991249e..4b9af58a7fb3c0cdeedd36b72be359f11a7b70b5 100644 GIT binary patch delta 2226 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 ZWGgny==FwG=x(!(1FDR#WmUvC{{bRTz>EL@ diff --git a/target/classes/ru/egspt/TagControls.class b/target/classes/ru/egspt/TagControls.class index aa297a8d55f807e7f078a00990a44430e731936e..fdbedd60332a5e11038067a39f275cb00df3bcdf 100644 GIT binary patch delta 93 zcmX>ua9m(R7#kz=a#BE*G7PE=atyi*@(j)l3Jj49iVXP-$_(WUDw7pC)Bw!w4XywH delta 93 zcmX>ua9m(R7#kz&Hq)$