From 4fa1d601ed69cf662c3ad89e9764703fc37f4c05 Mon Sep 17 00:00:00 2001 From: sitarameez Date: Thu, 5 Aug 2021 14:17:35 -0400 Subject: [PATCH 1/2] still have some more to do --- .idea/compiler.xml | 1 + .idea/jarRepositories.xml | 20 ++++ .idea/vcs.xml | 6 ++ pom.xml | 32 ++++-- src/main/java/daos/Carepo.java | 40 ++++++++ src/main/java/daos/Carepository.java | 88 +++++++++++++++++ src/main/java/daos/Main.java | 130 +++++++++++++++++++++++++ src/main/java/models/Car.java | 72 ++++++++++++++ target/classes/daos/Carepo.class | Bin 0 -> 1305 bytes target/classes/daos/Carepository.class | Bin 0 -> 4437 bytes target/classes/daos/Main.class | Bin 0 -> 4813 bytes target/classes/models/Car.class | Bin 0 -> 1757 bytes 12 files changed, 380 insertions(+), 9 deletions(-) create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/daos/Carepo.java create mode 100644 src/main/java/daos/Carepository.java create mode 100644 src/main/java/daos/Main.java create mode 100644 src/main/java/models/Car.java create mode 100644 target/classes/daos/Carepo.class create mode 100644 target/classes/daos/Carepository.class create mode 100644 target/classes/daos/Main.class create mode 100644 target/classes/models/Car.class diff --git a/.idea/compiler.xml b/.idea/compiler.xml index f006a55..5a76f28 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,6 +6,7 @@ + diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ 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/pom.xml b/pom.xml index d97c43d..fcb1d12 100644 --- a/pom.xml +++ b/pom.xml @@ -4,15 +4,29 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.zipcoder.lab - jdbcdao + org.example + intro-to-jdbc 1.0-SNAPSHOT - - - junit - junit - 4.10 - - + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.0 + + 1.8 + 1.8 + + + + + + + + mysql + mysql-connector-java + 8.0.18 + + \ No newline at end of file diff --git a/src/main/java/daos/Carepo.java b/src/main/java/daos/Carepo.java new file mode 100644 index 0000000..31a4b24 --- /dev/null +++ b/src/main/java/daos/Carepo.java @@ -0,0 +1,40 @@ +package daos; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public interface Carepo { + + default void executeStatement(String sqlStatement) { + try { + Statement statement = getScrollableStatement(); + statement.execute(sqlStatement); + } catch (SQLException e) { + throw new Error(e); + } + } + + default Statement getScrollableStatement() { + int resultSetType = ResultSet.TYPE_SCROLL_INSENSITIVE; + int resultSetConcurrency = ResultSet.CONCUR_READ_ONLY; + try { // scrollable statements can be iterated more than once without closing + return getConnection().createStatement(resultSetType, resultSetConcurrency); + } catch (SQLException e) { + throw new Error(e); + } + } + + Connection getConnection(); + + default ResultSet executeQuery( String sqlQuery) { + try { + Statement statement = getScrollableStatement(); + return statement.executeQuery(sqlQuery); + } catch (SQLException e) { + throw new Error(e); + } + } + +} diff --git a/src/main/java/daos/Carepository.java b/src/main/java/daos/Carepository.java new file mode 100644 index 0000000..2f20222 --- /dev/null +++ b/src/main/java/daos/Carepository.java @@ -0,0 +1,88 @@ +package daos; + +import models.Car; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import java.util.ArrayList; +import java.util.MissingFormatArgumentException; + +public class Carepository implements Carepo { + private Connection connection; + + public Carepository(Connection connection) { + this.connection = connection; + } + + + @Override + public Connection getConnection() { + return connection; + } + + public void create(Car car){ + try { + String query = String.format(new StringBuilder() + .append("INSERT INTO showroom.car(") + .append("make, model,year,color,VIN) ") + .append("VALUES ('%s','%s',%s,'%s',%s);") + .toString(), + //car.getId(), + car.getMake(), + car.getModel(), + car.getYear(), + car.getColor(), + car.getVIN()); + System.out.println("query" + query); + executeStatement(query); + } + catch (MissingFormatArgumentException m) { + System.out.println(m.getMessage()); + } + + } + + public Car read(Long carId) { + return readAll() + .stream() + .filter(car->car.getId()==carId) + .findAny() + .get(); + } + + public List readAll(){ + ResultSet resultSet = executeQuery(String.format("SELECT * FROM showroom.car;")); + List list = new ArrayList<>(); + + try { + while (resultSet.next()) { + String id = resultSet.getString(1); + String make = resultSet.getString(2); + String model = resultSet.getString(3); + String year = resultSet.getString(4); + String color = resultSet.getString(5); + String VIN = resultSet.getString(6); + + list.add(new Car( + make, model, Integer.parseInt(year), color, Integer.parseInt(VIN))); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return list; + } + + public void update(Long id,Car car){ + + } + + public void delete(Long id){ + + } + + public void delete(Car car){} + + +} diff --git a/src/main/java/daos/Main.java b/src/main/java/daos/Main.java new file mode 100644 index 0000000..c4f61a9 --- /dev/null +++ b/src/main/java/daos/Main.java @@ -0,0 +1,130 @@ +package daos; + +import com.mysql.cj.jdbc.Driver; +import daos.Carepository; +import models.Car; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.StringJoiner; + +/** + * @author git-leon + * @version 1.0.0 + * @date 8/2/21 9:49 AM + */ +public class Main{ + + public static void main(String[] args) { + registerJDBCDriver(); + Connection mysqlDbConnection = getConnection("mysql"); + Carepository carepository=new Carepository(mysqlDbConnection); + executeStatement(mysqlDbConnection, "DROP DATABASE IF EXISTS showroom;"); + executeStatement(mysqlDbConnection, "CREATE DATABASE IF NOT EXISTS showroom;"); + executeStatement(mysqlDbConnection, "USE showroom;"); + executeStatement(mysqlDbConnection, new StringBuilder() + .append("CREATE TABLE IF NOT EXISTS showroom.car(") + .append("id int auto_increment primary key,") + .append("make VARCHAR(50),") + .append("model VARCHAR(50),") + .append("year INTEGER,") + .append("color VARCHAR(50),") + .append("VIN INTEGER);") + .toString()); +Car volvoCar = new Car("volvo","xc60",2018,"black",45678865); +carepository.create(volvoCar); + //new Carepository(mysqlDbConnection).create(new Car(12L,"volvo","xc60",2018,"black",45678865)); + //new Carepository(mysqlDbConnection).create(new Car(13L,"tesla","model3",2019,"white",6478836)); + System.out.println(carepository.readAll()); +// executeStatement(mysqlDbConnection, new StringBuilder() +// .append("INSERT INTO showroom.car(") +// .append("id, make,model,year,color,VIN)") +// .append("VALUES (12, 'Ivysaur', 3, 7);") +// .toString()); +// +// executeStatement(mysqlDbConnection, new StringBuilder() +// .append("INSERT INTO databaseName.pokemonTable(") +// .append("id, name, primary_type, secondary_type) ") +// .append("VALUES (13, 'Ivysaurr', 3, 7);") +// .toString()); + +// String getPokemonTable = "SELECT * FROM databaseName.pokemonTable;"; +// ResultSet resultSet = executeQuery(mysqlDbConnection, getPokemonTable); +// printResults(resultSet); + + } + + static ResultSet executeQuery(Connection connection, String sqlQuery) { + try { + Statement statement = getScrollableStatement(connection); + return statement.executeQuery(sqlQuery); + } catch (SQLException e) { + throw new Error(e); + } + } + + static void printResults(ResultSet resultSet) { + try { + for (int rowNumber = 0; resultSet.next(); rowNumber++) { + String firstColumnData = resultSet.getString(1); + String secondColumnData = resultSet.getString(2); + String thirdColumnData = resultSet.getString(3); + System.out.println(new StringJoiner("\n") + .add("Row number = " + rowNumber) + .add("First Column = " + firstColumnData) + .add("Second Column = " + secondColumnData) + .add("Third column = " + thirdColumnData)); + } + } catch (SQLException e) { + throw new Error(e); + } + } + + static void executeStatement(Connection connection, String sqlStatement) { + try { + Statement statement = getScrollableStatement(connection); + statement.execute(sqlStatement); + } catch (SQLException e) { + throw new Error(e); + } + } + + static Statement getScrollableStatement(Connection connection) { + int resultSetType = ResultSet.TYPE_SCROLL_INSENSITIVE; + int resultSetConcurrency = ResultSet.CONCUR_READ_ONLY; + try { // scrollable statements can be iterated more than once without closing + return connection.createStatement(resultSetType, resultSetConcurrency); + } catch (SQLException e) { + throw new Error(e); + } + } + + static Connection getConnection(String dbVendor) { + String username = "sitara"; + String password = "zipcode0"; + String url = new StringBuilder() + .append("jdbc:") + .append(dbVendor) + .append("://127.0.0.1/") + .append("?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC") + .toString(); + try { + return DriverManager.getConnection(url, username, password); + } catch (SQLException e) { + throw new Error(e); + } + } + + static void registerJDBCDriver() { + // Attempt to register JDBC Driver + try { + DriverManager.registerDriver(Driver.class.newInstance()); + } catch (InstantiationException | IllegalAccessException | SQLException e1) { + throw new RuntimeException(e1); + } + } + +} \ No newline at end of file diff --git a/src/main/java/models/Car.java b/src/main/java/models/Car.java new file mode 100644 index 0000000..5940b5d --- /dev/null +++ b/src/main/java/models/Car.java @@ -0,0 +1,72 @@ +package models; + +public class Car { + private long id; + private String make; + private String model; + private Integer year; + private String color; + private Integer VIN; + + + public Car() { + } + + public Car( String make, String model, Integer year, String color, Integer VIN) { + //this.id = id; + this.make = make; + this.model = model; + this.year = year; + this.color = color; + this.VIN = VIN; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getMake() { + return make; + } + + public void setMake(String make) { + this.make = make; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public Integer getVIN() { + return VIN; + } + + public void setVIN(Integer VIN) { + this.VIN = VIN; + } + +} diff --git a/target/classes/daos/Carepo.class b/target/classes/daos/Carepo.class new file mode 100644 index 0000000000000000000000000000000000000000..3424cc782364b590dc2ef78d17d80e8db3ba67cc GIT binary patch literal 1305 zcmZ`&+fEZv6kVq+ot921Eu|L(<))Tvz2Ft_ggXYYO1UVH6*zW@6C6~F?PQ|Lt{g(*yHn9(rXix}oK z%qx2}gyTn7;sQziJZC&$B2Xc()jGZPiv! zOxbc9wncBuJ#4fE(zSiVZdX?fN49L5b)p0yD)&EJd4~b!%XOpWaiI(bphZIP*16UYa)727g9jw3Delu|M!@oBT9spzw=Fl^VM z3h))*>PY8QpmLeoT}In~N$_TZrTe#f>vqR6<*r{g{zu$P`X zp70@c*~G4DtBzwkIv(N?)eOReygJ4(uHmtcMJ(xuo~_Yfl^qMokPcdqq^oz;XpvKt19a;9m&B8Wh+(I)-LUAT<|5N_*lS~ z!FC|cwU4KFi1G)FOrJvttk2GzBND;04@j?nLG1bLC-i*#$Y3CYoEMzoeh6`{Iy3@h z&`(bv2DlqWmM37EX*48w${|8elK(t+OoTxc_*J_iN<=PmuOYInVJOKXTj_Iq&vY?5 zN3+o%OWEkpWpdOQFno?g6lWWX-<;yd_=E?mYEkqG=;4~@?Lm5qJeRnZ18PN|kg9yt zClq7e5nT1KO1Q>d#G{sl_)UPQhEWP6$TB9>c<`!FlfhL9`PS10D2IehMsU_uk%3@n sCJ-^_RX4`s$7!7)yUBoISG@j^c;!I6GOh>W#UVCHi}*K~A%dHK0I}B+!vFvP literal 0 HcmV?d00001 diff --git a/target/classes/daos/Carepository.class b/target/classes/daos/Carepository.class new file mode 100644 index 0000000000000000000000000000000000000000..ac67bdbd5bacbed2220ffc13978c7f23882e9bd1 GIT binary patch literal 4437 zcma)9>3D}~5+Vo6I+NLe!Fc_Mncblen)BA4!hkod<$1}4lYmMAAA2c)j&O7h%yvK~5 z`}gIi0lXZ4Pa+AU9@{aYVls(37zs>?*-YSg0w=`MQc*}^1Bzm>#ZVH%v>2QuTzK^; z<75KeNu0vzB&E%$czqJ9@doj6*Al!DZ)&8%w=BV1@isBMJ&AYVJ{9jw;H=m8~d|bst3X(aySTu5; zX%`i&&K%cI>YeVi)!92w?otr%HjAdWPr)^6~UG5yVor3Q5 zIFsdqQS|yw=Zum7h6n0$x}!h~E1{iPPtTng&`Z)OMvo}ap1gvM0ZvkD#-`4;g-2tQ z*H6ZVkadzzfht7wSQbsM_$_VBn65`lA|{VT3;GFq9g{xubH)(n#d5Y~bFLfhA7o^` zDaSq~FelJ!ssLt>WWt`+JBC}fysY6VSXJd3u288mYEkvPtzl!D7RGj_REh7#5V*qd z?y&p&x>S5Z#V47V3hJ}wWKs9Z4*f~hIDFMPM!a0g%ZP8PfjF!}WI&wxV2I>cS;H!} zms)yZJg>J1xLbBA_&)-V5z(w&c5=pHQ>68ZaMJD&Ii_J3KBb`(6t?E-q&rwPt-QhD zH1`i?`-VqS{evSzDR;^~<=A#%2h*Wd!>92X1?xp@J5n;V9U`zDGOQg8YFmn_HQJLo z+LukWZrkc^>yX1%w=%bNY4|K2W~{3EhsKYyzBPOf4{P|m7|!7l4POweFX9muU()a> zzO3Ra8orA2DlTYv43BGg0*@blB^vr@WUpC_S&o%r4FR1vXhF{?Y=0i;!<&nlCN|%c^z@lUcm2 zGI#Y-$tbeYw}*2#=wCrM47Ic%yI89U&-S@k&6R2jF_J@NcO8)JBOz9zYx=}7*+f<^ zIMrYDj7h^0f@M>d{Uy$&Y%!rMt0;|6$R4U-&mxB39_n^}TCy)zVGi6|kiFR%*E86y z>+CYY2`(tp?!1+q+~Wa5FVHwY`U}Z)sw9{!aj`98jDWepIBn$0p20>=E$sPBJOPT~ zy80xGJnl*j%)kmNvJ!l%xK4!nBz}$GT&1Jp-7#@b|F-6SVl#<)h6wl0uw}tbQB8@7 za#3E*bl1q6IT}f4{oYb*2+f@^El)I=3iy&~5g`HUwK7D0Oqj)dPmxz=(*mc5`d52Jx}@))*CzsQ8_R-{a33bc`$5 zQU%2ir2*RVITr| zeuuwFFXs8+Xz>qrh1{%le8IsHz8%8sFMZQj`Qm58i4sWe)h#P)vY=G_O~KY0d=~SE zx9^MdVKd7;2?aa&i-@NHAMo{D@4{}5FXPu?(j%Oc?H8f6r=LXR0>2{sUjZ!R9|vGL zqG;f$6?g@|ntX1&64&#K=cH6VVQ~ZY1Ts50E8L5lGRSXFZv#3uzh2&UWdKOEvV^L08b}YteX?85mX<2qm z<+MC|2@L~}VMRquBM*1@0%ozYoy%3{uuO1p*+kL>Y0@|h{^zNa{vW2#z&iTAo>*+a zN^GS6oA?)JGqzz1QN5PVw4fVXae#b>a2@X8&N$MP(uN7Nqr?aZ+}eraA)fEXUcxa! z-1cF=#BzEb%V|pKp%n+oUysN?z_RHT;X8yrA015bhzM7zeHLrxaE*fWWi$hGSR3K6 zPT@;u{j=CmMSU&eE0&NssT;S8qGAa)7Az;1-TY3Fn;z)a5+GQ+LtLGj#cGI(#2) zmY|6EY{M|W_A(cClH(SxqEb$Vs~F{6j{&aY+}VLau2f2H!4Ovo%Bsh$I3g4IYyj;t z{`nn7R@z<02)QE|rQMNQvT+AXchV+Ldyfhqle;ni4Y54m`DbZS~bG5p*&G)gb5Kr z?Ml8yMI8MfB4oZdB*mo=SaF0X3lWX1;WU%H3~8tN;4*XMMhz+1&|*Qs#K){odnw-uL~! z<=Ou|^)!Hu_;(mdoC;$nPAj-a-0zj~nlQ@nS_Sus_tz=7U%~5TydjKAoKoLxIq2QAWJ|&i3 zka4jRPvX-GKBM5X3MLgyDVPr95}uMV6UOK8c^OZO_scS#k?{o?Ukqaho{;e+8DExA zzE#ia_BIK@hQ@vgp`YzbMtjkQRM!#z5;@uO5>?3+kLS@&G zYUUE%s-E3K6B*tmENr;5>!>=aCJZ$@oJiT0o*mxexKOQOE~=U1vxI17B6r+qA55Cr ztd_QQla>~^b|_Dj#B>x%tClum=5*V%CTP%&BIy%SNf|YbQIkUIcV(EIkxTGREZ4@h zbl%nu(z33!%k^7%~j-V)z&gv)|OCPQb`r0RFQ~do$u3uu8#4v zHX^d**KpdGv%+k>z+zX2AfbwO)5p5i5r+v@5c3%!#I_p}@vZaaQ;Jg%P<>dpa(2=* z@|kSAYO50F=QKJW@{6iTtu;$hVVPrYNidU6CTtb5pOtXQ7wviw7eSEF9QFFO5(;8yKO~j9B6Kli_QIBcy{5fGDXhKAkaQjZi3laPS|12Obm~g*D@FM;tAzmV)Gn=y+madBVUF^=;Du%)E zjJ9-I%jJA3OG;LH^E8psd><={n<i;LaUJ&I+uaVEs0-yPgU#O~_M4iU>NMmz@+>iuq$M^r1N z9nW*Sbj>ZDYgMUCg6a^9Ys0loxEx(I#00e7LE;LO3W+oNYL`eKM2i|a3rRQw)pr7L zr)8`7d=W)jy= zB3_ER7qyILA%du5oQn{{VqTZvI@I$Q(^9O(GTg|wTW~#E5ho^ zVimGjjT{&l_n?MlSkFRS$udlmxB-%4 zl9u~P$pe%QbZANBPKPNz#uUS(86(~`4ps`BN*aSh|))(;V`|Q z_3#yaaSp@OfP?Bhg#L?w^dCIDli*emT^@E_bm`Zny1q#D`T%ZYVkNfS#Hv^+g~XOH zD3H=Jrcp)u=9APY30=Z~M9`w{O0-9PwAUADug5WJyR^#)?Drz$QPGR+3?mawS|1I* zur(Tdv9+mw=_TA4#DyM#d5c$w3cW{*ku9WOuy{f&AB9jw2~v#k6rzfGv54v}#1di& zW*q<(LT&OX;J_Az^b!pOWsFE1Hf~+=hlUs5bBs?o+Z5Z_6}yRWxl`h1mPr%;#x{w| zEpE~Dv^1}o#>+2k4vEkghrHNV5~=25>}y#lATdEAQ_c>pCKNS{Y!PExh7tDtanhdS z3L7oRJ2`D+2rURZZ6(0k#P4_U9^^m%*bctsSWjJ1JS%B!lutn?yG0_qW`tyn75^_J z$)8qUlH=4C<+M1qc@kTm!PaTCvN&#?!Hxk=-ZoaffU=Ukz0JFC_wI#aaVfc*I;W|1 ll4+e{O7}S7ixFK-N+xiEtHcCgDfGyAbp=1%&DQ`<{vTGn$q)bl literal 0 HcmV?d00001 diff --git a/target/classes/models/Car.class b/target/classes/models/Car.class new file mode 100644 index 0000000000000000000000000000000000000000..e3fc9d25f172d8170bb07eedd998eb6155807105 GIT binary patch literal 1757 zcma)*+iDY06o&sjnVF<9_S|UH9->y0=^@r0RMdb33oWr;R0>|nG#%p9G=Ve~d=Fnk zP-qam@Bw@%@n3r;O`J}|o3#(K_P@UU?=`=E|M&@D1CP@fL1_djJdm&^;h}_e2^$hN zlh{h)k%HkLDX3iq^Thq&DNI(6-H&dm;Wq1~{Z89&)}Ja^C#@r|!JJQ?+g6ww$k}Oj zyt>zxq*|-d;@8B%&Ypt(%y0UgGM9zo0Z&$_pfFbTo8I2p$)VSN;~qA2y;jX_9Jp;? z*5RhvdGDVpWU9LEX{q8$fp>+0x*^*?cY199l_Zo_-Rtbo4>Hpc>oi!Iggvn(~I6|x%1z5urMtBAMrMDBs~ygrBV zH3E{41lxY772212#Bx|ME)89S Date: Tue, 10 Aug 2021 16:34:27 -0400 Subject: [PATCH 2/2] completed --- pom.xml | 10 ++ src/main/java/daos/CarRepo.java | 106 ++++++++++++++++++ src/main/java/daos/Carepository.java | 88 --------------- src/main/java/daos/DELETEME.txt | 0 src/main/java/daos/Main.java | 54 ++++----- src/main/java/daos/{Carepo.java => Repo.java} | 15 ++- src/main/java/models/Car.java | 77 +++++++++---- target/classes/daos/Carepository.class | Bin 4437 -> 4816 bytes 8 files changed, 199 insertions(+), 151 deletions(-) create mode 100644 src/main/java/daos/CarRepo.java delete mode 100644 src/main/java/daos/Carepository.java delete mode 100644 src/main/java/daos/DELETEME.txt rename src/main/java/daos/{Carepo.java => Repo.java} (87%) diff --git a/pom.xml b/pom.xml index fcb1d12..4e40a0a 100644 --- a/pom.xml +++ b/pom.xml @@ -28,5 +28,15 @@ mysql-connector-java 8.0.18 + + com.fasterxml.jackson.core + jackson-core + 2.13.0-rc1 + + + com.fasterxml.jackson.core + jackson-databind + 2.13.0-rc1 + \ No newline at end of file diff --git a/src/main/java/daos/CarRepo.java b/src/main/java/daos/CarRepo.java new file mode 100644 index 0000000..e61efcf --- /dev/null +++ b/src/main/java/daos/CarRepo.java @@ -0,0 +1,106 @@ +package daos; + +import models.Car; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author git-leon + * @version 1.0.0 + * @date 8/4/21 3:05 PM + */ +public class CarRepo implements Repo { + private Connection connection; + + public CarRepo(Connection connection) { + this.connection = connection; + } + + @Override + public Connection getConnection() { + return connection; + } + + public void create(Car car) { + executeStatement(String.format(new StringBuilder() + .append("INSERT INTO daolab.vehicle(") + .append("primaryId, make, model, color, vtype, mpg) ") + .append("VALUES (%s, '%s', '%s', '%s', '%s', %s);") + .toString(), + car.getId(), + car.getMake(), + car.getModel(), + car.getColor(), + car.getvType(), + car.getMpg())); + } + + public List readAll() { + ResultSet resultSet = executeQuery("SELECT * FROM daolab.vehicle;"); + List list = new ArrayList<>(); + try { + while (resultSet.next()) { + String id = resultSet.getString(1); + String make = resultSet.getString(2); + String model = resultSet.getString(3); + String color = resultSet.getString(4); + String vtype = resultSet.getString(5); + String mpg = resultSet.getString(6); + list.add(new Car( + Long.parseLong(id), + make, + model, + color, + vtype, + Integer.parseInt(mpg))); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return list; + } + + public Car read(Long primaryId) { + return readAll() + .stream() + .filter(car -> car.getId().equals(primaryId)) + .findAny() + .get(); + } + + public void update(Long id, Car newCarData) { + executeStatement(String.format(new StringBuilder() + .append("UPDATE vehicle SET make= '%s',") + .append("model = '%s',") + .append("color = '%s',") + .append("vtype = '%s',") + .append("mpg = %s ") + .append("WHERE primaryId = %s;") + .toString(), + + newCarData.getMake(), + newCarData.getModel(), + newCarData.getColor(), + newCarData.getvType(), + newCarData.getMpg(), + id)); + } + + public void delete(Long id) { + executeStatement(String.format(new StringBuilder() + .append("DELETE FROM vehicle ") + .append("WHERE primaryId = %s;") + .toString(), + id + )); + } + + public void delete(Car car) { + delete(car.getId()); + } + +} \ No newline at end of file diff --git a/src/main/java/daos/Carepository.java b/src/main/java/daos/Carepository.java deleted file mode 100644 index 2f20222..0000000 --- a/src/main/java/daos/Carepository.java +++ /dev/null @@ -1,88 +0,0 @@ -package daos; - -import models.Car; - -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.List; -import java.util.ArrayList; -import java.util.MissingFormatArgumentException; - -public class Carepository implements Carepo { - private Connection connection; - - public Carepository(Connection connection) { - this.connection = connection; - } - - - @Override - public Connection getConnection() { - return connection; - } - - public void create(Car car){ - try { - String query = String.format(new StringBuilder() - .append("INSERT INTO showroom.car(") - .append("make, model,year,color,VIN) ") - .append("VALUES ('%s','%s',%s,'%s',%s);") - .toString(), - //car.getId(), - car.getMake(), - car.getModel(), - car.getYear(), - car.getColor(), - car.getVIN()); - System.out.println("query" + query); - executeStatement(query); - } - catch (MissingFormatArgumentException m) { - System.out.println(m.getMessage()); - } - - } - - public Car read(Long carId) { - return readAll() - .stream() - .filter(car->car.getId()==carId) - .findAny() - .get(); - } - - public List readAll(){ - ResultSet resultSet = executeQuery(String.format("SELECT * FROM showroom.car;")); - List list = new ArrayList<>(); - - try { - while (resultSet.next()) { - String id = resultSet.getString(1); - String make = resultSet.getString(2); - String model = resultSet.getString(3); - String year = resultSet.getString(4); - String color = resultSet.getString(5); - String VIN = resultSet.getString(6); - - list.add(new Car( - make, model, Integer.parseInt(year), color, Integer.parseInt(VIN))); - } - } catch (SQLException throwables) { - throw new RuntimeException(throwables); - } - return list; - } - - public void update(Long id,Car car){ - - } - - public void delete(Long id){ - - } - - public void delete(Car car){} - - -} 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/Main.java b/src/main/java/daos/Main.java index c4f61a9..847dafd 100644 --- a/src/main/java/daos/Main.java +++ b/src/main/java/daos/Main.java @@ -1,7 +1,6 @@ package daos; import com.mysql.cj.jdbc.Driver; -import daos.Carepository; import models.Car; import java.sql.Connection; @@ -16,44 +15,31 @@ * @version 1.0.0 * @date 8/2/21 9:49 AM */ -public class Main{ +class MainApplication { public static void main(String[] args) { registerJDBCDriver(); Connection mysqlDbConnection = getConnection("mysql"); - Carepository carepository=new Carepository(mysqlDbConnection); - executeStatement(mysqlDbConnection, "DROP DATABASE IF EXISTS showroom;"); - executeStatement(mysqlDbConnection, "CREATE DATABASE IF NOT EXISTS showroom;"); - executeStatement(mysqlDbConnection, "USE showroom;"); + CarRepo carRepo = new CarRepo(mysqlDbConnection); + executeStatement(mysqlDbConnection, "DROP DATABASE IF EXISTS daolab;"); + executeStatement(mysqlDbConnection, "CREATE DATABASE IF NOT EXISTS daolab;"); + executeStatement(mysqlDbConnection, "USE daolab;"); executeStatement(mysqlDbConnection, new StringBuilder() - .append("CREATE TABLE IF NOT EXISTS showroom.car(") - .append("id int auto_increment primary key,") - .append("make VARCHAR(50),") - .append("model VARCHAR(50),") - .append("year INTEGER,") - .append("color VARCHAR(50),") - .append("VIN INTEGER);") + .append("CREATE TABLE IF NOT EXISTS daolab.vehicle(") + .append("primaryId int auto_increment primary key,") + .append("make text not null,") + .append("model text not null,") + .append("color text not null,") + .append("vtype text not null,") + .append("mpg int not null);") .toString()); -Car volvoCar = new Car("volvo","xc60",2018,"black",45678865); -carepository.create(volvoCar); - //new Carepository(mysqlDbConnection).create(new Car(12L,"volvo","xc60",2018,"black",45678865)); - //new Carepository(mysqlDbConnection).create(new Car(13L,"tesla","model3",2019,"white",6478836)); - System.out.println(carepository.readAll()); -// executeStatement(mysqlDbConnection, new StringBuilder() -// .append("INSERT INTO showroom.car(") -// .append("id, make,model,year,color,VIN)") -// .append("VALUES (12, 'Ivysaur', 3, 7);") -// .toString()); -// -// executeStatement(mysqlDbConnection, new StringBuilder() -// .append("INSERT INTO databaseName.pokemonTable(") -// .append("id, name, primary_type, secondary_type) ") -// .append("VALUES (13, 'Ivysaurr', 3, 7);") -// .toString()); -// String getPokemonTable = "SELECT * FROM databaseName.pokemonTable;"; -// ResultSet resultSet = executeQuery(mysqlDbConnection, getPokemonTable); -// printResults(resultSet); + Car car = new Car(12L, "Nissan", "Maxima", "Charcoal", "Car", 40 ); + carRepo.create(car); + carRepo.create(new Car(13L, "Ford", "F150", "Blue", "Truck", 22 )); + carRepo.update(12L, new Car("Ford", "F150", "Blue", "Truck", 10 )); + carRepo.delete(car); + System.out.println(carRepo.readAll()); } @@ -103,8 +89,8 @@ static Statement getScrollableStatement(Connection connection) { } static Connection getConnection(String dbVendor) { - String username = "sitara"; - String password = "zipcode0"; + String username = "carl"; + String password = "carlpass"; String url = new StringBuilder() .append("jdbc:") .append(dbVendor) diff --git a/src/main/java/daos/Carepo.java b/src/main/java/daos/Repo.java similarity index 87% rename from src/main/java/daos/Carepo.java rename to src/main/java/daos/Repo.java index 31a4b24..9149b37 100644 --- a/src/main/java/daos/Carepo.java +++ b/src/main/java/daos/Repo.java @@ -5,8 +5,12 @@ import java.sql.SQLException; import java.sql.Statement; -public interface Carepo { - +/** + * @author git-leon + * @version 1.0.0 + * @date 8/4/21 3:15 PM + */ +public interface Repo { default void executeStatement(String sqlStatement) { try { Statement statement = getScrollableStatement(); @@ -26,9 +30,7 @@ default Statement getScrollableStatement() { } } - Connection getConnection(); - - default ResultSet executeQuery( String sqlQuery) { + default ResultSet executeQuery(String sqlQuery) { try { Statement statement = getScrollableStatement(); return statement.executeQuery(sqlQuery); @@ -37,4 +39,5 @@ default ResultSet executeQuery( String sqlQuery) { } } -} + Connection getConnection(); +} \ No newline at end of file diff --git a/src/main/java/models/Car.java b/src/main/java/models/Car.java index 5940b5d..c8bfb65 100644 --- a/src/main/java/models/Car.java +++ b/src/main/java/models/Car.java @@ -1,31 +1,47 @@ package models; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * @author git-leon + * @version 1.0.0 + * @date 8/4/21 3:03 PM + */ public class Car { - private long id; + private Long id; private String make; private String model; - private Integer year; private String color; - private Integer VIN; - + private String vType; + private int mpg; public Car() { } - public Car( String make, String model, Integer year, String color, Integer VIN) { - //this.id = id; + public Car(String make, String model, String color, String vType, int mpg) { + this.id = null; + this.make = make; + this.model = model; + this.color = color; + this.vType = vType; + this.mpg = mpg; + } + + public Car(Long id, String make, String model, String color, String vType, int mpg) { + this.id = id; this.make = make; this.model = model; - this.year = year; this.color = color; - this.VIN = VIN; + this.vType = vType; + this.mpg = mpg; } - public long getId() { + public Long getId() { return id; } - public void setId(long id) { + public void setId(Long id) { this.id = id; } @@ -45,14 +61,6 @@ public void setModel(String model) { this.model = model; } - public Integer getYear() { - return year; - } - - public void setYear(Integer year) { - this.year = year; - } - public String getColor() { return color; } @@ -61,12 +69,35 @@ public void setColor(String color) { this.color = color; } - public Integer getVIN() { - return VIN; + public String getvType() { + return vType; + } + + public void setvType(String vType) { + this.vType = vType; + } + + public int getMpg() { + return mpg; } - public void setVIN(Integer VIN) { - this.VIN = VIN; + public void setMpg(int mpg) { + this.mpg = mpg; } -} + @Override + public String toString() { + try { + return new ObjectMapper().writeValueAsString(this); + } catch (JsonProcessingException e) { + return "Pokemon{" + + "id=" + id + + ", Make='" + make + '\'' + + ", Model=" + model + + ", Color=" + color + + ", VehicleType= " + vType + + ", Mpg= " + mpg + + '}'; + } + } +} \ No newline at end of file diff --git a/target/classes/daos/Carepository.class b/target/classes/daos/Carepository.class index ac67bdbd5bacbed2220ffc13978c7f23882e9bd1..bb3e8bd4bea7bcd8d27a69144043668c7e03143c 100644 GIT binary patch delta 1773 zcmYjRX>?OX6#m}JOWw=NGz|rElw;u?X+%;=DN>;Zv_gY)feN8uRF+Tz7D5Vb0Z}mm zuHgP~L)=kZP^g8n3Ao^f8!ou7s3s4}L-3CY6G=Bp(Wqm-2?vq}7Ra&5K(m1s=`Pf<$V5ICOLMt2OQg9%nk!9Qg{5v> zjg)~36W3swNwnoUR+#9CYvtrR53a`zc}#eV2e;xjPm1<-6L;WF9kzkhGUzTHcbl+~ z^xz)cE6sf-*5H0=*2+u|NR$V4Jf!1c6aDdsfkzEIW?-Fx#|=DTV7&}`(!^7ES|UCp zy$w2^)$yDHv%WEzjMuj`G$xhSgXM~{qOGr5sOTGYY$B*#=a}M3#utx@HQ5^-Ek+qy z1%_gnU8oInJdZYemNv3xGqx!3&513F6(?fJ*~PUp<`7Y!9a{vpO0x~y1$IbpC${T& zL0}hl>)0dkB3{z*vcN0YEAT4z+Q+pb-)l1RLX0N|f!FbdUE=fy-t=K#t_yGZ@V3A^ zcvr`J0{ij4zz6tH$43GO@Ufk67CAn_r}kRsDS?dwpW$`wg%Z+qxC{*fhjFMa-*r-P{DNQY-bOD+DSm4U84YSt_cN>d*K{gg)0mtc zQs7Q-oD@qejO+Ma;0XQ_n1i|YPP0@wZXY!dYkw;U*vmZm_6g5`R4JQW!P)$)@=n=^ zZu(_7hc?97Xs)Xq&EQrj!NM(2TRBrPoYu<+0OUf0kEgm}1ZVzCG|t6&obg;5RUukA z&d*{Nb5ywJ3~nxlx`|!}&y`;Fr*T9kB8#J7Bt~&1WFHVKmErdEoa!+$TadXc(3}4- zF=jE_Xk3tHu%Ls%0*pZ=&sH(s4fS78m}*&c4aTM+kL8pQGT`kK=q$kMIBsDaY8j`< zW+ZgTZt$*Syf?QxCF5n%ewe^tm~sqast7%e5|(2kJtwITMIAjCsxc6g=;@pnU@|>} zUj;WVLNqPqs%%y-mf~Vu!km6A#HEG5iWr=l-)>b&uS4iW`f5;AqV>3F(=L}h9bq-rJGFt{COb*bM>Z_a{; ztUDn^2c*dKpwE;~FYs;^w(sRVaa%)?QRvdRCzG5pE9xRG<&J~uIDC060){{ckEK%oEt delta 1399 zcmZ{jYgANK6vuz(&J1Vf&S{uvLG{6!<%$&yA|V=<7D!eaBBo(wS&cfPL?D7zT8+J| zq?cXoVP!8$D=TRfQ_HfKWo7grd%ykAmsa2U;L6oLcUb6J)`z>#KKuOle?M=3@xbuR z-a|Wf0i*fd#U&k~ocWq&mjLN73+%ZtOiP%nt=g)&#$_07R9(M|HTSqANJqJs z`>eR%Wi=02;n_%QEX!KWgPMn2N_p5CA8}d7qngJwkN5sHRjFm!8mCO@^_nLH>U9KW zd;0?&;Yyw~RB)O%EjTvt6i<8I!MeaR^mzTj!s=(~F+69*1~wX=x7rJA)Vyfe#7ml& z4X?0S(`$H@tYHgTMTz&PDrqomweU$ymWYNvwkhIu?d@HiU5itT8q!@0+UIrV=kZ#c z?Q-mhv(xZ8Z)kQI-sCOAZr;|sV|bVMyw#!d!29g+c85+FzTWTw9~$=Zk>+E=C+stP zO246!&kUcl-8&enj#u)9;Y$WIUm5l@klmAaNF~1J8%1Hsl$O-eR7Gp5t+}FcPD^@j z*SOMIw%Oli4}=#w$46S*+nQ&lT9>3X-x9 zh)lWciejXEj_sw)Ga`B=qeNE8?L4tNa=OWFsASnzoL;#(vStvIJ%W6K#Kr4a#>lNG zhvsyuY0Npc=!u-`Q)Xk8LU|x| za`E8;5<~6@X~Fq|Q+6MOy2>lf?-BgI{Q8W=+n}d1oeLy|fHZJ2^`Zr(*jlED7Lvf# zG>DcbFC&>Mnx=_UXcR5X3Q1}j7y7O29*i23zhXKwBxaHPgck|gVWz~gP03j<7E4`5 zOve%Yha$}-noAFouG7qlaG5+fTrTL@Tp`j9vPM2TE_HZ*xqdhL{Z8Z_hsst`kS$vr z{Qfy|UddI1WVUbziGLK^j3c%{9mQrj{5gt$j^jTln*N8vA7k9L+nh@yBW(*x9#Bx$ zM_ICu5o^|=gBu72HirY^XU~c9XZv7Yaec+h@