package repository; /** * @author weiqi kong * @author */ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import domain.Comment; import domain.Compare; import domain.Project; public class CompareDAO { /** * Add Compare into DB * * @param compare */ public static Compare addCompare(Compare compare) { ResultSet rs; if (searchCompare(compare.getDiagramAId(),compare.getDiagramBId()) != null) { return null; } try { Connection conn = DbManager.getConnection(); PreparedStatement pstmt = conn.prepareStatement( "insert into compare(diagramAId, diagramBId, reportId, promoteCountA,promoteCountB) values (?,?,?,?,?);" ,Statement.RETURN_GENERATED_KEYS); pstmt.setInt(1, compare.getDiagramAId()); pstmt.setInt(2, compare.getDiagramBId()); pstmt.setInt(3, compare.getReportId()); pstmt.setDouble(4, compare.getPromoteCountA()); pstmt.setDouble(5, compare.getPromoteCountB()); // Execute the SQL statement and update database accordingly. pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { int newId = rs.getInt(1); compare.setCompareId(newId); } pstmt.close(); rs.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); return null; } return compare; } /** * Update Compare into DB * * @param compare */ public static boolean updateCompare(Compare compare) { try { Connection conn = DbManager.getConnection(); PreparedStatement pstmt = conn .prepareStatement("UPDATE compare SET diagramAId=?,diagramBId=?,reportId=?, promoteCountA=? ,promoteCountB=? WHERE compareID=?;", Statement.RETURN_GENERATED_KEYS); pstmt.setInt(1, compare.getDiagramAId()); pstmt.setInt(2, compare.getDiagramBId()); pstmt.setInt(3, compare.getReportId()); pstmt.setDouble(4, compare.getPromoteCountA()); pstmt.setDouble(5, compare.getPromoteCountB()); pstmt.setInt(6, compare.getCompareId()); // Execute the SQL statement and update database accordingly. pstmt.executeUpdate(); pstmt.close(); conn.close(); return true; } catch (SQLException e) { throw new IllegalArgumentException(e.getMessage(), e); } } public static boolean updateCount(int compareId, String diagram){ try { String sql; Connection conn = DbManager.getConnection(); if(diagram.equals("A")) { sql = "UPDATE compare SET promoteCountA = promoteCountA + 1 where compareId = ?"; } else { sql = "UPDATE compare SET promoteCountA = promoteCountA + 1 where compareId = ?"; } PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, compareId); int result = pstmt.executeUpdate(); pstmt.close(); conn.close(); if(result == 0) { return false; } else return true; } catch(SQLException e) { throw new IllegalArgumentException(e.getMessage(), e); } } /** * Search Compare into DB * * @param compare */ public static Compare searchCompare(int diagramAId,int diagramBId) { Compare compare = null; try { Connection conn = DbManager.getConnection(); PreparedStatement pstmt = conn.prepareStatement( "SELECT * FROM clubuml.compare WHERE (diagramAId=? and diagramBId = ?) or (diagramAId = ? and diagramBId = ?) ;"); pstmt.setInt(1, diagramAId); pstmt.setInt(2, diagramBId); pstmt.setInt(3, diagramBId); pstmt.setInt(4, diagramAId); // Execute the SQL statement ResultSet rs = pstmt.executeQuery(); if (rs.next()) { compare = new Compare(); compare.setCompareId(rs.getInt("compareId")); compare.setDiagramAId(rs.getInt("diagramAId")); compare.setDiagramBId(rs.getInt("diagramBId")); compare.setReportId(rs.getInt("reportId")); compare.setPromoteCountA(rs.getInt("promoteCountA")); compare.setPromoteCountB(rs.getInt("promoteCountB")); } pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); return null; } return compare; } /** * Get the comment list * * @param * @return ArrayList<Comment> */ public static ArrayList<Comment> getCommentList(int compareId) throws SQLException { ArrayList<Comment> comment = new ArrayList<Comment>(); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = DbManager.getConnection(); pstmt = conn.prepareStatement("select * from comment where compareId=?;"); pstmt.setInt(1, compareId); // Execute the SQL statement and store result into the ResultSet rs = pstmt.executeQuery(); while(rs.next()){ Comment p = new Comment(); p.setCommentId(rs.getInt("commentId")); p.setCompareId(rs.getInt("compareId")); p.setUserId(rs.getInt("userId")); p.setCommentText(rs.getString("commentText")); p.setCommentTime(rs.getString("commentTime")); p.setReportId(rs.getInt("reportId")); comment.add(p); } rs.close(); pstmt.close(); conn.close(); return comment; } catch (SQLException e) { System.out.println(e.getMessage()); System.out.println("Using default model."); } finally { if(rs != null) {rs.close();} if(pstmt != null) {pstmt.close();} if(conn != null) {conn.close();} } return null; } }