package repository; /** * @author Xuesong Meng&Yidu Liang * @author Joanne Zhuo */ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class ProjectDAO { public final static String PROJECT_NAME = "ClubUML"; public final static String PROJECT_Desc = "ClubUML First Project"; public final static byte PROJECT_Achived = 0; /** * Get projectID * * @return projectId int */ public static int getProjectId() { int projectId = -1; try { Connection conn = DbManager.getConnection(); projectId = retrieveProject(conn); if (projectId == 0) { // If we don't have the project existed in DB, then create one first addProject(conn); // retrieve the newly added project projectId = retrieveProject(conn); } conn.close(); } catch (SQLException e) { System.out.println("Using default model."); } return projectId; } /** * Retrieve projectID from DB * * @param conn * Established connection * @return projectId int * return 0 if no exist */ public static int retrieveProject(Connection conn) { int projectId = 0; try { PreparedStatement pstmt = conn.prepareStatement( "SELECT * FROM project where projectName = ? ;"); pstmt.setString(1, PROJECT_NAME); // Execute the SQL statement and store result into the ResultSet ResultSet rs = pstmt.executeQuery(); if (rs.next()) { projectId = rs.getInt("project_Id"); } rs.close(); pstmt.close(); } catch (SQLException e) { System.out.println("Using default model."); } return projectId; } /** * Add our default project into DB (project name, description, archived) * * @param conn * Established connection * @return true if success; false if fail */ public static boolean addProject(Connection conn) { try { // modified by Xuesong Meng PreparedStatement pstmt = conn.prepareStatement( "INSERT into project(projectName, starDate ,description) VALUES(?,NOW(),?);"); pstmt.setString(1, PROJECT_NAME); pstmt.setString(2, PROJECT_Desc); //pstmt.setByte(3, PROJECT_Achived); // Execute the SQL statement and update database accordingly. pstmt.executeUpdate(); pstmt.close(); } catch (SQLException e) { e.printStackTrace(); return false; } return true; } /** * Remove a project from DB * * @return true if success; false if fail */ public static boolean removeProject() { try { Connection conn = DbManager.getConnection(); PreparedStatement pstmt = conn.prepareStatement( "DELETE FROM project where projectName = ?;"); pstmt.setString(1, PROJECT_NAME); // 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); } } }