diff --git a/src/main/java/ru/egspt/Data.java b/src/main/java/ru/egspt/Data.java index 5fb25dd..e5f11e7 100644 --- a/src/main/java/ru/egspt/Data.java +++ b/src/main/java/ru/egspt/Data.java @@ -47,7 +47,6 @@ public class Data extends UserListModel { //перебор опросов int i = 0; while (i < quizes.size()){ - //перебор результатов int j = 0; while (j < results.size()){ if (quizes.get(i).getId() == results.get(j).getQuizid()){ @@ -66,10 +65,10 @@ public class Data extends UserListModel { q.add(quizes.get(i)); } } + j++; } - j++; + i++; } - i++; return q; } /** diff --git a/src/main/java/ru/egspt/ReportTableModel.java b/src/main/java/ru/egspt/ReportTableModel.java index 2813ccd..85022b2 100644 --- a/src/main/java/ru/egspt/ReportTableModel.java +++ b/src/main/java/ru/egspt/ReportTableModel.java @@ -1,9 +1,11 @@ package ru.egspt; +import java.util.ArrayList; + import javax.swing.table.AbstractTableModel; public class ReportTableModel extends AbstractTableModel{ - private String[] header = new String[]{"id", "login", "mail"}; + private Object[] header = new String[]{"id", "login", "mail"}; private Object[][] data; public ReportTableModel(){} public ReportTableModel(App app){ @@ -26,28 +28,39 @@ public class ReportTableModel extends AbstractTableModel{ /** * @param header the header to set */ - public void setHeader(String[] header) { + public void setHeader(Object[] header) { this.header = header; } /** * Настройка заголовков отчета * @param data */ - public void setHeader(Data data){ + public Object[] getHeaderByQuize(Data report){ /** * Определение количества заголовков: - * первые три (с нумерацией строк - четыре) заголовка определяются таблицей пользователей и всегда постоянны + * первые три заголовка определяются таблицей пользователей и всегда постоянны * остальные заголовки определяются: * количеством тестов, в прохождении которых участвовали пользователи, помноженным на * количество отчетных данных (результат сдачи теста и время потраченное на прохождение теста) */ - //String[] h = new String[3 + 0]; - // + ArrayList header = new ArrayList(); + header.add("id"); + header.add("login"); + header.add("mail"); + //заголовки по названиям опросов + int i = 0; + while (i < report.getQuizes().size()){ + header.add(report.getQuizes().get(i).getName()); + //System.out.println("Пишем заголовок: " + base.getQuizes().get(i).getName()); + header.add(""); + i++; + } + return header.toArray(); } /** * @return the header */ - public String[] getHeader() { + public Object[] getHeader() { return header; } /** @@ -61,16 +74,28 @@ public class ReportTableModel extends AbstractTableModel{ */ public void setData(Data report) { //создаем объект data - инициализация переменной - this.data = new Object[report.getUsers().size()][3]; - //заполняем модель данными пользователей - int i = 0; - 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(); + Object[][] d = new Object[report.getUsers().size()][3 + 2*report.getQuizes().size()]; + //построчно заполняем модель отчета данными + 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()); + //перебираем результаты пользователя + + + + //пишем строку в d + int j = 0; + while (j < d[userCurr].length){ + d[i][j] = string.toArray()[j]; + j++; + } + userCurr++; } + this.data = d; } /** * @return the data diff --git a/src/main/java/ru/egspt/TagControls.java b/src/main/java/ru/egspt/TagControls.java index 4a9acbb..70b1b8d 100644 --- a/src/main/java/ru/egspt/TagControls.java +++ b/src/main/java/ru/egspt/TagControls.java @@ -8,14 +8,16 @@ public class TagControls { //обновляем текстовую область app.getTagPane().updateTagArea(app.getTagModel()); app.getTagPane().getCurrentTagField().setText(""); - //Подготавливаем данные для отчета (по тегам) + //Подготавливаем данные для отчета (перебор данных по тегам) Data report = new Data(); report.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel())); report.setResults(app.getData().getResultsByUsers(app.getData().getResults(), report.getUsers())); report.setQuizes(app.getData().getQuizesByResults(app.getData().getQuizes(), report.getResults())); - //report.setHeaders(); + //формирование заголовков таблицы отчета + app.getReportPane().getReportTableModel().setHeader(app.getReportPane().getReportTableModel().getHeaderByQuize(report)); //выводим пользователей в отчет - app.getReportPane().setReportData(report); + app.getReportPane().getReportTableModel().setData(report); + //app.getReportPane().setupReportTablePane(app); app.getReportPane().getReportTableModel().fireTableDataChanged(); } //удаляем тег из модели diff --git a/target/classes/ru/egspt/Data.class b/target/classes/ru/egspt/Data.class index 447924e..3b5f9bc 100644 Binary files a/target/classes/ru/egspt/Data.class and b/target/classes/ru/egspt/Data.class differ diff --git a/target/classes/ru/egspt/ReportPane.class b/target/classes/ru/egspt/ReportPane.class index 05c1e9b..22afd7e 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 39b6082..b438347 100644 Binary files a/target/classes/ru/egspt/ReportTableModel.class and b/target/classes/ru/egspt/ReportTableModel.class differ diff --git a/target/classes/ru/egspt/TagControls.class b/target/classes/ru/egspt/TagControls.class index 124ca5d..1d47575 100644 Binary files a/target/classes/ru/egspt/TagControls.class and b/target/classes/ru/egspt/TagControls.class differ