You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.6 KiB
129 lines
4.6 KiB
package ru.egspt; |
|
|
|
import java.sql.ResultSet; |
|
import java.util.ArrayList; |
|
|
|
public class Data extends UserListModel { |
|
private ArrayList<Quiz> quizes = new ArrayList<>(); |
|
private ArrayList<Result> results = new ArrayList<>(); |
|
|
|
/** |
|
* @param quizes the quizes to set |
|
*/ |
|
public void setQuizes(ArrayList<Quiz> quizes) { |
|
this.quizes = quizes; |
|
} |
|
/** |
|
* @return the quizes |
|
*/ |
|
public ArrayList<Quiz> getQuizes() { |
|
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; |
|
} |
|
public ArrayList<Quiz> getQuizesByResults(ArrayList<Quiz> quizes, ArrayList<Result> results) { |
|
ArrayList<Quiz> q = new ArrayList<>(); |
|
//перебор опросов |
|
int i = 0; |
|
while (i < quizes.size()){ |
|
int j = 0; |
|
while (j < results.size()){ |
|
if (quizes.get(i).getId() == results.get(j).getQuizid()){ |
|
boolean b = true; |
|
//перебираем уже записанные опросы |
|
int k = 0; |
|
while (k < q.size()){ |
|
//сравниваем записанные опросы с текущим совпавшим id опроса |
|
if (q.get(k).getId() == results.get(j).getQuizid()){ |
|
b = false; |
|
} |
|
k++; |
|
} |
|
//если не найдено совпадение, добавляем новый опрос к списку |
|
if(b){ |
|
q.add(quizes.get(i)); |
|
} |
|
} |
|
j++; |
|
} |
|
i++; |
|
} |
|
return q; |
|
} |
|
/** |
|
* @param results the results to set |
|
*/ |
|
public void setResults(ArrayList<Result> results) { |
|
this.results = results; |
|
} |
|
/** |
|
* @return the results |
|
*/ |
|
public ArrayList<Result> getResults() { |
|
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; |
|
} |
|
public ArrayList<Result> getResultsByUsers(ArrayList<Result> results, ArrayList<User> users){ |
|
ArrayList<Result> r = new ArrayList<>(); |
|
//перебор результатов |
|
int i = 0; |
|
while (i < results.size()){ |
|
//перебор пользователей |
|
int j = 0; |
|
while (j < users.size()){ |
|
//проверка соответствия по id пользователя |
|
if (results.get(i).getUserid() == users.get(j).getId()){ |
|
r.add(results.get(i));//совпадения пишем в список |
|
} |
|
j++; |
|
} |
|
i++; |
|
} |
|
return r; |
|
} |
|
}
|
|
|