Guest User

Untitled

a guest
Apr 27th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.47 KB | None | 0 0
  1. /**
  2. * @(#)CollectionOfBooks.java
  3. *
  4. * Handles most functions and methods of the library.
  5. * of the user interface. Does not rely on anything
  6. * from the user interface classes.
  7. *
  8. * @author Rami Awad, Erik Stenström
  9. * @date 2011/10/24
  10. */
  11.  
  12. import java.io.FileInputStream;
  13. import java.io.FileOutputStream;
  14. import java.io.IOException;
  15. import java.io.ObjectInputStream;
  16. import java.io.ObjectOutputStream;
  17. import java.util.ArrayList;
  18. import java.util.Collections;
  19. import java.sql.*;
  20.  
  21. public class CollectionOfBooks {
  22. public static Connection con = null;
  23.  
  24.  
  25.  
  26. public static void connect() {
  27. String user = "erik"; // username, e.g. "postgres"
  28. String pwd = "12345"; // password to your database
  29. String database = "lab_databas";
  30. String server = "jdbc:postgresql://localhost:5432/" + database
  31. + "?UseClientEnc=UTF8";
  32.  
  33. try {
  34. Class.forName("org.postgresql.Driver").newInstance();
  35. con = DriverManager.getConnection(server, user, pwd);
  36. System.out.println("Connected!");
  37. Statement stmt = null;
  38. } catch (Exception e) {
  39. javax.swing.JOptionPane.showMessageDialog(null,
  40. "Database error connect, " + e.toString());
  41. }
  42.  
  43. }
  44.  
  45. public static void disconnect() {
  46. try {
  47. con.close();
  48. } catch (SQLException e) {
  49. javax.swing.JOptionPane.showMessageDialog(null,
  50. "Database error disconnect, " + e.toString());
  51. }
  52. }
  53.  
  54. public static boolean addArtist(String Artist, String Album,
  55. String Producer, String Genre, Integer Rating, Integer Year,
  56. String Label) {
  57. connect();
  58. try {
  59. // Queries for checking if artist and/or album exists
  60. String checkartist = "SELECT count(*) FROM ARTIST where namn = ?;";
  61. String checkalbum = "SELECT count(*) FROM Album where namn = ?;";
  62. PreparedStatement checkArtist = con.prepareStatement(checkartist);
  63. PreparedStatement checkAlbum = con.prepareStatement(checkalbum);
  64. checkArtist.setString(1, Artist);
  65. checkAlbum.setString(1, Album);
  66. ResultSet rsArtist = checkArtist.executeQuery();
  67. ResultSet rsAlbum = checkAlbum.executeQuery();
  68. rsArtist.next();
  69. rsAlbum.next();
  70. // if album and artist exist, disconnect and return false
  71. if (rsAlbum.getInt(1) != 0 && rsArtist.getInt(1) != 0) {
  72. disconnect();
  73. return false;
  74. } else if (rsArtist.getInt(1) != 0) {
  75. // Query for fetching artist id
  76. String getartistid = "SELECT artist_id FROM ARTIST where namn = ?;";
  77. PreparedStatement getArtistId = con
  78. .prepareStatement(getartistid);
  79. getArtistId.setString(1, Artist);
  80. ResultSet rs = getArtistId.executeQuery();
  81. rs.next();
  82. int artistid = rs.getInt(1);
  83. // Query for adding album to already existing artist
  84. String addalbum = "INSERT INTO Skivbolag (namn) Values (?);"
  85. + "INSERT INTO Producent (namn) Values (?);"
  86. + "INSERT INTO ALBUM(Artist_id, Betyg, Genre, Utgivningsar, Namn, Skivbolag, Producent) VALUES (?,?,?,?,?,currval('Skivbolag_seq'),currval('Producent_seq'));";
  87. PreparedStatement addAlbum = con.prepareStatement(addalbum);
  88. addAlbum.setString(1, Label);
  89. addAlbum.setInt(2, artistid);
  90. addAlbum.setInt(3, Rating);
  91. addAlbum.setString(4, Genre);
  92. addAlbum.setInt(5, Year);
  93. addAlbum.setString(6, Album);
  94. // addalbum.SetString(7,Producer);
  95. int m = addAlbum.executeUpdate();
  96. disconnect();
  97. return true;
  98. } else {
  99. // Query for adding artist and album at the same time.
  100. String sql = "INSERT INTO Artist(namn) VALUES (?); "
  101. + "INSERT INTO Skivbolag (namn) VALUES (?);"
  102. + "INSERT INTO Producent (namn) Values (?);"
  103. + "INSERT INTO ALBUM(Artist_id, Betyg, Genre, Utgivningsar, Namn, Skivbolag, Producent) VALUES (currval('Artist_id_seq'),?,?,?,?,currval('Skivbolag_seq'),currval(?));";
  104.  
  105. PreparedStatement addArtist = con.prepareStatement(sql);
  106.  
  107. addArtist.setString(1, Artist);
  108. addArtist.setString(2, Label);
  109. addArtist.setInt(3, Rating);
  110. addArtist.setString(4, Genre);
  111. addArtist.setInt(5, Year);
  112. addArtist.setString(6, Album);
  113. // addArtist.setInt(7,Producer);
  114. int n = addArtist.executeUpdate();
  115. disconnect();
  116. return true;
  117. }
  118. } catch (SQLException e) {
  119. javax.swing.JOptionPane.showMessageDialog(null,
  120. "Database error on insert: " + e.toString());
  121. }
  122. return false;
  123. }
  124.  
  125. public static boolean addTrack(String Album, String Track, String Length) {
  126. connect();
  127. try {
  128. // Queries for checking if album and/or track exists
  129. String checkalbum = "SELECT count(*) FROM ALBUM where namn = ?;";
  130. String checktrack = "SELECT count(*) FROM LAT where namn = ?;";
  131. PreparedStatement checkAlbum = con.prepareStatement(checkalbum);
  132. PreparedStatement checkTrack = con.prepareStatement(checktrack);
  133. checkAlbum.setString(1, Album);
  134. checkTrack.setString(1, Track);
  135. ResultSet rsAlbum = checkAlbum.executeQuery();
  136. ResultSet rsTrack = checkTrack.executeQuery();
  137. rsAlbum.next();
  138. rsTrack.next();
  139. // if album AND track exist, disconnect and return false
  140. if (rsAlbum.getInt(1) != 0 && rsTrack.getInt(1) != 0) {
  141. disconnect();
  142. return false;
  143. } else if (rsAlbum.getInt(1) != 0) {// if album already exists
  144. // Query for fetching artist id
  145. String getalbumid = "SELECT album_id FROM ALBUM where namn = ?;";
  146. PreparedStatement getAlbumId = con.prepareStatement(getalbumid);
  147. getAlbumId.setString(1, Album);
  148. ResultSet rs = getAlbumId.executeQuery();
  149. rs.next();
  150. int Albumid = rs.getInt(1);
  151. // Query for adding track to already existing album
  152. String addtrack = "INSERT INTO LAT (Namn, langd, album_id) Values (?,?,?);";
  153. PreparedStatement addTrack = con.prepareStatement(addtrack);
  154. addTrack.setString(1, Track);
  155. addTrack.setString(2, Length);
  156. addTrack.setInt(3, Albumid);
  157. int m = addTrack.executeUpdate();
  158. disconnect();
  159. return true;
  160. }
  161.  
  162. } catch (SQLException e) {
  163. javax.swing.JOptionPane.showMessageDialog(null,
  164. "Database error on insert: " + e.toString());
  165. }
  166. return false;
  167. }
  168.  
  169. public ResultSet searcByArtist(String Artist){
  170. ResultSet rs = null;
  171. try{
  172. String getbyartist = "SELECT l.namn, ar.namn, l.langd, al.namn FROM lat l, artist ar, album al where ar.namn = ? and ar.artist_id = al.artist_id and l.album_id = al.album_id;";
  173. PreparedStatement getByArtist = con.prepareStatement(getbyartist);
  174. getByArtist.setString(1, Artist);
  175. rs = getByArtist.executeQuery();
  176. return rs;
  177. } catch (SQLException e) {
  178. javax.swing.JOptionPane.showMessageDialog(null,
  179. "Database error: " + e.toString());
  180. }
  181. return rs;
  182. }
  183.  
  184. public ResultSet searcByAlbum(String Album){
  185. ResultSet rs = null;
  186. try{
  187. String getbyalbum = "SELECT l.namn, ar.namn, l.langd, al.namn FROM lat l, artist ar, album al where al.namn = ? and al.album_id = l.album_id and al.artist_id = ar.artist_id;";
  188. PreparedStatement getByAlbum = con.prepareStatement(getbyalbum);
  189. getByAlbum.setString(1, Album);
  190. rs = getByAlbum.executeQuery();
  191. return rs;
  192. } catch (SQLException e) {
  193. javax.swing.JOptionPane.showMessageDialog(null,
  194. "Database error: " + e.toString());
  195. }
  196. return rs;
  197. }
  198. public ResultSet searcByGenre(String Genre){
  199. ResultSet rs = null;
  200. try{
  201. String getbygenre = "SELECT l.namn, ar.namn, l.langd, al.namn FROM lat l, artist ar, album al where al.namn = ? and al.album_id = l.album_id and al.artist_id = ar.artist_id;";
  202. PreparedStatement getByGenre = con.prepareStatement(getbygenre);
  203. getByGenre.setString(1, Genre);
  204. rs = getByGenre.executeQuery();
  205. return rs;
  206. } catch (SQLException e) {
  207. javax.swing.JOptionPane.showMessageDialog(null,
  208. "Database error: " + e.toString());
  209. }
  210. return rs;
  211.  
  212.  
  213. }
  214.  
  215.  
  216. public ResultSet searcByLabel(String Label){
  217. ResultSet rs = null;
  218. try{
  219. String getbylabel = "SELECT l.namn, ar.namn, l.langd, al.namn FROM lat l, artist ar, album al where al.namn = ? and al.album_id = l.album_id and al.artist_id = ar.artist_id;";
  220. PreparedStatement getByLabel = con.prepareStatement(getbylabel);
  221. getByLabel.setString(1, Label);
  222. rs = getByLabel.executeQuery();
  223. return rs;
  224. } catch (SQLException e) {
  225. javax.swing.JOptionPane.showMessageDialog(null,
  226. "Database error: " + e.toString());
  227. }
  228. return rs;
  229.  
  230.  
  231. }
  232.  
  233. public static void executeQuery(Connection con, String query)
  234. throws SQLException {
  235.  
  236. Statement stmt = null;
  237. try {
  238. // Execute the SQL statement
  239. stmt = con.createStatement();
  240. ResultSet rs = stmt.executeQuery(query);
  241.  
  242. // Get the attribute names
  243. ResultSetMetaData metaData = rs.getMetaData();
  244. int ccount = metaData.getColumnCount();
  245. for (int c = 1; c <= ccount; c++) {
  246. System.out.print(metaData.getColumnName(c) + "\t");
  247. }
  248. System.out.println();
  249.  
  250. // Get the attribute values
  251. while (rs.next()) {
  252. for (int c = 1; c <= ccount; c++) {
  253. System.out.print(rs.getObject(c) + "\t");
  254. }
  255. System.out.println();
  256. }
  257.  
  258. } finally {
  259. if (stmt != null) {
  260. stmt.close();
  261. }
  262. }
  263. }
  264.  
  265. }
Add Comment
Please, Sign In to add comment