Guest User

Untitled

a guest
Feb 7th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.71 KB | None | 0 0
  1. package school.database;
  2.  
  3. import school.database.Grade;
  4. import school.database.SchoolClass;
  5. import school.database.Student;
  6.  
  7. import java.sql.*;
  8. import java.util.ArrayList;
  9.  
  10.  
  11. public class DatabaseDAO {
  12.  
  13. private static final String URL = "jdbc:mysql://localhost:3306/school_db?useTimezone=true&serverTimezone=GMT";
  14. private static final String USER = "root";
  15. private static final String PASSWORD = "123456";
  16.  
  17. private static final String GET_ALL_CLASSES_QUERY =
  18. "SELECT id, name FROM class ORDER BY name";
  19.  
  20. private static final String GET_STUDENTS_IN_CLASS_QUERY =
  21. "SELECT * FROM student WHERE class_id = ?";
  22.  
  23. private static final String GET_STUDENT_GRADES_QUERY =
  24. "SELECT s.name, gv.values, g.grade_date, t.fullnamen" +
  25. "FROM grade g JOIN subject sn" +
  26. "ON g.subject_id = s.idn" +
  27. "JOIN student stn" +
  28. "ON g.student_id = st.idn" +
  29. "JOIN grade_value gvn" +
  30. "ON g.grade_id = gv.idn" +
  31. "JOIN teacher tn" +
  32. "ON g.teacher_id = t.idn" +
  33. "WHERE st.id = ?";
  34.  
  35. private static final String PUT_CLASS_IN_QUERY = "INSERT INTO class (name) VALUES (?)";
  36.  
  37. private Connection conn;
  38.  
  39. public DatabaseDAO() {
  40. try {
  41. conn = DriverManager.getConnection(URL, USER, PASSWORD);
  42. } catch (SQLException e) {
  43. throw new RuntimeException(e);
  44. }
  45. }
  46.  
  47. public ArrayList<SchoolClass> readAllClassesFromDB() {
  48. ArrayList<SchoolClass> result = new ArrayList<>();
  49.  
  50. try (PreparedStatement stmt = conn.prepareStatement(GET_ALL_CLASSES_QUERY)) {
  51. ResultSet rs = stmt.executeQuery();
  52. while (rs.next()) {
  53. int id = rs.getInt("id");
  54. String name = rs.getString("name");
  55. SchoolClass schoolClass = new SchoolClass(id, name);
  56. result.add(schoolClass);
  57. }
  58. } catch (SQLException e) {
  59. throw new RuntimeException(e);
  60. }
  61.  
  62. return result;
  63. }
  64.  
  65. public ArrayList<Student> readStudentsInClassFromDB(int classID) {
  66. ArrayList<Student> result = new ArrayList<>();
  67.  
  68. try (PreparedStatement stmt = conn.prepareStatement(GET_STUDENTS_IN_CLASS_QUERY)) {
  69. stmt.setInt(1, classID);
  70. ResultSet rs = stmt.executeQuery();
  71. while (rs.next()) {
  72. int studentID = rs.getInt("id");
  73. String firstName = rs.getString("name");
  74. String lastName = rs.getString("surname");
  75. Date birthday = rs.getDate("birthday");
  76. Student student = new Student(studentID, firstName, lastName, "PATRON", birthday);
  77. result.add(student);
  78. }
  79. } catch (SQLException e) {
  80. throw new RuntimeException(e);
  81. }
  82.  
  83. return result;
  84. }
  85.  
  86. public ArrayList<Grade> readGradesFromDB(int studentID) {
  87. ArrayList<Grade> result = new ArrayList<>();
  88.  
  89. try (PreparedStatement stmt = conn.prepareStatement(GET_STUDENT_GRADES_QUERY)) {
  90. stmt.setInt(1, studentID);
  91. ResultSet rs = stmt.executeQuery();
  92. while (rs.next()) {
  93. String subject = rs.getString("name");
  94. int value = rs.getInt("values");
  95. java.util.Date date = rs.getDate("grade_date");
  96. String teacher = rs.getString("fullname");
  97. Grade grade = new Grade(subject, value, date);
  98. grade.setTeacher(teacher);
  99. result.add(grade);
  100. }
  101. } catch (SQLException e) {
  102. throw new RuntimeException(e);
  103. }
  104.  
  105. return result;
  106. }
  107.  
  108.  
  109.  
  110. public boolean writeClassinDB(Class clazz) {
  111. boolean result = false;
  112. try {
  113. PreparedStatement stmt = conn.prepareStatement(PUT_CLASS_IN_QUERY);
  114.  
  115. stmt.setString(1, clazz.getName());
  116.  
  117. if(stmt.executeUpdate() == 1){
  118.  
  119. result = true;
  120. }
  121.  
  122. } catch (SQLException e) {
  123. throw new RuntimeException(e);
  124. }
  125.  
  126. return result;
  127. }
  128. }
  129.  
  130. package school.frames;
  131.  
  132. import school.Main;
  133. import school.database.SchoolClass;
  134.  
  135. import javax.management.openmbean.KeyAlreadyExistsException;
  136. import javax.swing.*;
  137.  
  138. public class CreateClassFrame extends MyFrame {
  139.  
  140. private static Integer[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
  141. private static Character[] letters = {'А', 'Б', 'В', 'Г'};
  142.  
  143. public CreateClassFrame(JFrame parent) {
  144. super("Создать класс", parent, 250, 150);
  145. }
  146.  
  147. public void showFrame() {
  148. JLabel numLabel = new JLabel("Номер класса: ");
  149. numLabel.setBounds(10, 10, 150, 25);
  150. JComboBox<Integer> numsBox = new JComboBox<>(nums);
  151. numsBox.setBounds(150, 10, 90, 25);
  152.  
  153. JLabel letterLabel = new JLabel("Буква класса: ");
  154. letterLabel.setBounds(10, 45, 150, 25);
  155. JComboBox<Character> lettersBox = new JComboBox<>(letters);
  156. lettersBox.setBounds(150, 45, 90, 25);
  157.  
  158. JButton cancel = new JButton("Отмена");
  159. cancel.setBounds(10, 90, 110, 25);
  160. cancel.addActionListener(actionEvent -> dispose());
  161.  
  162. JButton done = new JButton("Готово");
  163. done.setBounds(130, 90, 110, 25);
  164. done.addActionListener(actionEvent -> {
  165. try {
  166. if (numsBox.getSelectedItem() != null && lettersBox.getSelectedItem() != null) {
  167. Main.addClass(new SchoolClass(0, "" + (Integer) numsBox.getSelectedItem() + (Character) lettersBox.getSelectedItem()));
  168. dispose();
  169. }
  170. } catch (KeyAlreadyExistsException e) {
  171. JOptionPane.showMessageDialog(this, "Класс " + e.getMessage() + " уже существует");
  172. }
  173. });
  174.  
  175. add(numLabel);
  176. add(numsBox);
  177. add(letterLabel);
  178. add(lettersBox);
  179. add(cancel);
  180. add(done);
  181.  
  182. setVisible(true);
  183. }
  184.  
  185. }
  186.  
  187. package school.database;
  188.  
  189. import school.Main;
  190.  
  191. import javax.swing.*;
  192. import java.util.ArrayList;
  193. import java.util.Comparator;
  194. import java.util.regex.Matcher;
  195. import java.util.regex.Pattern;
  196.  
  197. public class SchoolClass {
  198.  
  199. private int id;
  200. private String name;
  201.  
  202. private ArrayList<Student> students;
  203.  
  204.  
  205.  
  206. public SchoolClass(int id, String name, ArrayList<Student> students) {
  207. this.id = id;
  208. this.name = name;
  209. this.students = students;
  210. }
  211.  
  212. public SchoolClass(int id, String name) {
  213. this.id = id;
  214. this.name = name;
  215. students = new ArrayList<>();
  216. }
  217.  
  218. public String getName() {
  219. return name;
  220. }
  221.  
  222. public ArrayList<Student> getStudents() {
  223. return students;
  224. }
  225.  
  226. public Student[] getStudentsAsArray() {
  227. students = Main.sqlTest.readStudentsInClassFromDB(id);
  228. return this.students.toArray(new Student[0]);
  229. }
  230.  
  231. public void addStudent(Student student) {
  232. students.add(student);
  233. students.sort(Comparator.comparing(Student::toString));
  234. }
  235.  
  236. public void deleteStudent(Student student) {
  237. students.remove(student);
  238. }
  239.  
  240. @Override
  241. public String toString() {
  242. return getName();
  243. }
  244. }
  245.  
  246. done.addActionListener(actionEvent -> {
  247. try {
  248. if (numsBox.getSelectedItem() != null && lettersBox.getSelectedItem() != null) {
  249. databaseDAO.createSchoolClass(new SchoolClass(0, "" + (Integer) numsBox.getSelectedItem() + (Character) lettersBox.getSelectedItem()));
  250. dispose();
  251. }
  252. } catch (KeyAlreadyExistsException e) {
  253. JOptionPane.showMessageDialog(this, "Класс " + e.getMessage() + " уже существует");
  254. }
  255. });
Add Comment
Please, Sign In to add comment