package dao; import java.sql.*; import java.util.HashMap; import java.util.List; import java.util.Map; import error.GExcptSQL; import gdms.Configuration; import org.apache.tomcat.jdbc.pool.DataSource; import org.apache.tomcat.jdbc.pool.PoolProperties; public class DBManagement { public static String[] userTables = { "administrator", "student", "teacher" }; public static String[] graduationDesignTables = { "graduation_design", "graduation_design_finished_product", "graduation_design_finished_product_mentor_score", "graduation_design_finished_product_reviewer_score", "graduation_design_information", "graduation_design_opening_report", "graduation_design_opening_report_opinion_record", "graduation_design_reply", "graduation_design_reply_opinion_record_score" }; // public static Map graduationDesignStudentTables = new HashMap<>(){ { put("graduation_design.student_id","student"); put("opening_report_secretary_team.leader_student_id","opening_report_secretary_leader"); put("opening_report_secretary_team.student1_id","opening_report_secretary_member"); put("opening_report_secretary_team.student2_id","opening_report_secretary_member"); put("reply_secretary_team.leader_student_id","reply_secretary_leader"); put("reply_secretary_team.student1_id","reply_secretary_member"); put("reply_secretary_team.student2_id","reply_secretary_member"); } }; public static String driverClassName="org.mariadb.jdbc.Driver"; public static DataSource dataSource = new DataSource(); private static boolean ifInit = false; public static void init(){ PoolProperties poolProperties = new PoolProperties(); poolProperties.setUrl(Configuration.dbUrl); poolProperties.setDriverClassName(DBManagement.driverClassName); poolProperties.setUsername(Configuration.dbUsername); poolProperties.setPassword(Configuration.dbPassword); dataSource.setPoolProperties(poolProperties); try { Class.forName(driverClassName); } catch (ClassNotFoundException e) { e.printStackTrace(); } ifInit = true; } public static Connection getConnection(){ if(!ifInit) return null; try { return DriverManager.getConnection(Configuration.dbUrl,Configuration.dbUsername,Configuration.dbPassword); } catch (SQLException e) { e.printStackTrace(); } return null; } public static void delete(String table, Map limits) throws GExcptSQL { Delete delete = new Delete(table, limits); String sql = delete.getSQL(); update(sql); } public static void insert(String table, Map vMap) throws GExcptSQL { Insert insert = new Insert(table, vMap); String sql = insert.getSQL(); update(sql); } public static ResultSet select(List columns, String table, Map limits, int startRow, int endRow) throws Exception { Select select = new Select(columns,table,limits,startRow,endRow); String sql = select.getSQL(); return query(sql); } public static void update(String table, Map vMap, Map limits) throws GExcptSQL { Update update = new Update(table,vMap,limits); String sql = update.getSQL(); update(sql); } public static ResultSet query(String sql) throws Exception { if(!ifInit) return null; ResultSet rs = null; Connection con = null; try{ con = DBManagement.getConnection(); Statement stmt = con.createStatement(); rs = stmt.executeQuery(sql); System.out.println(rs); } catch (SQLException e) { throw new GExcptSQL("Connect Failure"); }finally { if(con!=null) { try { con.close(); } catch (SQLException e) { throw new GExcptSQL("Connection Close Failure"); } } } return rs; } public static void update(String sql) throws GExcptSQL { if(!ifInit) return; Connection con = null; try{ con = DBManagement.getConnection(); Statement stmt = con.createStatement(); stmt.executeUpdate(sql); } catch (SQLException e) { throw new GExcptSQL("Connect Failure"); }finally { if(con!=null) { try { con.close(); } catch (SQLException e) { throw new GExcptSQL("Connection Close Failure"); } } } } }