diff --git a/src/dao/ResultDAO.java b/src/dao/ResultDAO.java index 0d627e0..ab86ee3 100644 --- a/src/dao/ResultDAO.java +++ b/src/dao/ResultDAO.java @@ -1,6 +1,5 @@ package dao; -import com.sun.rowset.CachedRowSetImpl; import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; @@ -11,10 +10,12 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.sql.rowset.CachedRowSet; +import javax.sql.rowset.RowSetProvider; import javax.swing.table.TableModel; import model.Criterion; import model.CriterionEditor; @@ -50,8 +51,8 @@ try { try ( - Connection con = JdbcConnection.getConnection(); - PreparedStatement stmt = con.prepareStatement("merge into result (student, criterion, result, comment) values (?,?,?,?)")) { + Connection con = JdbcConnection.getConnection(); + PreparedStatement stmt = con.prepareStatement("merge into result (student, criterion, result, comment) values (?,?,?,?)")) { for (Map.Entry entry : criteria.entrySet()) { CriterionEditor editor = entry.getValue(); @@ -88,8 +89,8 @@ try { try ( - Connection con = JdbcConnection.getConnection(); - PreparedStatement stmt = con.prepareStatement("select * from result where student = ?")) { + Connection con = JdbcConnection.getConnection(); + PreparedStatement stmt = con.prepareStatement("select * from result where student = ?")) { stmt.setString(1, student); @@ -117,17 +118,17 @@ public TableModel getSubmissions() { try ( - Connection con = JdbcConnection.getConnection(); - Statement stmt = con.createStatement()) { + Connection con = JdbcConnection.getConnection(); + Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery("select * from allmarks order by \"Student\""); - CachedRowSet crs = new CachedRowSetImpl(); + CachedRowSet crs = RowSetProvider.newFactory().createCachedRowSet(); + crs.populate(rs); return new RowSetTableModel(crs); - } catch (SQLException ex) { logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); } @@ -140,8 +141,8 @@ Collection> data = new ArrayList<>(); try ( - Connection con = JdbcConnection.getConnection(); - PreparedStatement s = con.prepareStatement(sql);) { + Connection con = JdbcConnection.getConnection(); + PreparedStatement s = con.prepareStatement(sql);) { s.setString(1, student); @@ -174,14 +175,13 @@ } } - public Student findStudentById(Integer id) { - + public Student findStudentById(String id) { try ( - Connection con = JdbcConnection.getConnection(); - PreparedStatement stmt = con.prepareStatement("select * from students where studentid = ?")) { + Connection con = JdbcConnection.getConnection(); + PreparedStatement stmt = con.prepareStatement("select * from students where studentid = ?")) { - stmt.setInt(1, id); + stmt.setString(1, id); ResultSet rs = stmt.executeQuery(); @@ -204,12 +204,11 @@ } - public Student findStudentByUserCode(String userCode) { - + public Student findStudentByUserCode(String userCode) { try ( - Connection con = JdbcConnection.getConnection(); - PreparedStatement stmt = con.prepareStatement("select * from students where usercode = ?")) { + Connection con = JdbcConnection.getConnection(); + PreparedStatement stmt = con.prepareStatement("select * from students where usercode = ?")) { stmt.setString(1, userCode); @@ -218,7 +217,7 @@ if (rs.next()) { Student s = new Student(); - s.setId(rs.getInt("studentid")); + s.setId(rs.getString("studentid")); s.setUserName(rs.getString("usercode")); s.setName(rs.getString("name")); s.setEmail(rs.getString("email")); @@ -232,10 +231,55 @@ return null; - } - + } + private void clear() { criteria = new HashMap<>(); } + public Collection getStudents() { + List students = new ArrayList<>(); + try ( + Connection con = JdbcConnection.getConnection(); + PreparedStatement studs = con.prepareStatement("select * from students where studentid in (select distinct studentid from report) order by usercode")) { + + ResultSet studsRs = studs.executeQuery(); + + while (studsRs.next()) { + String id = studsRs.getString("studentid"); + String name = studsRs.getString("name"); + String usercode = studsRs.getString("usercode"); + String email = studsRs.getString("email"); + Boolean sendFeedback = studsRs.getBoolean("send_feedback"); + Boolean emailSent = studsRs.getBoolean("email_sent"); + Student s = new Student(id, usercode, name, email, sendFeedback, emailSent); + students.add(s); + } + } catch (SQLException ex) { + throw new RuntimeException(ex); + } + return students; + } + + public void mailSent(Student student) { + + try { + + try ( + Connection con = JdbcConnection.getConnection(); + PreparedStatement stmt = con.prepareStatement("update students set email_sent = true where studentid = ?");) { + + stmt.setString(1, student.getId()); + + stmt.executeUpdate(); + con.commit(); + + } + + } catch (SQLException ex) { + throw new RuntimeException(ex); + } + + } + }