Advertisement
Guest User

Untitled

a guest
Jun 20th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.41 KB | None | 0 0
  1. import java.sql.*;
  2. import java.util.*;
  3.  
  4. /**
  5. * Things to note:
  6. * Easy convert to sql date => new java.sql.Date(datum.getTime())
  7. * Timezone exeption? Change url to => jdbc:mysql://127.0.0.1/BoekingDB?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
  8. * Best practice: respect MVC layers and use this class in your service class
  9. */
  10. public class BeerDAO {
  11. private String url;
  12. private String user;
  13. private String password;
  14.  
  15. public BeerDAO() {
  16. //Required for servlets
  17. try {
  18. Class.forName("com.mysql.jdbc.Driver");
  19. } catch (ClassNotFoundException e) {
  20. e.printStackTrace();
  21. }
  22.  
  23. }
  24.  
  25. public BeerDAO(String url, String user, String password) {
  26. //Required for servlets
  27. try {
  28. Class.forName("com.mysql.jdbc.Driver");
  29. } catch (ClassNotFoundException e) {
  30. e.printStackTrace();
  31. }
  32.  
  33. this.url = url;
  34. this.user = user;
  35. this.password = password;
  36.  
  37.  
  38. }
  39.  
  40. public String getUrl() {
  41. return url;
  42. }
  43.  
  44. public void setUrl(String url) {
  45. this.url = url;
  46. }
  47.  
  48. public String getUser() {
  49. return user;
  50. }
  51.  
  52. public void setUser(String user) {
  53. this.user = user;
  54. }
  55.  
  56. public String getPassword() {
  57. return password;
  58. }
  59.  
  60. public void setPassword(String password) {
  61. this.password = password;
  62. }
  63.  
  64. public Beer getBeerById(int id) throws BeerException {
  65. try (Connection con = getConnection();
  66. PreparedStatement stmt = con
  67. .prepareStatement("SELECT * FROM Beers WHERE Id=?")) {
  68. stmt.setInt(1, id);
  69. try (ResultSet rs = stmt.executeQuery()) {
  70. if (rs.next()) {
  71. Beer beer = new Beer();
  72. beer.setId(id);
  73. beer.setName(rs.getString("Name")); //Can also this this with comumn number => rs.getInt(1)
  74. beer.setPrice(rs.getFloat("Price"));
  75. beer.setAlcohol(rs.getFloat("Alcohol"));
  76. beer.setStock(rs.getInt("Stock"));
  77. return beer;
  78. } else {
  79. return null;
  80. }
  81. }
  82. } catch (SQLException e) {
  83. throw new BeerException(e);
  84. }
  85.  
  86. }
  87.  
  88. public List<Beer> getAllBeers() {
  89. List<Beer> beerList = new ArrayList<>();
  90. try (Connection con = getConnection();
  91. Statement stmt = con.createStatement();
  92. ResultSet rs = stmt.executeQuery("SELECT * FROM booking")) {
  93. while (rs.next()) {
  94. Beer beer = new Beer();
  95. beer.setId(rs.getInt("Id")); //Can also this this with comumn number => rs.getInt(1)
  96. beer.setName(rs.getString("Name"));
  97. beer.setPrice(rs.getFloat("Price"));
  98. beer.setAlcohol(rs.getFloat("Alcohol"));
  99. beer.setStock(rs.getInt("Stock"));
  100. beerList.add(beer);
  101. }
  102. return beerList;
  103.  
  104.  
  105. } catch (SQLException e) {
  106. e.printStackTrace();
  107. return null;
  108. }
  109. }
  110.  
  111. public boolean isBeerInTable(int id) {
  112. try (Connection con = getConnection();
  113. PreparedStatement stmt = con
  114. .prepareStatement("SELECT * FROM Beers WHERE id =?")) {
  115. stmt.setInt(1, id);
  116. try (ResultSet rs = stmt.executeQuery()) {
  117. return !rs.next();
  118. }
  119. } catch (SQLException e) {
  120. e.printStackTrace();
  121. return false;
  122.  
  123. }
  124. }
  125.  
  126. public List<Beer> searchBeer(String value) {
  127. List<Beer> beerList = null;
  128. value.replace("!", "!!")
  129. .replace("%", "!%")
  130. .replace("_", "!_")
  131. .replace("[", "![");
  132.  
  133. try (Connection con = getConnection();
  134. PreparedStatement stmt = con
  135. .prepareStatement("SELECT * FROM Beers WHERE concat_ws(', ',Name, Price, Alcohol, Stock) LIKE ?")) {
  136. stmt.setString(1, "%" + value + "%");
  137. try (ResultSet rs = stmt.executeQuery()) {
  138. while (rs.next()) {
  139. Beer beer = new Beer();
  140. beer.setId(rs.getInt("Id")); //Can also this this with comumn number => rs.getInt(1)
  141. beer.setName(rs.getString("Name"));
  142. beer.setPrice(rs.getFloat("Price"));
  143. beer.setAlcohol(rs.getFloat("Alcohol"));
  144. beer.setStock(rs.getInt("Stock"));
  145. beerList.add(beer);
  146. }
  147. return beerList;
  148. } catch (SQLException e) {
  149. e.printStackTrace();
  150. return null;
  151. }
  152. } catch (SQLException e) {
  153. e.printStackTrace();
  154. return null;
  155. }
  156. }
  157.  
  158. public void updateBeer(Beer beer) throws BeerException {
  159. try (Connection con = getConnection();
  160. PreparedStatement stmt = con
  161. .prepareStatement("UPDATE Beers SET Name=?, Price=?, Alcohol=?, Stock=? WHERE Id=?")) {
  162. stmt.setString(1, beer.getName());
  163. stmt.setFloat(2, beer.getPrice());
  164. stmt.setFloat(3, beer.getAlcohol());
  165. stmt.setInt(4, beer.getStock());
  166. stmt.setInt(5, beer.getStock());
  167. stmt.executeUpdate();
  168. } catch (SQLException e) {
  169. throw new BeerException(e);
  170. }
  171. }
  172.  
  173. public void insertBeer(Beer beer) {
  174. try (Connection con = getConnection();
  175. PreparedStatement stmt = con
  176. .prepareStatement("INSERT INTO Beers(DAY, NAME, CITY, STREET, HOUR)" +
  177. " VALUES (?,?,?,?,?)")) {
  178. stmt.setString(1, beer.getName());
  179. stmt.setFloat(2, beer.getPrice());
  180. stmt.setFloat(3, beer.getAlcohol());
  181. stmt.setInt(4, beer.getStock());
  182. stmt.setInt(5, beer.getStock());
  183. stmt.executeUpdate();
  184. } catch (SQLException e) {
  185. e.printStackTrace();
  186. }
  187. }
  188.  
  189.  
  190. public boolean deleteBeerById(int id) {
  191. try (Connection con = getConnection();
  192. PreparedStatement stmt = con
  193. .prepareStatement("DELETE FROM Beers " +
  194. "WHERE id = ?")) {
  195. stmt.setInt(1, id);
  196. stmt.execute();
  197. con.close();
  198. return true;
  199.  
  200. } catch (SQLException e) {
  201. e.printStackTrace();
  202. return false;
  203. }
  204. }
  205.  
  206. /** Dirty Read Non-Repeatable read Phantom read
  207. * TRANSACTION_NONE
  208. * TRANSACTION_READ_UNCOMITTED X X X
  209. * TRANSACTION_READ_COMITTED 0 X X
  210. * TRANSACTION_REPEATABLE_READ 0 0 X
  211. * TRANSACTION_SERIALIZABLE 0 0 0
  212. */
  213. public void saveBeer(Beer beer1, Beer beer2) {
  214. final String UPDATE1 = "UPDATE Beers SET Name=?, Price=?, Alcohol=?, Stock=? WHERE Id=?";
  215. final String UPDATE2 = "UPDATE Beers SET Name=?, Price=?, Alcohol=?, Stock=? WHERE Id=?";
  216. try (Connection con = getConnection()) {
  217. con.setAutoCommit(false);
  218. con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
  219.  
  220. try (PreparedStatement stmt1 = con.prepareStatement(UPDATE1);
  221. PreparedStatement stmt2 = con.prepareStatement(UPDATE2);) {
  222.  
  223. stmt1.setString(1, beer1.getName());
  224. stmt1.setFloat(2, beer1.getPrice());
  225. stmt1.setFloat(3, beer1.getAlcohol());
  226. stmt1.setInt(4, beer1.getStock());
  227. stmt1.setInt(5, beer1.getStock());
  228.  
  229.  
  230. stmt2.setString(1, beer2.getName());
  231. stmt2.setFloat(2, beer2.getPrice());
  232. stmt2.setFloat(3, beer2.getAlcohol());
  233. stmt2.setInt(4, beer2.getStock());
  234. stmt2.setInt(5, beer2.getStock());
  235. con.commit();
  236. } catch (SQLException e) {
  237. e.printStackTrace();
  238. con.rollback();
  239. }
  240. } catch (SQLException e) {
  241. e.printStackTrace();
  242. }
  243. }
  244.  
  245.  
  246. //Private helper methods
  247. private Connection getConnection() throws SQLException {
  248. return DriverManager.getConnection(url, user, password);
  249. }
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement