@ -5,10 +5,20 @@ import java.util.ArrayList;
@@ -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{
@@ -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{
@@ -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{
@@ -79,18 +90,33 @@ public class ReportTableModel extends AbstractTableModel{
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 ( ) ) {
//перебираем результаты, ищем результаты по текущему опросу
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 + + ;