diff --git a/src/main/java/ru/egspt/ReportPane.java b/src/main/java/ru/egspt/ReportPane.java index d3e8e5c..43a4b3b 100644 --- a/src/main/java/ru/egspt/ReportPane.java +++ b/src/main/java/ru/egspt/ReportPane.java @@ -34,7 +34,7 @@ public class ReportPane extends JPanel { reportTable = new JTable(reportTableModel); //настройка заголовков int i = 0; - while (i < reportTable.getColumnCount()){ + while (i < reportTableModel.getHeader().length){ reportTable.getColumnModel().getColumn(i).setHeaderValue(reportTableModel.getHeader()[i]); i++; } diff --git a/src/main/java/ru/egspt/ReportTableModel.java b/src/main/java/ru/egspt/ReportTableModel.java index 85022b2..bc6b3a3 100644 --- a/src/main/java/ru/egspt/ReportTableModel.java +++ b/src/main/java/ru/egspt/ReportTableModel.java @@ -5,10 +5,20 @@ import java.util.ArrayList; import javax.swing.table.AbstractTableModel; public class ReportTableModel extends AbstractTableModel{ - private Object[] header = new String[]{"id", "login", "mail"}; + private Object[] header;// = new String[]{"id", "login", "mail"}; private Object[][] data; public ReportTableModel(){} + public ReportTableModel(Object[] header, Object[][] data){ + setHeader(header); + setData(data); + } + public ReportTableModel(Data data){ + setHeader(getHeaderByQuize(data)); + setData(data); + } + public ReportTableModel(App app){ + setHeader(getHeaderByQuize(app.getData())); setData(app.getData()); } @Override @@ -30,6 +40,7 @@ public class ReportTableModel extends AbstractTableModel{ */ public void setHeader(Object[] header) { this.header = header; + fireTableDataChanged(); } /** * Настройка заголовков отчета @@ -51,7 +62,7 @@ public class ReportTableModel extends AbstractTableModel{ int i = 0; while (i < report.getQuizes().size()){ header.add(report.getQuizes().get(i).getName()); - //System.out.println("Пишем заголовок: " + base.getQuizes().get(i).getName()); + System.out.println("Пишем заголовок: " + report.getQuizes().get(i).getName()); header.add(""); i++; } @@ -79,18 +90,33 @@ public class ReportTableModel extends AbstractTableModel{ 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()){ + //перебираем результаты, ищем результаты по текущему опросу + int resultCurr = 0; + 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()){ + string.add(report.getResults().get(resultCurr).getGrade()); + string.add(report.getResults().get(resultCurr).getTime()); + } + } + resultCurr++; + } + quizCurr++; + } //пишем строку в d int j = 0; while (j < d[userCurr].length){ - d[i][j] = string.toArray()[j]; + d[userCurr][j] = string.toArray()[j]; j++; } userCurr++; diff --git a/src/main/java/ru/egspt/TagControls.java b/src/main/java/ru/egspt/TagControls.java index 70b1b8d..3a57bf3 100644 --- a/src/main/java/ru/egspt/TagControls.java +++ b/src/main/java/ru/egspt/TagControls.java @@ -15,7 +15,7 @@ public class TagControls { report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults())); //формирование заголовков таблицы отчета app.getReportPane().getReportTableModel().setHeader(app.getReportPane().getReportTableModel().getHeaderByQuize(report)); - //выводим пользователей в отчет + //формирование данных в таблице app.getReportPane().getReportTableModel().setData(report); //app.getReportPane().setupReportTablePane(app); app.getReportPane().getReportTableModel().fireTableDataChanged(); diff --git a/target/classes/ru/egspt/ReportPane.class b/target/classes/ru/egspt/ReportPane.class index 22afd7e..d7e1fad 100644 Binary files a/target/classes/ru/egspt/ReportPane.class and b/target/classes/ru/egspt/ReportPane.class differ diff --git a/target/classes/ru/egspt/ReportTableModel.class b/target/classes/ru/egspt/ReportTableModel.class index b438347..c89e2aa 100644 Binary files a/target/classes/ru/egspt/ReportTableModel.class and b/target/classes/ru/egspt/ReportTableModel.class differ