From ff8fe19aea56c42a1965cc82955f6edf833d7b8a Mon Sep 17 00:00:00 2001 From: kshields412 Date: Mon, 9 Dec 2019 09:51:52 -0500 Subject: [PATCH 1/2] need to do testing --- .gitignore | 2 +- .idea/compiler.xml | 6 +- .idea/encodings.xml | 6 -- .idea/misc.xml | 5 +- .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 ++ jdbcdao.iml | 18 ++++ pom.xml | 5 + src/main/java/daos/ConnectionFactory.java | 32 ++++++ src/main/java/daos/DAO.java | 11 ++ src/main/java/daos/DELETEME.txt | 0 src/main/java/daos/DTO.java | 5 + src/main/java/daos/MovieDAO.java | 113 ++++++++++++++++++++ src/main/java/daos/MovieDTO.java | 26 +++++ src/main/java/models/DELETEME.txt | 0 src/main/java/models/Movie.java | 49 +++++++++ src/test/java/daos/DELETEME.txt | 0 src/test/java/models/DELETEME.txt | 0 target/classes/daos/ConnectionFactory.class | Bin 0 -> 1279 bytes target/classes/daos/DAO.class | Bin 0 -> 556 bytes target/classes/daos/DTO.class | Bin 0 -> 212 bytes target/classes/daos/MovieDAO.class | Bin 0 -> 2807 bytes target/classes/daos/MovieDTO.class | Bin 0 -> 709 bytes target/classes/daos/Secrets.class | Bin 0 -> 608 bytes target/classes/models/Movie.class | Bin 0 -> 1345 bytes 25 files changed, 280 insertions(+), 12 deletions(-) delete mode 100644 .idea/encodings.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 jdbcdao.iml create mode 100644 src/main/java/daos/ConnectionFactory.java create mode 100644 src/main/java/daos/DAO.java delete mode 100644 src/main/java/daos/DELETEME.txt create mode 100644 src/main/java/daos/DTO.java create mode 100644 src/main/java/daos/MovieDAO.java create mode 100644 src/main/java/daos/MovieDTO.java delete mode 100644 src/main/java/models/DELETEME.txt create mode 100644 src/main/java/models/Movie.java delete mode 100644 src/test/java/daos/DELETEME.txt delete mode 100644 src/test/java/models/DELETEME.txt create mode 100644 target/classes/daos/ConnectionFactory.class create mode 100644 target/classes/daos/DAO.class create mode 100644 target/classes/daos/DTO.class create mode 100644 target/classes/daos/MovieDAO.class create mode 100644 target/classes/daos/MovieDTO.class create mode 100644 target/classes/daos/Secrets.class create mode 100644 target/classes/models/Movie.class diff --git a/.gitignore b/.gitignore index 6bc0bfa..dd0a5e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ - +Secrets.java # Created by https://www.gitignore.io/api/intellij # Edit at https://www.gitignore.io/?templates=intellij diff --git a/.idea/compiler.xml b/.idea/compiler.xml index f006a55..c87e502 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,9 +6,11 @@ - + - + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index ada92a5..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 803a716..d30d09e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,5 @@ - - - + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..5c77ca2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/jdbcdao.iml b/jdbcdao.iml new file mode 100644 index 0000000..e42d504 --- /dev/null +++ b/jdbcdao.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index d97c43d..23ee534 100644 --- a/pom.xml +++ b/pom.xml @@ -14,5 +14,10 @@ junit 4.10 + + mysql + mysql-connector-java + 8.0.18 + \ No newline at end of file diff --git a/src/main/java/daos/ConnectionFactory.java b/src/main/java/daos/ConnectionFactory.java new file mode 100644 index 0000000..c0e3da3 --- /dev/null +++ b/src/main/java/daos/ConnectionFactory.java @@ -0,0 +1,32 @@ +package daos; + +import com.mysql.cj.jdbc.Driver; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +//Connects to Database +public class ConnectionFactory { + + public static final String URL = Secrets.getURL(); + public static final String USER = Secrets.getUSER(); + public static final String PASS = Secrets.getPASS(); + + //Get a connection to database + public static Connection getConnection() { + + try { + DriverManager.registerDriver(new Driver()); + return DriverManager.getConnection(URL, USER, PASS); + } catch (SQLException ex) { + throw new RuntimeException("Error connecting to the database", ex); + } + } + + //test Connection + public static void main(String[] args) { + Connection connection = ConnectionFactory.getConnection(); + MovieDAO mdao = new MovieDAO(); + } +} diff --git a/src/main/java/daos/DAO.java b/src/main/java/daos/DAO.java new file mode 100644 index 0000000..ac0c0d0 --- /dev/null +++ b/src/main/java/daos/DAO.java @@ -0,0 +1,11 @@ +package daos; + +import java.util.Set; + +public interface DAO { + T findById(Integer id); + Set findAll(); + Boolean update(Integer id, T object); + Boolean create(T object); + Boolean delete(Integer id); +} diff --git a/src/main/java/daos/DELETEME.txt b/src/main/java/daos/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/daos/DTO.java b/src/main/java/daos/DTO.java new file mode 100644 index 0000000..8518b61 --- /dev/null +++ b/src/main/java/daos/DTO.java @@ -0,0 +1,5 @@ +package daos; + +public interface DTO { + int getId(T object); +} diff --git a/src/main/java/daos/MovieDAO.java b/src/main/java/daos/MovieDAO.java new file mode 100644 index 0000000..b0705cd --- /dev/null +++ b/src/main/java/daos/MovieDAO.java @@ -0,0 +1,113 @@ +package daos; + +import models.Movie; + +import java.sql.*; +import java.util.HashSet; +import java.util.Set; + +public class MovieDAO implements DAO { + + public Movie findById(Integer id) { + Connection conn = ConnectionFactory.getConnection(); + try { + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM Movie WHERE id=" + id); + + if (rs.next()) { + return extractMovieFromResultSet(rs); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } + return null; + } + + public Set findAll() { + Connection conn = ConnectionFactory.getConnection(); + + try { + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM Movie"); + Set movies = new HashSet(); + + while(rs.next()) + { + Movie movie = extractMovieFromResultSet(rs); + + movies.add(movie); + } + return movies; + } catch (SQLException ex) { + ex.printStackTrace(); + } + return null; + } + + public Boolean update(Integer id, Movie movie) { + Connection conn = ConnectionFactory.getConnection(); + + try{ + PreparedStatement ps = conn.prepareStatement("UPDATE Movie SET title=?, runtime=?, imdbscore=?, releaseyear=? WHERE id=?"); + ps.setString(1, movie.getTitle()); + ps.setInt(2, movie.getRuntime()); + ps.setInt(3, movie.getImdbscore()); + ps.setInt(4, movie.getReleaseyear()); + int i = ps.executeUpdate(); + + if(i == 1) { + return true; + } + } catch (SQLException ex) { + ex.printStackTrace(); + } + return false; + } + + public Boolean create(Movie movie) { + Connection conn = ConnectionFactory.getConnection(); + + try { + PreparedStatement ps = conn.prepareStatement("INSERT INTO Movie VALUES (NULL, ?, ?, ?, ?)"); + ps.setString(1, movie.getTitle()); + ps.setInt(2, movie.getRuntime()); + ps.setInt(3, movie.getImdbscore()); + ps.setInt(4, movie.getReleaseyear()); + int i = ps.executeUpdate(); + + if(i == 1) { + return true; + } + } catch (SQLException ex) { + ex.printStackTrace(); + } + return false; + } + + public Boolean delete(Integer id) { + Connection conn = ConnectionFactory.getConnection(); + + try { + + Statement stmt = conn.createStatement(); + int i = stmt.executeUpdate("DELETE FROM user WHERE id=" + id); + + if(i == 1) { + return true; + } + } catch (SQLException ex) { + ex.printStackTrace(); + } + return false; + } + + private Movie extractMovieFromResultSet(ResultSet rs) throws SQLException { + Movie movie = new Movie(); + movie.setId( rs.getInt("id") ); + movie.setTitle( rs.getString("title") ); + movie.setRuntime( rs.getInt("runtime") ); + movie.setImdbscore( rs.getInt("imdbscore") ); + movie.setReleaseyear( rs.getInt("releaseyear") ); + return movie; + } +} diff --git a/src/main/java/daos/MovieDTO.java b/src/main/java/daos/MovieDTO.java new file mode 100644 index 0000000..ba0c1c2 --- /dev/null +++ b/src/main/java/daos/MovieDTO.java @@ -0,0 +1,26 @@ +package daos; + +import models.Movie; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public class MovieDTO implements DTO { + public int getId(Movie movie) { + return movie.getId(); + } + + public static Integer getIdOfLast(){ + Connection conn = ConnectionFactory.getConnection(); + + try{ + Statement statement = conn.createStatement(); + ResultSet rs = statement.executeQuery("SELECT id FROM Movie ORDER BY id DESC LIMIT 1;"); + if(rs.next()) return rs.getInt("id"); + }catch (SQLException ex){ + ex.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/models/DELETEME.txt b/src/main/java/models/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/java/models/Movie.java b/src/main/java/models/Movie.java new file mode 100644 index 0000000..3c13f9d --- /dev/null +++ b/src/main/java/models/Movie.java @@ -0,0 +1,49 @@ +package models; + +public class Movie { + Integer id; + String title; + Integer runtime; + Integer imdbscore; + Integer releaseyear; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Integer getRuntime() { + return runtime; + } + + public void setRuntime(Integer runtime) { + this.runtime = runtime; + } + + public Integer getImdbscore() { + return imdbscore; + } + + public void setImdbscore(Integer imdbscore) { + this.imdbscore = imdbscore; + } + + public Integer getReleaseyear() { + return releaseyear; + } + + public void setReleaseyear(Integer releaseyear) { + this.releaseyear = releaseyear; + } +} diff --git a/src/test/java/daos/DELETEME.txt b/src/test/java/daos/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/models/DELETEME.txt b/src/test/java/models/DELETEME.txt deleted file mode 100644 index e69de29..0000000 diff --git a/target/classes/daos/ConnectionFactory.class b/target/classes/daos/ConnectionFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..72d01e6ea51441dbd2bcf3394fa1af5639a2d457 GIT binary patch literal 1279 zcmaJ>YflqF6g^W)w=7G+0;S-qijM+HMSKG)Lea$Hg8~Wh({wv2+qAnnT@e12!Uq~j z^t(UGc<;8bO+fqM%*@%Dd(WABr@#OF_z7SJZ%iaHW#Ep92&PQj#dHrYAjfczVTQT; z24)RBh~uFN6OT;dADeiBrwq>+<_ydmSPm&x>3xp z(ePohSQLoOJFeqDrxV$UO=6e4vJ&VoIIeoPQ!gpKE=x6Hk_FF}wN0rVUbo4pzwI;x z(uK108o4FUb(QTqp1UG#-_!e)tgoW{kQW%qPP8;NzSKGn(9Ve3qtD^T;>SXM&sLu~ z9;>cP#}!CrKb`dy2$#A-QU=fYEMVHF(gcRX9HBDG5TCbe?Yl6G-j24_io?!R;jXr? zX}(npBS@2X+pFj5`)tRq=BnkAom>hviv z78Y!6$Mv1MI=uveOkQhGXHLwxm5lFY{B4yfOJ9~`L$Rh;oZ+g0B@4^QTUcRujXW7S zze)lFVbb@dDwUA-p6YA4S(UD=C@qlCs^T#?6yhotZChVcj++k|LU^Zb@+-2@zzv2VtLmX9n Q%-qMI)NUMxI4S9L4eD--yZ`_I literal 0 HcmV?d00001 diff --git a/target/classes/daos/DTO.class b/target/classes/daos/DTO.class new file mode 100644 index 0000000000000000000000000000000000000000..5912ed5586eb69479073e1f2ea3c32af9267d600 GIT binary patch literal 212 zcmX^0Z`VEs1_nb09(D#Ub_Q-n2G;b{63-My22l;4ti-ZJ{hY+SbbbG%tkmQZYfVo^ z2F~Ej^t{B9(xOyG1~!e55U`+zO^6kyayv{RMh33n{L-T2RJY6=paC2%A^v(GYkPTBb9spryNKQ9*dDm=g+i zq)kiAlnYD3UNDyOl(eObStGw_*rq)D!mxAGEJ^L0Q7jEi7gtSjab)&_g4hky%8jm1 z+a@7shoE*!o3q~3U=4o&85fJvSP(CiUa{KRt%^-;k2kYz zs@b;{(c>Gb)})?VrdYPKV#1WH-B#t~2^qeQ!#JX%pu<8@#fpwQu*s1iwTxq%*79iC z%;yAe_GQM?<6{fSRB~c|b~;%u2|IaZa(sR~Y35$mQGz3vvW``}uVPKdI_|3YK*xvp zNP%9@aUCDyo{CR&e2UL>+{Y+M@0d<$lPlxC)ZVB zX-N?GGob#2k#&mpI$@TD6Np*BD$QjS!3D|PUJEV|^S$uMS{r1^MZfi%2Rv%5tO$#f z+F#EXuT2f4Z0H<4H|RGZ@n-#)Q}jf9PpZMVPnPeCFJLW~y1;d@CbDHm%$0?#O!w2H zl$q5(PXSy_%9qCyYn*1j#n(C0EHkHyEpCQ7#pfqzpFe$M(5jIyi`g5prc?FvRGm-K zu0&jxG*0|#&J8o~r(ADct3r&%3zD`^35)NCMwNMw#~cFbtjc1(@A59-FuAb8iDMW> z_V$8pWCedBll)WgJbyFe+&QvbkMcCYUEv-{J%aKFKSDUhHR=izIL>d~Q$RO*cv2+m zxzbn}Mhi88Umqhh-M4`j1vC9m5We;Zk+x_BYHtOx3gR2kLO37p3U45x;5Qggpi^ht z`AAo!E8Mny13N-^jMfTvx`MV1w1-f^F89)`v>|@Ss z!R+B(uZx-Tv}%z?{YWJbhM8rE_nw~?BJ%z7@h7><9A(VYTkr>HHR$3eJ*_%?i7I3B zP-P`XFzTaT@=+raHK3$dh%+=gTL&7cfktZORlM@Hjxf|QAM_Mm$@0ciy?;ZmV1H2I ztz3_LpadAgMIYcabC9`esop*p;lQ&Hv>HMR<37SkKZIzCV{!0V)=@tx4h=nqFo8?% GKKUOq&1wt) literal 0 HcmV?d00001 diff --git a/target/classes/daos/MovieDTO.class b/target/classes/daos/MovieDTO.class new file mode 100644 index 0000000000000000000000000000000000000000..e2f7a9bc91b315dc116c03ddeccdeea33fe09db8 GIT binary patch literal 709 zcmZuuO;6iE6r7Enm>5F>Z3z7ULO-O0R<#hvM3E2`DpF_;LEJZv6&5+R>NrUKPrdZg zA`TU2eiUNXHVP5FyxDzk-n@CcclS5{0PN$VjS^nlc!ReVwrmu!ZDGek!@{mWsiQ)b zbOnrN>s-J*iblRbrKdvw`)o4w<1;x7m|5>do(#@qtn@ukn#qNlYW7G*Q};BwQvTPo zep{e8_LGy5z*@66p(|DFA76}TJKU`Nq71qaF3Yqy+lPJHEYeR z5Xf-s_J@}&qbj|Sm_N{9{qpO^BpXqY~h`Q z_xK>-JYB;<1ywdIY%NeteLt}$u#{3bTwo(T&Nn)iUJ}JWDZ{s#rv>WG)_-3ByZpKm z1T225L8L)On>Uvzh{e6X5WjgSV3|>qLAt}}WCW~Wl{fwws*Jk%8_^(^u2DEOe({ub z+eC1LNiD6=$XL08R$s$9drk6Q;3W#xL#ozt)dObJ{=HAPF#f=t3qQA2&P5B@NXOT) Hnc}Mli8G9n literal 0 HcmV?d00001 diff --git a/target/classes/daos/Secrets.class b/target/classes/daos/Secrets.class new file mode 100644 index 0000000000000000000000000000000000000000..65cd6937a6a270edef64fa5df4d94a8ed9f73044 GIT binary patch literal 608 zcmZuu%TB^T6g>mwDR1$C_=r1jVKpQ!(3lvat40kKwq{x;Fi_gq4krGUu1s9`0e+P6 zwvb2&n|tS+d+xnwW`2IZz5$%$D2pU&DeR?DPh&rggA@)K;=QiHP%*~*mFo_7hq|eJ z=?*U$@*U3&6n9mhJ2Szc^~~EYrN8Y$)Qk@p=zVK&QdC@M=rwC+(_2+X1*=% zWVkK2m~|T7Cx;yJ#4RsjXpRS#-JZS$FHT$6ozUIL3sk$+I=j%rn!~NY9*HTZTlt=+ z7%~%SPo(=S>0J7MsRwH;Y=vXQ=xKpCYDggs(i4hBIJ<;3s&6de1T@l;MT!OL&?z&@ ziIY#Tk7z`ZVlpD*DA74L7ody^p$s-rB_?dHM-?(riN6!1pP)Ez&5&?wjZj+^=1I7{ QMwnO?mTCSD&5vRC53&Pk;{X5v literal 0 HcmV?d00001 diff --git a/target/classes/models/Movie.class b/target/classes/models/Movie.class new file mode 100644 index 0000000000000000000000000000000000000000..d077e332b6f44e507bbdd42619b70e44eb2aafd9 GIT binary patch literal 1345 zcmZ{i+iuf95QhJC;v5{4q@+m;1=>=eP69PtgL;F6R4IT&tKK`wDs1K0lI>LDtv~`H zalr%dP>31ZG_JL|*xAF({QK?f{Q3LqH-J}gEi`c4L>&&BA)67KF`MUgyr|`=q%eHT6+`O$p5_v?wsFDY;h(#iw z{#U@F_?wN*eCvwXjI-XhIj>lwHs=-(tn+Xc&Ez}9m9f%SpYZS4=wi!86PAq@Y#VoY z)n?OyC14lpB+y;|=*Q`moFzD3Z?vjFrlpq;=DcFEpO{tn}7DY>OhzK8pH@+n Date: Mon, 9 Dec 2019 12:15:44 -0500 Subject: [PATCH 2/2] completed lab with dao tests --- src/main/java/daos/ConnectionFactory.java | 3 ++ src/main/java/daos/MovieDAO.java | 11 ++-- src/main/java/daos/MovieDTO.java | 2 +- src/main/java/models/Movie.java | 23 +++++++++ src/test/java/daos/TestMovieDao.java | 54 ++++++++++++++++++++ target/classes/daos/ConnectionFactory.class | Bin 1279 -> 1350 bytes target/classes/daos/DAO.class | Bin 556 -> 608 bytes target/classes/daos/MovieDAO.class | Bin 2807 -> 4449 bytes target/classes/daos/MovieDTO.class | Bin 709 -> 1483 bytes target/classes/models/Movie.class | Bin 1345 -> 2107 bytes target/test-classes/daos/TestMovieDao.class | Bin 0 -> 2362 bytes 11 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 src/test/java/daos/TestMovieDao.java create mode 100644 target/test-classes/daos/TestMovieDao.class diff --git a/src/main/java/daos/ConnectionFactory.java b/src/main/java/daos/ConnectionFactory.java index c0e3da3..f39f0db 100644 --- a/src/main/java/daos/ConnectionFactory.java +++ b/src/main/java/daos/ConnectionFactory.java @@ -28,5 +28,8 @@ public static Connection getConnection() { public static void main(String[] args) { Connection connection = ConnectionFactory.getConnection(); MovieDAO mdao = new MovieDAO(); +// for (int i = 7; i < 14; i++) { +// mdao.delete(i); +// } } } diff --git a/src/main/java/daos/MovieDAO.java b/src/main/java/daos/MovieDAO.java index b0705cd..c4618da 100644 --- a/src/main/java/daos/MovieDAO.java +++ b/src/main/java/daos/MovieDAO.java @@ -12,7 +12,7 @@ public Movie findById(Integer id) { Connection conn = ConnectionFactory.getConnection(); try { Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM Movie WHERE id=" + id); + ResultSet rs = stmt.executeQuery("SELECT * FROM Movies WHERE id=" + id); if (rs.next()) { return extractMovieFromResultSet(rs); @@ -28,7 +28,7 @@ public Set findAll() { try { Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM Movie"); + ResultSet rs = stmt.executeQuery("SELECT * FROM Movies"); Set movies = new HashSet(); while(rs.next()) @@ -48,11 +48,12 @@ public Boolean update(Integer id, Movie movie) { Connection conn = ConnectionFactory.getConnection(); try{ - PreparedStatement ps = conn.prepareStatement("UPDATE Movie SET title=?, runtime=?, imdbscore=?, releaseyear=? WHERE id=?"); + PreparedStatement ps = conn.prepareStatement("UPDATE Movies SET title=?, runtime=?, imdbscore=?, releaseyear=? WHERE id=?;"); ps.setString(1, movie.getTitle()); ps.setInt(2, movie.getRuntime()); ps.setInt(3, movie.getImdbscore()); ps.setInt(4, movie.getReleaseyear()); + ps.setInt(5, id); int i = ps.executeUpdate(); if(i == 1) { @@ -68,7 +69,7 @@ public Boolean create(Movie movie) { Connection conn = ConnectionFactory.getConnection(); try { - PreparedStatement ps = conn.prepareStatement("INSERT INTO Movie VALUES (NULL, ?, ?, ?, ?)"); + PreparedStatement ps = conn.prepareStatement("INSERT INTO Movies VALUES (NULL, ?, ?, ?, ?);"); ps.setString(1, movie.getTitle()); ps.setInt(2, movie.getRuntime()); ps.setInt(3, movie.getImdbscore()); @@ -90,7 +91,7 @@ public Boolean delete(Integer id) { try { Statement stmt = conn.createStatement(); - int i = stmt.executeUpdate("DELETE FROM user WHERE id=" + id); + int i = stmt.executeUpdate("DELETE FROM Movies WHERE id=" + id); if(i == 1) { return true; diff --git a/src/main/java/daos/MovieDTO.java b/src/main/java/daos/MovieDTO.java index ba0c1c2..af51444 100644 --- a/src/main/java/daos/MovieDTO.java +++ b/src/main/java/daos/MovieDTO.java @@ -16,7 +16,7 @@ public static Integer getIdOfLast(){ try{ Statement statement = conn.createStatement(); - ResultSet rs = statement.executeQuery("SELECT id FROM Movie ORDER BY id DESC LIMIT 1;"); + ResultSet rs = statement.executeQuery("SELECT id FROM Movies ORDER BY id DESC LIMIT 1;"); if(rs.next()) return rs.getInt("id"); }catch (SQLException ex){ ex.printStackTrace(); diff --git a/src/main/java/models/Movie.java b/src/main/java/models/Movie.java index 3c13f9d..bdd2c2c 100644 --- a/src/main/java/models/Movie.java +++ b/src/main/java/models/Movie.java @@ -7,6 +7,23 @@ public class Movie { Integer imdbscore; Integer releaseyear; + public Movie(String title, Integer runtime, Integer imdbscore, Integer releaseyear){ + this.title = title; + this.runtime = runtime; + this.imdbscore = imdbscore; + this.releaseyear = releaseyear; + } + + public Movie(Integer id, String title, Integer runtime, Integer imdbscore, Integer releaseyear){ + this.id = id; + this.title = title; + this.runtime = runtime; + this.imdbscore = imdbscore; + this.releaseyear = releaseyear; + } + + public Movie(){} + public Integer getId() { return id; } @@ -46,4 +63,10 @@ public Integer getReleaseyear() { public void setReleaseyear(Integer releaseyear) { this.releaseyear = releaseyear; } + + @Override + public String toString(){ + return String.format("%s | %s | %s | %s", + this.getTitle(), this.getRuntime(), this.getImdbscore(), this.getReleaseyear()); + } } diff --git a/src/test/java/daos/TestMovieDao.java b/src/test/java/daos/TestMovieDao.java new file mode 100644 index 0000000..c7ee3ad --- /dev/null +++ b/src/test/java/daos/TestMovieDao.java @@ -0,0 +1,54 @@ +package daos; + +import models.Movie; +import org.junit.Assert; +import org.junit.Test; + +public class TestMovieDao { + private MovieDAO mdao = new MovieDAO(); + private Movie movie1 = new Movie("Jumanji", 104, 7, 1995); + private Movie movie2 = new Movie("Bad Boys II", 147, 6, 2003); + + @Test + public void testFindById() { + String expected = "Corpse Bride | 120 | 7 | 2005"; + String actual = mdao.findById(1).toString(); + Assert.assertEquals(expected, actual); + } + + @Test + public void testFindAll() { + Integer expected = 6; + Integer actual = mdao.findAll().size(); + Assert.assertEquals(expected, actual); + } + + @Test + public void testUpdate() { + Assert.assertTrue(mdao.create(movie1)); + Integer id = MovieDTO.getIdOfLast(); + mdao.update(id, movie2); + String expected = movie2.toString(); + String actual = mdao.findById(id).toString(); + Assert.assertEquals(expected, actual); + mdao.delete(id); + } + + @Test + public void testCreate(){ + Assert.assertTrue(mdao.create(movie1)); + Integer id = MovieDTO.getIdOfLast(); + String expected = "Jumanji | 104 | 7 | 1995"; + String actual = mdao.findById(id).toString(); + Assert.assertEquals(expected, actual); + mdao.delete(id); + } + + @Test + public void testDelete() { + Assert.assertTrue(mdao.create(movie1)); + Integer id = MovieDTO.getIdOfLast(); + Assert.assertTrue(mdao.delete(id)); + Assert.assertEquals(6, mdao.findAll().size()); + } +} diff --git a/target/classes/daos/ConnectionFactory.class b/target/classes/daos/ConnectionFactory.class index 72d01e6ea51441dbd2bcf3394fa1af5639a2d457..120e42d930e34eb905a73106edee787ed4780158 100644 GIT binary patch delta 548 zcmY+9O-~bH6osF6I%Vj~v_;ETTM7tPpejW^R1nZ&6)kO8umM((z=A~61&Q14+0HM) zE|@?@QQ||kFv+C#i4A4nM;siUSUCD zQMuP1Z#>?1vt+R>TjAe%tXNX2S!GS(y}}2NipTod&Y~G`zaJhn4e7d+lX9c^KRqBmFi-I%L(RXDoZs|Nzu#{Q4}cYh1tEe&V&xfR-b2D9Oh_y(?7R@F z8qtfds{TIbud41h`xV`K|9pN0GHh7l^t$v}9C|JN3`D8GR}3mLstvgeyNnbwYO#!2 z(Z?+lOe&@n(=IbEv-i8BCU<8tQ%O>WRQBxDKfS&@Kk>82{_(+n)?c|ex;ngYne&)u z!K0EYk7`9i(ZFIZ?d;SiS<<4>W!YneRgX2rI;)1n?MEX2=p@Zeh0G2i(rP1FTAhL@ zW)i~~WDsFmDqo_JSk&``xtGMDMi>c1ORePI&jISFmny0gh@zMG0yAiR!P$NyR3QA2 z+YGngs6|{}A|0*tPs$=G;h$ZK5}IfZ>{@93wVRdbh*ngfbn|}}{Rv3#uyj^~#Lpqx zXqQUY>7Y|sOxN#P3otB#K9vPxd37wy6Dd%h$5m$&Y#Ec!r29oE6~;vEmfE4`8|f-G A6#xJL diff --git a/target/classes/daos/DAO.class b/target/classes/daos/DAO.class index b9cee99608d96682cd3acce83b367e831ca99a31..9aa4a6c9832805d8118bb1ff1b5a0ec7d384b498 100644 GIT binary patch delta 185 zcmZ3(@_=Q+I!3FB>y7H2^7C_26Z5PY8MHNgvJ%S@^>Y&Q()B&_N>bBPi>yOJtTmB@ z5vtjei&7IyQW+W4k+u0JWu+#U;LswWfoYl`)N;0z)SOh1aT=5T8AXM$SUEYB@i+ib Cs5~_Q delta 96 zcmaFBvW8{CI!4RMg^VH-56exo<7AWuu_rOID29YsGcvFx7o{eaq%tz7Y4~I%mL=-v qB<7{-`zK|kCYMY!6cgpp04mdjC{0PtNd+kt1DYVp7&dt(<8c5?#2Zln diff --git a/target/classes/daos/MovieDAO.class b/target/classes/daos/MovieDAO.class index 9fdde685ad3758364e3823ef5976875876915565..9a287ad1d2f48fc6a7561bd7cdc46442e80d8d5a 100644 GIT binary patch literal 4449 zcmai1>3slM4-lt6gxm5wXvxUA~=<8@J66OD@%isktHLIT+@9? zy6=0srYq_0bTKHTX_A(pQ#qR??UhIw2GBOir|Tm%bpzbco4Toz*}q7=gtu0?SW*ay2^dkKf>^&?@T(ilGT@te5oi~ z^Te>F0R;NYmWo9MZQkDFoY1rO&aiM8E)*1O?(DMGRE<1=nQnuN!dAhCyP1T{7p5vE zZ{MEgsr-B~V^quBx94t~N9zp@5qqe*l%og=4mZ-Ue!Y#*RC%OSD(D%L{Stxf@(7+T z>r0ukp7V>VyjcY1xIMBU($*?zz4iMa*Fjyt?`^MvU4uXM7|xALBw>)be-{eJA-3KHv0TD8Hl zXb|A&RH<6d>L>G3VJ%MmJR}4(9LA9_zNX>p_(mAdX!s_+#YFeWO&R5UaekzlFXZ&H zg56W8bn5tYygPn!a$+oQ8mq+5o=Q!o;`!X5hHv9La`~=?@8L!m&uaKSeh|hFHT(!a z*6=1=U@e&D&GPe=k%ph(2n(>02Udr<$4v86naUNGM;JfVu!`ptq-Rc_7@kf!Xr@xr zaU*XO^uc3^c)40M@{8tUela&!$(G92Jo743(XZ>7^58L#z_9@hKf}*8{6f(GQo|Z< zYPf}37|(0CjTbch3NLE-HEJ4OlFQ3@A&gfv{06^OkQ^PKN=;73N5`ip95}PX>6z42 zymNdeole9F$^PwP?d>{2If?v#i1{+^DA4?6qTzSABhG%W;SYFKLC|EX;WhkG!=LbH z1!0@AhQG*yW|y{xzsf|c>`~Y7H@vFhES}JC29p{F!6w~O*Ju@N^3uV|LAG9V3G+?C zHuKSIYA0EGrSf%}nb!?(npx#EBZ<8Cf--Dz6T+Kj!?#+6+ePTgZ^50H9+p{J(u?fD zNq+@exm#DOb?MBFb?Y0H=iTcgM#-9DqB>yAZfN`B5$1An0WyaAik__+`kAUO%G5P8 zd#7FL^^M7I&TUsbQ;KYH=3#oCGA*$}4LZwSoo3sU8ux02b;5O-9HnXVOXE=G{!L3( zyY|8D^DkYGuTg)GFxb;lbP9I53anembgbyaDm_KQIqK_Vjvsy>L}_f&DqO+sZ-P!^ zbUK3nz-L-giP=n{N)-IkkmH8#xP^7nIXWtz9vV%LI*ot_t9bJ2f!f)Tnz0W>tMB*^ zJXYAUxR|&s49@$(c_%@g*bXznBklzcx%+o|w1R?|;o9bpf%94zG}DBmV26K^<7U04 z6oyvq@HB)bqH~EWx+W-mGRZqnCVuQ4v;{Clg;Sovt}*80FH8`NYCL_Hs3)Lg1iskLSQUWLz9B>R!Kut8a+L6xZb`IT$|=s>gSTEzy$un`^Dj6Spy z_cpHDN-%9WhV3T6A;OIz!SNdiNLCJGg!TsbcN`};M~F6jc}n4=>2DB^;S~KT7{%kf z3#EVX9^(B3DW!W%N@I!EjV6Qf+t@^EoBP$IO=Np_l05o@?P`0lhSmVi-uTZy+tt;v zgvaVA1#?&(pqRjY#I>761r9O}GI>i*dKxT7H$aykbAm;)V zxkfD{VMVPCILCFOdruiZBu=kSf$`8GEL7;-W=u=h*KrE z7G~=X=4%Jh9wOcm#{F@|^)!EG$oL7yRk&Z|NYs$(XyHClqlqgmHB_$gs$!kb#D#(0{n!0 z-5NSL++RayfS;9JeD3yM^>E0J=d4U}_>ed3O{~(Y)yZ}<8^Iin;41r70ei8?`Yke7 zON`i($tiB3a8Xa1Rn237@v?IAB5kOQLd&LM=Hw+i9tY_|>b$wT=Oye}L!ak%eFty0 z%+tUbyxBHz$QB^l-IFjaJbW(;QP;vC17w{6eKv$pH#7Xey>^FedI7r$Wmv!>Que`{8 literal 2807 zcmai0TUQfT6#gb8nPf65f}mJ0vECqnNY&O0r3D0`4NwT;rPm=j;%G9#$%KNv*w)@} zYt_}&)&7FM+LtJGt*$=zM|Jf(Gm}gL(LQj_oPGBG_U+pz{PXXhe*qZ8_ZkjiO2cb- zJ%Kc)Rm^AzV=9JOxxXQoIl0UykikL%m$9hgiUwWkoR;US8m{5Gl)M?kTT=42JiHUb zyK;Xo21D*kF=XYQQz0}whZ`D_SeDC8xtJ<$skp5ouOK>PTBb9spryNKQ9*dDm=g+i zq)kiAlnYD3UNDyOl(eObStGw_*rq)D!mxAGEJ^L0Q7jEi7gtSjab)&_g4hky%8jm1 z+a@7shoE*!o3q~3U=4o&85fJvSP(CiUa{KRt%^-;k2kYz zs@b;{(c>Gb)})?VrdYPKV#1WH-B#t~2^qeQ!#JX%pu<8@#fpwQu*s1iwTxq%*79iC z%;yAe_GQM?<6{fSRB~c|b~;%u2|IaZa(sR~Y35$mQGz3vvW``}uVPKdI_|3YK*xvp zNP%9@aUCDyo{CR&e2UL>+{Y+M@0d<$lPlxC)ZVB zX-N?GGob#2k#&mpI$@TD6Np*BD$QjS!3D|PUJEV|^S$uMS{r1^MZfi%2Rv%5tO$#f z+F#EXuT2f4Z0H<4H|RGZ@n-#)Q}jf9PpZMVPnPeCFJLW~y1;d@CbDHm%$0?#O!w2H zl$q5(PXSy_%9qCyYn*1j#n(C0EHkHyEpCQ7#pfqzpFe$M(5jIyi`g5prc?FvRGm-K zu0&jxG*0|#&J8o~r(ADct3r&%3zD`^35)NCMwNMw#~cFbtjc1(@A59-FuAb8iDMW> z_V$8pWCedBll)WgJbyFe+&QvbkMcCYUEv-{J%aKFKSDUhHR=izIL>d~Q$RO*cv2+m zxzbn}Mhi88Umqhh-M4`j1vC9m5We;Zk+x_BYHtOx3gR2kLO37p3U45x;5Qggpi^ht z`AAo!E8Mny13N-^jMfTvx`MV1w1-f^F89)`v>|@Ss z!R+B(uZx-Tv}%z?{YWJbhM8rE_nw~?BJ%z7@h7><9A(VYTkr>HHR$3eJ*_%?i7I3B zP-P`XFzTaT@=+raHK3$dh%+=gTL&7cfktZORlM@Hjxf|QAM_Mm$@0ciy?;ZmV1H2I ztz3_LpadAgMIYcabC9`esop*p;lQ&Hv>HMR<37SkKZIzCV{!0V)=@tx4h=nqFo8?% GKKUOq&1wt) diff --git a/target/classes/daos/MovieDTO.class b/target/classes/daos/MovieDTO.class index e2f7a9bc91b315dc116c03ddeccdeea33fe09db8..2feba7c893462bd56609b77147233c0ecd9f44e8 100644 GIT binary patch literal 1483 zcmZuxOIzDU6g^`M@-XMU9-wG9UdZ zS#_CB7Gy(07yY{KkLuSmvTTc_8;x}Dxp&Szb4LIC`{!Q(*70Kkb68Da25Siv@Ogr< zFOt~6moa>m#Mii;#5edhhC6C4D$J&ay9wyn(r_<=HN&-`xwqtu+0u$Ng zJ%MPc+mZq)!*=A8{?Wd4o92Fpk+jjZ%+8+a+Uh$9M!jF`o=$>MT_xg&)Wn7Nn|Ncu&!1HP}WPMF~(s!)p8}>GcpUe3U?UA*&sb?Fp6@1c_OX8CwKc&(aDDG(C}Q_ zX%_?6Dneo3joXc)bekhjXk!ljGjF1@zjE~jlMTC4742AQR69_lEB}8vQqRf3BVp^; zrfXUfAM?7;fz$Bc5#>rl@wvdS0$0IxGWQ1JHD4lFf;h9XFq< zc#~^{Yi#8VkuyxZ;(NG0>DMm~FhM=hxQc76jN>C*4?6up%mk}9-Xi)qcaBK`V UJ9k*OcrbT_6qGtStoUpGKNR^$82|tP delta 332 zcmZXOy)r{V6vuzNckf+yvj~xh&m>4gLB$N! z@e0P-o6IOQ=YPKbzjMASA8GgV=k*Qf(RF03I@VaXY&cRjEiFsi(s?+$&&_!;8Y${0 zp_kOcof@}h$Sqr*ZFUs?y0{o#jrRw|&E?QDPc=O1gYd2UO*#V0P*^#Xh>B673#X=W zTajLzAyY5WmwC!8b5f}Yio22@izcGk3wn?|Nv4TzCyEe_RFTl0Y)uJ~zQCe*jqKG} lLRb4jtxu>&97?+c?C!mjJY)XI|NqLTR86D2zf7~#m0xKF9=`wp diff --git a/target/classes/models/Movie.class b/target/classes/models/Movie.class index d077e332b6f44e507bbdd42619b70e44eb2aafd9..3865fb05cf2f07ac25e071ec3631e19d4bc66bdb 100644 GIT binary patch literal 2107 zcma)+>rN9v6vzM5?rzJnlsgI{E(%!6rJ$%Fh@gRl1TnFM*!XD+D=z6J*)Aj|e()iD z5KTmli9Uc2WjtqgX_q=p_|P-6Gw1R8y3h03slwEb&X>W4L-_MN_4cAdKW-gSHdW6i620R`F1{_i4oauM=sN7Dxa z+Vk2Gh3nq+s_x!trR4hiPAO!q9XjO$$M^U5j#kegZ;1_1DAX>8j>a#k;Y)$OQgU~ zOmgz-qHQMWH$E)pYqrs1oaSeS?c$Biuxqw&quyKww2tqBpVDgyB}>-HHl{ae6>$dVV_nh@2!iE4fl)a;4nlO6k#> zfuQ8Ck-Sb{ACZu@Bf0MoxtVh$a!RxojQ-$z}5_kUu_SLLFSMF_K)b zJgsc0GhwqdhCCdW;jB<03MUA|rjyIYUtxSEFJWCn<58vYIBrMA>!i)326xG5hBoD? zO`PM>!%(Qz$kvFm6+Ep9kVGrUgc4*DQ!0=|D@c|=rrUso;~@COC_s{}AhSx4thyq} zR*(e(S!@Hsz2-jBt5tw#tsqNEkenJsYXw;*kd-zdJZcO={~QVsy%l6l2{Nk&iM`x# zMm7j!vkeGOI)ltLX5=+#3!1m7zEtWL(#2%%8#)R_jTW;|)M@D~6b)Le!Vh#cNi*^l VZP9DoCa$d*@l@kU%*)x&{{tfPK~?|& literal 1345 zcmZ{i+iuf95QhJC;v5{4q@+m;1=>=eP69PtgL;F6R4IT&tKK`wDs1K0lI>LDtv~`H zalr%dP>31ZG_JL|*xAF({QK?f{Q3LqH-J}gEi`c4L>&&BA)67KF`MUgyr|`=q%eHT6+`O$p5_v?wsFDY;h(#iw z{#U@F_?wN*eCvwXjI-XhIj>lwHs=-(tn+Xc&Ez}9m9f%SpYZS4=wi!86PAq@Y#VoY z)n?OyC14lpB+y;|=*Q`moFzD3Z?vjFrlpq;=DcFEpO{tn}7DY>OhzK8pH@+nq$O`+P5&?dYWsa0MzG=LTgf^S`tB`hYpG}$m#{o)6I zL4SoGov{IR#vh;`{XdT9?ry?@I72df_ul8Z_c`Zz?zuPl^Pk`T05Fcz5Qgwb##{(K zJnFz8-jy*Q#N!a&!;=u&@V+p95X6FbF9xwBW-bfQN(ig?Pz*onL=J1B_cVk&)`epu zgiU-bY@dkcSrA)ogcP54;op|=T*i)sK&7af5_@E1tsazViRR6MTHaBsx){60fOVwT zB=kDK+giPAU0QVUjH zElardtZrC(McdJ9I-wQ}!?aXOHw_|%^JcY_Ij)m(M!<1hXA@?j%*DN)&^g1>N?Mh3 zLSoMIlcH)d6Q52Bwq>cR*%o`Std%w44sDtBYC&7oMb;4k(#+|hV69*T_at;(Dz$<; zc#9c(i!4E2t5;OxSeLP@;8X00rTYpJxJ%ZHYB8~BzN#g1IR(SQG_+(^Pik6Xv8orf z#P^Bui7eY$J`>sOw1Us@xq>h7rHro>ya1UTpdh2DK*OPe5{_i(3Xbu$f-)*H3q{r;;yT{VpuA7;JSc8Wxb&YsqHzSQ+RejJh9b5^0NiWHk3d0xrTBy~u zDzjBoyR-6=>ZAnkdy$-q%zG%i7C}!I^lVi|nqYNHFK4ziq1!IIh)n}eUQPd&isLcN z@h}uzX)-UbsOG(-7frLQsRm=T!~F2ePRwk6lrMt5+R7wHhM zK|ilWo;>z^;#k>lo+WWXLJ|j+?b{sv0GU1DY3dA8>Ua3|&ftH80K08_(f07sIpna+ zCL;gE_6)%{=y05&2wn?syY2nE>Fxa4278BX6als}+aP+-fiZ+|pBBY|L=vMMNl1~7 z&!%(0x1Y9nRLQ4)K_I}W4Rkfoy`COBN6*#R-JIP+oG=Cuv12Ek^=@oGVn`F0H!Bl= zz@85e8DA73V`FDq*oQ9mpq-Ho-$3|RL?n>K_4qMH>gRU=w-NW?54!lmo90g;&%TX6 z{vZ5_7XD9UF6y-+66e#=K(vA0bM&1fX46U2+Sx$=uJi6*7c z!z@0iiU@TPqb7!_iWD_5Lp98Ev`jUKO-VW6F7X($n6!zfn3^b|k1KlY68f){aH^HU zYt9lWObQ-+E~gNU--z%XDh8w!A(a>v61Vk{W^W7=Byd4?vPJfeOE%sjd+&e9PPfQ@ zN2)#|&0b5kSxILH`fy7antJ&09Jenj+|U0j;{Q&B^kO73f+^N&+9ulXK(vSsyF@RG KaE9xBnEe-ILFw`U literal 0 HcmV?d00001