esoe 2 years ago
parent
commit
14c3fd138d
  1. 2
      src/main/java/ru/egspt/App.java
  2. 11
      src/main/java/ru/egspt/BaseControls.java
  3. 53
      src/main/java/ru/egspt/Data.java
  4. 5
      src/main/java/ru/egspt/QuizesListModel.java
  5. 62
      src/main/java/ru/egspt/QuizesTableModel.java
  6. 124
      src/main/java/ru/egspt/ReportPane.java
  7. 18
      src/main/java/ru/egspt/Result.java
  8. 5
      src/main/java/ru/egspt/ResultsListModel.java
  9. 64
      src/main/java/ru/egspt/ResultsTableModel.java
  10. 8
      src/main/java/ru/egspt/TagControls.java
  11. 3
      src/main/java/ru/egspt/UserListModel.java
  12. 63
      src/main/java/ru/egspt/UsersTableModel.java
  13. BIN
      target/classes/ru/egspt/App.class
  14. BIN
      target/classes/ru/egspt/BaseControls.class
  15. BIN
      target/classes/ru/egspt/Data.class
  16. BIN
      target/classes/ru/egspt/QuizesListModel.class
  17. BIN
      target/classes/ru/egspt/QuizesTableModel.class
  18. BIN
      target/classes/ru/egspt/ReportPane.class
  19. BIN
      target/classes/ru/egspt/Result.class
  20. BIN
      target/classes/ru/egspt/ResultsListModel.class
  21. BIN
      target/classes/ru/egspt/ResultsTableModel.class
  22. BIN
      target/classes/ru/egspt/TagControls.class
  23. BIN
      target/classes/ru/egspt/UserListModel.class
  24. BIN
      target/classes/ru/egspt/UsersTableModel.class

2
src/main/java/ru/egspt/App.java

@ -29,8 +29,6 @@ public class App extends JPanel{
mainframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); mainframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
mainframe.add(this); mainframe.add(this);
mainframe.setSize(640, 480); mainframe.setSize(640, 480);
//mainframe.setLocationByPlatform(true);
//mainframe.pack();
mainframe.setVisible(true); mainframe.setVisible(true);
} }
/** /**

11
src/main/java/ru/egspt/BaseControls.java

@ -11,12 +11,15 @@ public class BaseControls {
String password = String.valueOf(app.getAccessPane().getPassField().getPassword()); String password = String.valueOf(app.getAccessPane().getPassField().getPassword());
app.getBase().getAccess().setPassword(password); app.getBase().getAccess().setPassword(password);
app.getBase().connect();//подключиться к базе app.getBase().connect();//подключиться к базе
app.getData().setUsersFromBase(app.getBase()); //инициация данных из базы
app.getData().getUsersToConsole(app.getData().getUsers()); app.getData().setUsers(app.getData().getUsersFromBase(app.getBase()));
app.getData().setQuizes(app.getData().getQuizesFromBase(app.getBase()));
app.getData().setResults(app.getData().getResultsFromBase(app.getBase()));
//данные в панель отчетов //данные в панель отчетов
app.getReportPane().init(); app.getReportPane().init();
app.getReportPane().setData(app.getData()); app.getReportPane().setUsers(app.getData());
//app.getReportPane().getPreferredSize(); app.getReportPane().setQuizes(app.getData());
app.getReportPane().setResults(app.getData());
app.getReportPane().setVisible(true); app.getReportPane().setVisible(true);
} }

53
src/main/java/ru/egspt/Data.java

@ -1,10 +1,11 @@
package ru.egspt; package ru.egspt;
import java.sql.ResultSet;
import java.util.ArrayList; import java.util.ArrayList;
public class Data extends UserListModel { public class Data extends UserListModel {
ArrayList<Quiz> quizes = new ArrayList<>(); private ArrayList<Quiz> quizes = new ArrayList<>();
ArrayList<Result> results = new ArrayList<>(); private ArrayList<Result> results = new ArrayList<>();
/** /**
* @param quizes the quizes to set * @param quizes the quizes to set
@ -18,6 +19,29 @@ public class Data extends UserListModel {
public ArrayList<Quiz> getQuizes() { public ArrayList<Quiz> getQuizes() {
return quizes; return quizes;
} }
/**
* @return полный перечень опросов из базы
*/
public ArrayList<Quiz> getQuizesFromBase(Base base) {
ArrayList<Quiz> q = new ArrayList<>();
String querry = "SELECT id, name, timelimit FROM mdl_quiz";
ResultSet rs = base.querry(querry);
try {
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
Quiz qu = new Quiz(id, name);
q.add(qu);
}
}
catch (Exception ex){
System.err.println ("Подключение к серверу баз данных не установлено ... ");
ex.printStackTrace();
System.out.println (ex);
}
return q;
}
/** /**
* @param results the results to set * @param results the results to set
*/ */
@ -30,4 +54,29 @@ public class Data extends UserListModel {
public ArrayList<Result> getResults() { public ArrayList<Result> getResults() {
return results; return results;
} }
/**
* @return полный перечень результатов из базы
*/
public ArrayList<Result> getResultsFromBase(Base base) {
ArrayList<Result> r = new ArrayList<>();
String querry = "SELECT id, quiz, userid, grade, timemodified FROM mdl_quiz_grades";
ResultSet rs = base.querry(querry);
try {
while (rs.next()){
int id = rs.getInt("id");
int quizid = rs.getInt("quiz");
int userid = rs.getInt("userid");
double grade = rs.getDouble("grade");
Long time = rs.getLong("timemodified");
Result result = new Result(id, quizid, userid, grade, time);
r.add(result);
}
}
catch (Exception ex){
System.err.println ("Подключение к серверу баз данных не установлено ... ");
ex.printStackTrace();
System.out.println (ex);
}
return r;
}
} }

5
src/main/java/ru/egspt/QuizesListModel.java

@ -1,5 +0,0 @@
package ru.egspt;
public class QuizesListModel {
}

62
src/main/java/ru/egspt/QuizesTableModel.java

@ -0,0 +1,62 @@
package ru.egspt;
import javax.swing.table.AbstractTableModel;
public class QuizesTableModel extends AbstractTableModel{
private String[] header = {"id", "name"};
private Object[][] data;
public QuizesTableModel(Data data){
setData(data);
}
@Override
public int getRowCount() {
return getData().length;
}
@Override
public int getColumnCount() {
return getHeader().length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return getData()[rowIndex][columnIndex];
}
/**
* @return the data
*/
public Object[][] getData() {
return data;
}
/**
*
*/
public void setData(Data data) {
//создаем объект data - инициализация переменной
int row = 0;
row = data.getQuizes().size();
int col = 2;//по количеству заголовков
this.data = new Object[row][col];
//заполняем модель данными пользователей
int i = 0;
while (i < data.getQuizes().size()){
this.data[i][0] = data.getQuizes().get(i).getId();
this.data[i][1] = data.getQuizes().get(i).getName();
i++;
this.fireTableDataChanged();
}
}
/**
* @return the header
*/
public String[] getHeader() {
return header;
}
/**
* @param header the header to set
*/
public void setHeader(String[] header) {
this.header = header;
}
}

124
src/main/java/ru/egspt/ReportPane.java

@ -9,51 +9,123 @@ import javax.swing.JScrollPane;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.border.LineBorder; import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder; import javax.swing.border.TitledBorder;
import javax.swing.table.TableColumnModel;
public class ReportPane extends JPanel{ public class ReportPane extends JPanel{
private JPanel controlPane = new JPanel();//панель кнопок - пока не надо private JPanel controlPane = new JPanel();//панель кнопок - пока не надо
private JButton generateXLSXButton = new JButton("create xlsx"); private JButton generateXLSXButton = new JButton("create xlsx");
private JButton generateTXTButton = new JButton("create txt"); private JButton generateTXTButton = new JButton("create txt");
private JPanel tabPane = new JPanel();//панель таблицы private JPanel usersPane = new JPanel();//панель пользователей
private JTable table; private JPanel quizesPane = new JPanel();//панель опросов
private ReportTableModel tableModel; private JPanel resultsPane = new JPanel();//панель результатов
private JTable usersTable;
private JTable quizesTable;
private JTable resultsTable;
private UsersTableModel usersTableModel;
private QuizesTableModel quizesTableModel;
private ResultsTableModel resultsTableModel;
public ReportPane(){} public ReportPane(){}
public ReportPane(App app){ public ReportPane(App app){
tableModel = new ReportTableModel(app.getData()); setupUsersPane(app);
table = new JTable(tableModel); setupQuizesPane(app);
//table.setTableHeader(tableModel.getHeader()); setupResultsPane(app);
//table.setPreferredScrollableViewportSize(new Dimension(500, 70));
//table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
//table.setAutoResizeMode(JTable.HEIGHT);
//table.setPreferredScrollableViewportSize(table.getPreferredSize());
//table.setFillsViewportHeight(true);
//table.getMaximumSize();
//table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
//scrollPane.getMaximumSize();
tabPane.add(scrollPane);
} }
public void init(){ public void init(){
controlPane.add(generateXLSXButton); this.setupControlPane();
controlPane.add(generateTXTButton);
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.add(controlPane, BorderLayout.NORTH); this.add(controlPane, BorderLayout.NORTH);
this.add(tabPane, BorderLayout.CENTER); this.add(usersPane, BorderLayout.WEST);
tabPane.getMaximumSize(); this.add(quizesPane, BorderLayout.CENTER);
this.add(resultsPane, BorderLayout.EAST);
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);
} }
public void setData(Data data){ public void setupControlPane(){
getTableModel().setData(data); controlPane.add(generateXLSXButton);
controlPane.add(generateTXTButton);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "ControlPane", TitledBorder.CENTER, TitledBorder.CENTER);
controlPane.setBorder(border);
}
/**
* Настройка панели пользователей
*/
public void setupUsersPane(App app){
usersTableModel = new UsersTableModel(app.getData());
usersTable = new JTable(usersTableModel);
//настройка заголовков
int i = 0;
while (i < usersTable.getColumnCount()){
usersTable.getColumnModel().getColumn(i).setHeaderValue(usersTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(usersTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
usersPane.setLayout(new BorderLayout());
usersPane.add(scrollPane);
usersPane.add(new TagPane(app), BorderLayout.NORTH);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Users", TitledBorder.CENTER, TitledBorder.CENTER);
usersPane.setBorder(border);
}
/**
* Настройка панели опросов
*/
public void setupQuizesPane(App app){
quizesTableModel = new QuizesTableModel(app.getData());
quizesTable = new JTable(quizesTableModel);
//настройка заголовков
int i = 0;
while (i < quizesTable.getColumnCount()){
quizesTable.getColumnModel().getColumn(i).setHeaderValue(quizesTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(quizesTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
quizesPane.setLayout(new BorderLayout());
quizesPane.add(scrollPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Quizes", TitledBorder.CENTER, TitledBorder.CENTER);
quizesPane.setBorder(border);
}
/**
* Настройка панели результатов
*/
public void setupResultsPane(App app){
resultsTableModel = new ResultsTableModel(app.getData());
resultsTable = new JTable(resultsTableModel);
//настройка заголовков
int i = 0;
while (i < resultsTable.getColumnCount()){
resultsTable.getColumnModel().getColumn(i).setHeaderValue(resultsTableModel.getHeader()[i]);
i++;
}
JScrollPane scrollPane = new JScrollPane(resultsTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
resultsPane.setLayout(new BorderLayout());
resultsPane.add(scrollPane, BorderLayout.CENTER);
TitledBorder border = new TitledBorder(new LineBorder(Color.black), "Results", TitledBorder.CENTER, TitledBorder.CENTER);
resultsPane.setBorder(border);
}
public void setQuizes(Data data){
getQuizesTableModel().setData(data);
}
public void setUsers(Data data){
getUsersTableModel().setData(data);
}
public void setResults(Data data){
getResultsTableModel().setData(data);
} }
/** /**
* @return the tableModel * @return the tableModel
*/ */
public ReportTableModel getTableModel() { public UsersTableModel getUsersTableModel() {
return tableModel; return usersTableModel;
}
/**
* @return the quizesTableModel
*/
public QuizesTableModel getQuizesTableModel() {
return quizesTableModel;
}
public ResultsTableModel getResultsTableModel() {
return resultsTableModel;
} }
} }

18
src/main/java/ru/egspt/Result.java

@ -1,12 +1,20 @@
package ru.egspt; package ru.egspt;
public class Result { public class Result {
int id; private int id;
int quizid; private int quizid;
int userid; private int userid;
double grade; private double grade;
Long time; private Long time;
public Result(){}
public Result(int id, int quizid, int userid, double grade,Long time){
this.setId(id);
this.setQuizid(quizid);
this.setUserid(userid);
this.setGrade(grade);
this.setTime(time);
}
/** /**
* @param id the id to set * @param id the id to set
*/ */

5
src/main/java/ru/egspt/ResultsListModel.java

@ -1,5 +0,0 @@
package ru.egspt;
public class ResultsListModel {
}

64
src/main/java/ru/egspt/ResultsTableModel.java

@ -0,0 +1,64 @@
package ru.egspt;
import javax.swing.table.AbstractTableModel;
public class ResultsTableModel extends AbstractTableModel{
private String[] header = {"id", "Quizid", "Userid", "Grade", "Time"};
private Object[][] data;
public ResultsTableModel(Data data){
setData(data);
}
@Override
public int getRowCount() {
return getData().length;
}
@Override
public int getColumnCount() {
return getHeader().length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return getData()[rowIndex][columnIndex];
}
/**
* @return the data
*/
public Object[][] getData() {
return data;
}
/**
*
*/
public void setData(Data data) {
//создаем объект data - инициализация переменной
int row = 0;
row = data.getResults().size();
int col = 5;//по количеству заголовков
this.data = new Object[row][col];
//заполняем модель данными пользователей
int i = 0;
while (i < data.getResults().size()){
this.data[i][0] = data.getResults().get(i).getId();
this.data[i][1] = data.getResults().get(i).getQuizid();
this.data[i][2] = data.getResults().get(i).getUserid();
this.data[i][3] = data.getResults().get(i).getGrade();
this.data[i][4] = data.getResults().get(i).getTime();
i++;
this.fireTableDataChanged();
}
}
/**
* @return the header
*/
public String[] getHeader() {
return header;
}
/**
* @param header the header to set
*/
public void setHeader(String[] header) {
this.header = header;
}
}

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

@ -11,8 +11,8 @@ public class TagControls {
//Выводим пользователей в отчет //Выводим пользователей в отчет
Data data = new Data(); Data data = new Data();
data.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel())); data.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel()));
app.getReportPane().setData(data); app.getReportPane().setUsers(data);
app.getReportPane().getTableModel().fireTableDataChanged(); app.getReportPane().getUsersTableModel().fireTableDataChanged();
} }
//удаляем тег из модели //удаляем тег из модели
public static void removeTag(App app){ public static void removeTag(App app){
@ -25,7 +25,7 @@ public class TagControls {
//Выводим пользователей в отчет //Выводим пользователей в отчет
Data data = new Data(); Data data = new Data();
data.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel())); data.setUsers(app.getData().getUsersByTag(app.getData().getUsers(), app.getTagModel()));
app.getReportPane().setData(data); app.getReportPane().setUsers(data);
app.getReportPane().getTableModel().fireTableDataChanged(); app.getReportPane().getUsersTableModel().fireTableDataChanged();
} }
} }

3
src/main/java/ru/egspt/UserListModel.java

@ -19,11 +19,12 @@ public class UserListModel {
public void setUsers(ArrayList<User> users) { public void setUsers(ArrayList<User> users) {
this.users = users; this.users = users;
} }
//берем список пользователей из базы (сразу после подключения к базе данных) // устанавливаем список пользователей из базы как текущий
public void setUsersFromBase(Base base){ public void setUsersFromBase(Base base){
ArrayList<User> us = getUsersFromBase(base); ArrayList<User> us = getUsersFromBase(base);
setUsers(us); setUsers(us);
} }
// берем полный список пользователей из базы
public ArrayList<User> getUsersFromBase(Base base){ public ArrayList<User> getUsersFromBase(Base base){
ArrayList<User> us = new ArrayList<>(); ArrayList<User> us = new ArrayList<>();
String querry = "SELECT id, username, email FROM mdl_user"; String querry = "SELECT id, username, email FROM mdl_user";

63
src/main/java/ru/egspt/UsersTableModel.java

@ -0,0 +1,63 @@
package ru.egspt;
import javax.swing.table.AbstractTableModel;
public class UsersTableModel extends AbstractTableModel{
private Object[] header = new String[]{"id", "login", "mail"};
private Object[][] data;
public UsersTableModel(Data data){
setData(data);
}
@Override
public int getRowCount() {
return getData().length;
}
@Override
public int getColumnCount() {
return getHeader().length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return getData()[rowIndex][columnIndex];
}
/**
* @return the data
*/
public Object[][] getData() {
return data;
}
/**
*
*/
public void setData(Data data) {
//создаем объект data - инициализация переменной
int row = 0;
row = data.getUsers().size();
int col = 3;//по количеству заголовков
this.data = new Object[row][col];
//заполняем модель данными пользователей
int i = 0;
while (i < data.getUsers().size()){
this.data[i][0] = data.getUsers().get(i).getId();
this.data[i][1] = data.getUsers().get(i).getLogin();
this.data[i][2] = data.getUsers().get(i).getMail();
i++;
this.fireTableDataChanged();
}
}
/**
* @return the header
*/
public Object[] getHeader() {
return header;
}
/**
* @param header the header to set
*/
public void setHeader(String[] header) {
this.header = header;
}
}

BIN
target/classes/ru/egspt/App.class

Binary file not shown.

BIN
target/classes/ru/egspt/BaseControls.class

Binary file not shown.

BIN
target/classes/ru/egspt/Data.class

Binary file not shown.

BIN
target/classes/ru/egspt/QuizesListModel.class

Binary file not shown.

BIN
target/classes/ru/egspt/QuizesTableModel.class

Binary file not shown.

BIN
target/classes/ru/egspt/ReportPane.class

Binary file not shown.

BIN
target/classes/ru/egspt/Result.class

Binary file not shown.

BIN
target/classes/ru/egspt/ResultsListModel.class

Binary file not shown.

BIN
target/classes/ru/egspt/ResultsTableModel.class

Binary file not shown.

BIN
target/classes/ru/egspt/TagControls.class

Binary file not shown.

BIN
target/classes/ru/egspt/UserListModel.class

Binary file not shown.

BIN
target/classes/ru/egspt/UsersTableModel.class

Binary file not shown.
Loading…
Cancel
Save