From 7be47e73cd2541354feda4d462e3b5827fb33039 Mon Sep 17 00:00:00 2001 From: git-leon Date: Wed, 4 Aug 2021 15:00:08 -0400 Subject: [PATCH 1/3] migrated jdbc lecturedemo and hyave proof of concept for speakling to mysql database --- .idea/compiler.xml | 1 + .idea/jarRepositories.xml | 20 +++++ .idea/vcs.xml | 6 ++ pom.xml | 31 +++++-- src/main/java/MainApplication.java | 119 +++++++++++++++++++++++++++ target/classes/MainApplication.class | Bin 0 -> 4693 bytes 6 files changed, 168 insertions(+), 9 deletions(-) create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/MainApplication.java create mode 100644 target/classes/MainApplication.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..ba50188 100644 --- a/pom.xml +++ b/pom.xml @@ -4,15 +4,28 @@ 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 + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.0 + + 1.8 + 1.8 + + + + - - - junit - junit - 4.10 - - + + + mysql + mysql-connector-java + 8.0.18 + + \ No newline at end of file diff --git a/src/main/java/MainApplication.java b/src/main/java/MainApplication.java new file mode 100644 index 0000000..8157416 --- /dev/null +++ b/src/main/java/MainApplication.java @@ -0,0 +1,119 @@ + +import com.mysql.cj.jdbc.Driver; + +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 MainApplication { + + public static void main(String[] args) { + registerJDBCDriver(); + Connection mysqlDbConnection = getConnection("mysql"); + executeStatement(mysqlDbConnection, "DROP DATABASE IF EXISTS databaseName;"); + executeStatement(mysqlDbConnection, "CREATE DATABASE IF NOT EXISTS databaseName;"); + executeStatement(mysqlDbConnection, "USE databaseName;"); + executeStatement(mysqlDbConnection, new StringBuilder() + .append("CREATE TABLE IF NOT EXISTS databaseName.pokemonTable(") + .append("id int auto_increment primary key,") + .append("name text not null,") + .append("primary_type int not null,") + .append("secondary_type int null);") + .toString()); + executeStatement(mysqlDbConnection, new StringBuilder() + .append("INSERT INTO databaseName.pokemonTable(") + .append("id, name, primary_type, secondary_type) ") + .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 = "root"; + String password = ""; + 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); + } + } + +} diff --git a/target/classes/MainApplication.class b/target/classes/MainApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..0eef2a7b175a643ca1601d905dd912bc749ae2e1 GIT binary patch literal 4693 zcmaJ^`F|8=8UIdplbLKbglq!2pdBd3W|OcDN3nrGbD^P|gX}_^R>jF?2m`w_VRkl< zTBX&t3Rc^qRO?kd@fNCvP_(VL*88mf4}L!W?#GYy`_Ak!3!xnE%slV&KF9aD-hKUl zFTVm{C;k~iKk^~$#e#y<;(12FqIf={;JpeSmGQn1YLQp)e(^l3;4uY{EBJtd4+_E) z3Z7K(l!6Z__^^U=;^=v?d_*iy*Wsi1n2cv+JR8C~JXeQqToB90Yw-zOl<~ZRPlm7o zpHlFGkoRfv@fii5Rq#0lpAX?hToOXQAmfX5_!7RX;42Egs^GGMuPOL?2;aarWqd1y zZ{s^MzAL`3$ha!wB^lofp%2f=_`ZxENT}Isn1-`YLLl0CL_%=Ln$;yVBn(p@&u3?J zJEhHJNQoq@w3a!d*@pNo5QENfBPXFTF{T;j!2Ep1NNbK^nR_TGOOk}O(T5W!v;{4m z(agDc(ykxEHn{fwT@JNlu#ZZAsckCxed8dq?q%;y(Zn{zZr z&+2BS#$=I7jS_)vDW6UrN{pOI>+=N&LusG;3LP&PR!lVjSv>o4<&rq2^t$J0(! zTYRRMO%kv-95d{kGh}7*S#wx(GzqJ7I`z!@Nev9ET|ud}tjw-`bOBdo~76j&jKS$1=o4d#u^tnhJHK{gFZxOUt|@V0qh;YP!_j+Z5DG-g#M zv#RAC>!@L-ZMTM0W_VV!7uA#cVmJGSKwWk8GmdIn{GZQcNNq1L9d#IgSBP)3%}aF3 z@NM&4ClR@UA4=FVI-VSvN~xpcsfh|-E6tP;HDyuGzs-O;V??qo9EQQ9Y^xbJ6(CPxw@Ln$?;9+;XKyS-U-Vgi$4 zOyi+2(wLR;BSCqEx#osR^i6+%VJj$yZ^X7OTcp*iVZ4SPhw&5qRL0N3_&I*T9_}*c z9fK0w27b`ubYPgJkT~;8meZ7VnlTXLLhV;Y9DfzYukkvS91#6R^|}l9*gBGKzwwhA zQlj6eX}2qpNycx&_$_`H#_#b5mQl%pQZHi>hw(@JiF3xbEH+rM6i&>}r2A-0Up(Hs zefPGz`L{PNVP-$8^ss59IobLhJFjoyx2VV=E6a(cnNG^c>W^5ao;+?Gb4n};eNIa+ zvPtR=_r+Z7Kc;1J`WDtaE4g^6|8QzZ#-BwA{zXD-+RDb=nvADU#Dzt1ukdC3HH^RE z??v22JiMJS-oQU3sO4~snmLDN8SX4CwTDWUOorxV2GVIgm-Df-m!(YQDI%-;HXCm0 zCJaWIePZSWM=dL>gm$^>RWN!vP-LuZVZ2Xh^YiSE5_)dmQhi;v&@x0@b*!S~=4he8 z`xwbl&I8|sh~8d}fVh+~Jm2bPO&#Y*6Vt}KjhO5t?j7hMUKPYNauc1!6CGXA79ViQ zMYi}X4_kSPC|pwvD?TYkGUe!6mdZQ)%7>0?c2Yl;=RETCuUkn?8JmDMOGLNdUW7NQ zZYfdf^}<n}+6yzvMBR*LTmP|j2O>+5Pm8IEKLb*6sWtEjY?s1>E?o6Ws?aDHt_o1&)*1u!j8i+%=JEg#rb3tLUrsKq^o?X!T{GAm$({(d=GmJ z7{V~WYB7QXq}<2OHHZL$q@7ux`5h8rHw+1|p1lnjLV%6mb>pps<~!?!qeEQ!=2Mq7Pw; z%2v^YBvO2%XdI>~;!g|ROHkqid}p}FWIV_doWh0s|i%jb08L$@_DiOkc#H5JsWUkJpo)97nt`H5>cV{#*$@gsTb4{WKtg2ME+V8QlHM5?P~`!*&Ds6D{&)G$B|M5u{3(N;pTo))UKO@zIR zCiLKh>(fq}(1Va$RsyWuq$l_cun(FrrD|YFzW@Bb*$~T6`uDNp2gnah2#`@9CF!o gD@T{|uKA*+H!vjg%xf=KnF`}F>{@Q*NUDPKe}ny&`2YX_ literal 0 HcmV?d00001 From 0f03ab692ac334dc48f9425ebb28e47fc3dd1117 Mon Sep 17 00:00:00 2001 From: git-leon Date: Wed, 4 Aug 2021 15:45:48 -0400 Subject: [PATCH 2/3] create and read completed --- pom.xml | 6 ++ src/main/java/MainApplication.java | 20 ++--- src/main/java/daos/PokemonRepository.java | 82 ++++++++++++++++++++ src/main/java/daos/Repo.java | 43 ++++++++++ src/main/java/models/Pokemon.java | 72 +++++++++++++++++ target/classes/MainApplication.class | Bin 4693 -> 4759 bytes target/classes/daos/PokemonRepository.class | Bin 0 -> 4120 bytes target/classes/daos/Repo.class | Bin 0 -> 1299 bytes target/classes/models/Pokemon.class | Bin 0 -> 2136 bytes 9 files changed, 209 insertions(+), 14 deletions(-) create mode 100644 src/main/java/daos/PokemonRepository.java create mode 100644 src/main/java/daos/Repo.java create mode 100644 src/main/java/models/Pokemon.java create mode 100644 target/classes/daos/PokemonRepository.class create mode 100644 target/classes/daos/Repo.class create mode 100644 target/classes/models/Pokemon.class diff --git a/pom.xml b/pom.xml index ba50188..2c16393 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,12 @@ + + + com.fasterxml.jackson.core + jackson-databind + 2.12.3 + mysql mysql-connector-java diff --git a/src/main/java/MainApplication.java b/src/main/java/MainApplication.java index 8157416..c4def4b 100644 --- a/src/main/java/MainApplication.java +++ b/src/main/java/MainApplication.java @@ -1,5 +1,7 @@ import com.mysql.cj.jdbc.Driver; +import daos.PokemonRepository; +import models.Pokemon; import java.sql.Connection; import java.sql.DriverManager; @@ -18,6 +20,7 @@ public class MainApplication { public static void main(String[] args) { registerJDBCDriver(); Connection mysqlDbConnection = getConnection("mysql"); + PokemonRepository pokemonRepository = new PokemonRepository(mysqlDbConnection); executeStatement(mysqlDbConnection, "DROP DATABASE IF EXISTS databaseName;"); executeStatement(mysqlDbConnection, "CREATE DATABASE IF NOT EXISTS databaseName;"); executeStatement(mysqlDbConnection, "USE databaseName;"); @@ -28,21 +31,10 @@ public static void main(String[] args) { .append("primary_type int not null,") .append("secondary_type int null);") .toString()); - executeStatement(mysqlDbConnection, new StringBuilder() - .append("INSERT INTO databaseName.pokemonTable(") - .append("id, name, primary_type, secondary_type) ") - .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); + pokemonRepository.create(new Pokemon(12L, "Ivysaur", 3, 7)); + pokemonRepository.create(new Pokemon(13L, "Ivysaurr", 3, 7)); + System.out.println(pokemonRepository.readAll()); } diff --git a/src/main/java/daos/PokemonRepository.java b/src/main/java/daos/PokemonRepository.java new file mode 100644 index 0000000..0f5754e --- /dev/null +++ b/src/main/java/daos/PokemonRepository.java @@ -0,0 +1,82 @@ +package daos; + +import com.sun.deploy.net.MessageHeader; +import models.Pokemon; + +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 PokemonRepository implements Repo { + private Connection connection; + + public PokemonRepository(Connection connection) { + this.connection = connection; + } + + @Override + public Connection getConnection() { + return connection; + } + + public void create(Pokemon pokemon) { + executeStatement(String.format(new StringBuilder() + .append("INSERT INTO databaseName.pokemonTable(") + .append("id, name, primary_type, secondary_type) ") + .append("VALUES (%s, '%s', %s, %s);") + .toString(), + pokemon.getId(), + pokemon.getName(), + pokemon.getPrimaryType(), + pokemon.getSecondaryType())); + } + + public List readAll() { + ResultSet resultSet = executeQuery("SELECT * FROM databaseName.pokemonTable;"); + List list = new ArrayList<>(); + try { + while (resultSet.next()) { + String id = resultSet.getString(1); + String name = resultSet.getString(2); + String primaryType = resultSet.getString(3); + String secondaryType = resultSet.getString(4); + list.add(new Pokemon( + Long.parseLong(id), + name, + Integer.parseInt(primaryType), + Integer.parseInt(secondaryType))); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return list; + } + + public Pokemon read(Long pokemonId) { + return readAll() + .stream() + .filter(pokemon -> pokemon.getId().equals(pokemonId)) + .findAny() + .get(); + } + + public void update(Long id, Pokemon newPokemonData) { + + } + + public void delete(Long id) { + + } + + public void delete(Pokemon pokemon) { + + } + +} diff --git a/src/main/java/daos/Repo.java b/src/main/java/daos/Repo.java new file mode 100644 index 0000000..f1238f0 --- /dev/null +++ b/src/main/java/daos/Repo.java @@ -0,0 +1,43 @@ +package daos; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +/** + * @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(); + 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); + } + } + + default ResultSet executeQuery(String sqlQuery) { + try { + Statement statement = getScrollableStatement(); + return statement.executeQuery(sqlQuery); + } catch (SQLException e) { + throw new Error(e); + } + } + + Connection getConnection(); +} diff --git a/src/main/java/models/Pokemon.java b/src/main/java/models/Pokemon.java new file mode 100644 index 0000000..912220a --- /dev/null +++ b/src/main/java/models/Pokemon.java @@ -0,0 +1,72 @@ +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 Pokemon { + private Long id; + private String name; + private int primaryType; + private int secondaryType; + + public Pokemon() { + } + + public Pokemon(Long id, String name, int primaryType, int secondaryType) { + this.id = id; + this.name = name; + this.primaryType = primaryType; + this.secondaryType = secondaryType; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getPrimaryType() { + return primaryType; + } + + public void setPrimaryType(int primaryType) { + this.primaryType = primaryType; + } + + public int getSecondaryType() { + return secondaryType; + } + + public void setSecondaryType(int secondaryType) { + this.secondaryType = secondaryType; + } + + @Override + public String toString() { + try { + return new ObjectMapper().writeValueAsString(this); + } catch (JsonProcessingException e) { + return "Pokemon{" + + "id=" + id + + ", name='" + name + '\'' + + ", primaryType=" + primaryType + + ", secondaryType=" + secondaryType + + '}'; + } + } +} diff --git a/target/classes/MainApplication.class b/target/classes/MainApplication.class index 0eef2a7b175a643ca1601d905dd912bc749ae2e1..0ea7286391a3e3730791460d2dcdbf972d53f07c 100644 GIT binary patch delta 2462 zcmZuydt6gx7=F%n#yK3$fE^5hX`-RxHe4o!iJBLzG(du~$fyP^0|%oqP)b`Dvoy={ zq}|i5c2Bd$h)PSlXm`u(e!u7M*B|}YuiNvTjcM6n-{t*o&-=X3`)+^9En{PQ|9bWX z0OdHSVGfpSn2i-GE)#uB!Q~npxI)F1Vt$p1l`5`Quu4M~maDi%^w+9btzwOe>r|{2 zhU*pF;NX?wqia})8&%w-VHnnn%gmuAr;3|15!--`!hDN{TXCCs<@PMxfjbr4rQmK2 zCD@dO3xp z$sDjn%+I7_Ot1ZUX{Y&JwY_H_q(BI5k( zI^MvW64aC}qTnqZZ{r;u?_!^V_jJ6E{W{vQM8O9-8gRhepW$;>;X@rC;bR@2;8QbS z88xyBpV8s^@Y3SWo{r{VqOE4^==$*el*xeI~HUy&z zcIx;B-8Q$cbgfZG7o}ZHLWM z(VaJM!a@ldEs9d9P1~JW1yXD_Gg5q1NDS3nwkLDuXD_jLc={o2*lD{m0h?h@K&~EyqtV-sj2f?@B%peYOsmxrh^gK|WHt6f zH=J=~8#$uM6^%jKmaLrehSVL^0_YO<&#g?HB~OYbnO! z3XHe>FHZW18q`|;_hA9*$bf+^oQ`@jrc%jgBsoEhy9Fo1Jqe7i@p%U@#)hpmgE5pe z`uZ_;hsCB2CttE#TpN(N-^;q?qqPj#L@0Ro(C*;fXJR4W$fh%A;cSk0HyVjRe1_v3 zEaHvla?F_3C}`q|^KgC=jZ|md0c^I%rg;W1PQqvkDraFn9(g!{(Wzi$rclNw(*LQ<>q@M`G_0m=E%&Ww(cOR< z*oc#`39~E?XONXV^x*=;7LhtPE@pTak@yl^gl3LpT5m)PTKW9O6vZMRHY11&*$ZN` zA^!oJ^gGtgCcl{^m?bhvFdt5a+no;gBpc46XEnkzE8t1bVov0yT`M9iP;?Hak&}s) zOCh)jxQHosWawRoh2EVGy&G-m&?~UjrJ%94rl74SG@&fF%YJa0D`x+7y2m|Y0F&+5 zS}VYnrPQeMc~=@*K0$$6m#KD@Dsxfe230-;%SeF{8Xp29Q->joLX~WHaAdQHb3yu> z7uXeaN-@@%q&oR4ltOrb2*qm^MtQYyJQ+*YhZ86j55Go*Xr?5EQ(NZsC2-=_sj|Rc zD5t=eFipH^@DnK(Fiq@ClngSJ!}Q1_O9ePL#*A-brk}^qU%(>)W?Hl5RXH(~L9?<; z@Kr&PEMjk`rXm)_8JL7_j%+-ehbTvO%fABQpBJ)%p7j5am;B*PdAW?cC9D7njj3@| z?!>eNrc)uO4Ps^^%kC^{U$B`)q0LD3C#CwK8j*}j8~22`tDTN5p;H|eeo>!u7?q`1 V##2JDltZn8zDzD$!l@0H{sXr0-W>n{ delta 2303 zcmaJ?`CC*~7=G_;_s+~^yNG}zdR0W6MMF_s5VtVN0Tpl|D;s4rR6yC3wwt9Egt^?* zY|~b4cd22J+}gF(%B)}d1Nswsdb0Q28AhL{=V@TRbI$jj<@?_EJ!g)Lzg}ou{pZ{T z0HyfdgE{E*pd4Kawu^R$f^N}1q~Ku%kH~n`12;MqJSJL0!Q%>cDtJP{lftn}!EOb6 z6g;KiX$3uEX|FKP2-D}qUOX#fpN#z;jKl#if;i|kXiYbs!yy@m6&&$k44zkTRBZTy z7`&+9B?T`lc*TQbI4*X1RmN*xypA^%ys6+V1t%1oRPeS3@8De-?|JY(K9KRD7@v}H zTE-a}XFZsO12R66@v#I~c~eVMM}-7)q!iE2*ck0t*19>`+}ctfS+^xBK{F-qFms`O zoN2e6%u1{4h^*gS9ocF{S%Z1a)@E+7pO<20p(85wo4t-wDQ;eL6y;Q4u8LO7mEdgd zZr`>=#e--v^PGPB1BjTF&cpTroHPG$c4ZCX6A49CHFcG>^?FrJ{ZjLS(`QI1ZfXqb zEs^GEP~Y0t)EsH+Ufa>Vm816P`qq}lq47jrLcz-U;T4s2dU45=pgy6htGhkY*)}1l zPYvp26K6{pm5S3d6u*5!ab0D&a$&vh*B8|;t=1bO=4EGY-fR_1u}nn+?oqKGjWW&) z&js_eE64&bs-@bd4^kz*iE|YFoGKEuGElqHX#dUBv*tR&fPa z%_6zXFXI~(-{LzJ-{S|OyeZNZnM{x-*GAhrw{+A+J7mOE{D^C&A@{g`65#!8rYi-m zUsPPjuV#rd%zgvEnTwSxX3)LH?D6!OlBdMX@$N8}duE*7>&=slatc{|6i6T)wDUNc z%vNIS^!GzL&5jN8X$50DnX4hMa`ao99_9FA~6bH?Ec zXtHG$VF%%E=!eJ9yfLU+nlS0YWC)W<6GPT*^E6HPvxOPEJzI&f z`T z3AeX#x)ar?VSb9xRRU7R?fe6B{c+@12Ll5bVZ*8FL5yq&_M_mU#f6GA=54o_(yWuF zaWnmuyh!1)S;eT?u`}9MSOBuV3=F3VxN>(%UI1N6nG*VX&E(4b^_9)z2UlFn`HcjeG7=Mn*j68O90G+6LkAhbO&r$ z#nNsuo+vF1nW@r7Fe~r`C)JZif-|X~EGlROsU8yFE$Xupd4(+MeJSdFSeK$+hHY6g zHNI;iHM1`>-w4@pszyK@N-9s`QCX=phFj8DK@e85rqzrzK%;bqQqYos2ssa(>!9SK z7F-H}-M}8pWjqVgO&Yt5jS?RuONWN|jY#5jgE$ExmT8m1+GK)by(!uql!c#Ptwfk9 z36a!<#B(t9)GUX{J>QW`zL1wPkV<|Mg#jLKCmAl%kwG}J`Ksr!{sN|`V}oJQ9AFM1 zY_h5DtcxVxy)yd4Z0)>zn=Le5D8Ux?Y+Rd-X7=n>eR-n3030$}Qvb;^#m{20 z${n07 z>Aoc0_ohp_w`uDxX=^tLi)ohbZJM?}s9%@!W=7J0AYVQ{-n{j`bI(2RzNc6Id*?*} zZ^6Ifh~r{2`tX>Hcg4|wi%od9_+Dzldzzq%>b#7690yPkg(ixHI2N%aYI+=(aV1Uz zMiYwSYs#?V*o%uTDB-FoY#B}*F3O^~CYD|oOK-Gb8Sj{)f*U{6QZ%B#i&)z(Ej=#08cx)&>7qRZQw>T;(&ec2*G7*&JA0+?L#txIU% zI?O>XEsPijVOH#yUEN4$b;l)$h+Ys5c&r$zxtPwmwr(zRBx$mNbIOLB(_9IAYqMr5y<$6qfP@Dg zlrY53&GZsSK=F|+b5Csb{v_?T=3F&@WkM}^i)4IW#uq3gV#?`@rs|e$y477r&9=6p zf=dZU0*!clWi7JRzjbGt4}y~6g21WTe1^1KDtIBir_R_`TO!1}OznE0q0_3Xay?a` z1(K)*&j-W#t%h2hFR0xDaQ86@uVa@-c~o*%+0JX@x=?jzoo0u`MhXV-MFmNu81UN8 zzHCmFb)%r!5{_mjb7M2JiOl5eRDzDG^QxmwQcyzyEnYPG6nqI^me8jc1`DD*X~b9ICx0d<9>{ z*A#pmPb&BZo|5rR1>eHA6?{iDzN_GS_`ZT4;D-c~8_SN3&L)zH@tLWKoq=<&r|~16 zM{h4rtRuFqE{j7&i7EIoexl$ee#*#gKCm)=rr_uJg@Evkf?wiSg3w=6lnQR)HZzoG zQY5JG8KUDgw`R(ws~5HE0TUK}qu_oVSMV&JBL$}{%XM5^Elp_dl2vfpVtBqCxA|FV z$Et!gtjoBgU<1EZ@B&_x@sfg<@jC^-7Z^IX&sh|;Hz2YYlSUP2^%&FJ8XIm*s@W}k%47}-)e#tL z)8R};U>OO!YpiBWS6dX?m9MErS({oQ4}F<1xL^i1ZKt)|=1drpT?KJ$!Lo}gNw|L- zuP^$^%R}qylv$*PCg6r!X*aZd+0~fFT&<{?G`DXXbAn|hn0mgf*~=93cGLVVguJRz zqd!qoyWt0mS)f@s=iLHgt4$14QTcJMQZ3S*YCD?9KRe(%CvLBEVHdq*#SnWd$?Xmc z8KvH^C*HDprZO2pL4#VL7B&%7A(x(2E_V<2Y~|+i?$DUyGFKKQ+*Og8cdGqfaVc_e zIF3KykK*a^r){rd?hth~q55NWfCI-pqYGuzdyb^1ZLOf^8CQnD&!zR7^6)I^hAV_w zkU^)+g~_bFNsjkriJ1u6Q2J12mLKydu>?af#p%vFmgJ>EaRUN zdg}Pu&L0VPzxF&FrV!(h(9i#fxRCi0Zf1P|gDi*G8fSlm-*|ErQZn^CBDdL!AkA_Y zU+du8JBoc=)rn(lb^5b$FW$r!*LhYYT6;5p0Qff3{7M{aOg@LmEmnMUF|YHWXGZZS z1ZE`Mhqtmv0D2lRZ;La@4K&QHBHGcof>?(viY68-XqI0g^f44R0q<9yA;$Oahk9L*^e~CObM-uqV5Ly@b7QBDIcA2~Xi%D!PvS5lp5Uz3=g8 zD&|)jQ?g%)4Q$}R+~69z)^M;Z+SRy*ySid5R`G^)yfK1DZvOAtn`oWfz@fRpRU}>- zxJ3+YxP*D4je5}<$8MrX5=)9BgZxP}L@(2f{V~SsUJSDwVU!*s+0&%^0^5(#pG)*) zo?hkYlfhXc$}?!<+7oP@pa%N6>H*fGT#>{{)*3l-7!R@*o_7Ib%&9|I=Uk)dL*pi=*u`z)7wFU13^X!uZ;lr5>gjI9b#Wi%86=l6Qt!l zca!LTF4*-!S`ddos_Dp=@mbGA!XK=fkjRTL!3CHlrxAW1CeywP_px8NP-iR~!Xwog z6DBIBV@DIyJDBkF+8!5aH$d?~KxDHxKqRyG84s2?@V;v!AydsBCmdpsed#w~&YS-z cUg1|Hm%rjw{Ef_hm~9c@kC2p);$wLH|GKIMsQ>@~ literal 0 HcmV?d00001 diff --git a/target/classes/daos/Repo.class b/target/classes/daos/Repo.class new file mode 100644 index 0000000000000000000000000000000000000000..97016f8c7a5dcf4e4dbcd88f2aa75c8ed2b833d9 GIT binary patch literal 1299 zcmZ{jT~8B16o%hv3)|Ax(o#wbMNvS@XZ^rWz#D=INr6BKM(>to0*ht0Znp}T{sC|O z3EtwBK@+|Ax0v`3)OXf(cM~z2ZfDLp^PYE}nf>SWcr4wKS$MtzkyPY#$Ps z(=e~%^)zncmP+2%a7V*}K)*bZM%R^1S9j&Hv|NF~TH{E6rPo`!bx?1*j%gh%PVEXL zR_uK#kZYKh+~^+fNoPmjYcW!2*oNNP)g4pK{a~sSDi;3;c3!rq=l59@5L`PHNo_S& zPYl_1P1|BN;U1bDfplYEw>$N1*|r(XP$Q5~o&RwvkY$1KVqI^0PDnwZbRgZP;n=N~ zau^XP)uti_BHpr&>~vdhQ@T5+ZTb{z0>vPibDn?sA{;I!9CpPIeKh7 z=n=9!z>wLh;$0zN0D;%9@Yo zKX>c7K<|=ineJnOaunUpp<};RC+6M1fxuu0gS#;t$txA>Z;8VpQqrf!VXhTL%^6?+b^r*3*dX8iqXB*1jobt!|q$jKPqU@E>!*`jhE6j{=US+e+NbP*g zHIAy}FV;1#@G qjdRlzj84+k^}tyOtv>>-518a-AcL`{X*TZ?U?XdHDIH{FU1>@sUb=}X?h-q)UD$+> z_$<8UMUiMGF^LbrheG_1Z5k&{r%LBMm-C$Gch2*V`_I3B{SBaw-7FT-IEMv15VI;~ zP0YhI9%Ye2L(Jneo}{s!MHY<=z7W45=4l3BivKEurub(Wd@a6}#`82b6~xT0f_&>h z|54X^y0x#hY-_)vAYti!LqQ?3)Ak(G-xkksfx+iO?2c~6u zYYO6(bcsM{nF^$ z7NM3Z5gZ>hG7s^ZO}R0-Z+J~sR;VmTLc-dTZm>CbDxDln^XR5u{QTJAlk(F%9t12z z6NLMcVwNekqCH|8*riz>99vFQeAqn0+v5$)Gjw7p2`OV_rvj_nxQGmf?#yJNU6pKRk*#~65~-@;tmW8iar;5VD9QIKuhhfc?MYRZeK zVYhFJB2>JO4^&*ldnzuWsNyn8Dz2cUU}gI4UES07OslKC*gG&f9`6|#j*1u9QgCPb zk#_+rxHwW~Q2mobv)45o1v4S(&t`X3#W&a%(^inFl|{R&OETYK*K6g7Uj5K-sjgai zOtW0CV};S)DE{%3mx^Ev16x@bDU=<%*PF#t1uTMwxI|{S1pi)Cp!P z#8gnlN|-AO5}yRQHWj3X8`D7IlOPp>ES~`)Pc9v}2>~dxm?%i%_lb_wrh?qU?NcC^ z`J9s=w+M3k3=nxF0l703BsmFEp9*q!I!HuO!PDF$$o(@wL?Z&iuLZ4irl1ayt5Q5e%offE<2YS@X^4E`La>k+qEMI%#z~Izzi@Mi`6J#S xKQNW*j#Dh4!bPcTTzQBb9-T1euz^qTsUN=`3h6UOQmFh_e~;_;Ig8=*{{X6IkZ}M2 literal 0 HcmV?d00001 From 5724c312844ae32c697cc3102cb6059f9e9251b1 Mon Sep 17 00:00:00 2001 From: johnS93 Date: Fri, 6 Aug 2021 00:07:33 -0400 Subject: [PATCH 3/3] done lab --- pom.xml | 5 + src/main/java/MainApplication.java | 34 ++++--- src/main/java/daos/CarsRepository.java | 103 ++++++++++++++++++++ src/main/java/daos/DELETEME.txt | 0 src/main/java/daos/PokemonRepository.java | 82 ---------------- src/main/java/models/Cars.java | 85 ++++++++++++++++ src/main/java/models/Pokemon.java | 72 -------------- target/classes/MainApplication.class | Bin 4759 -> 5082 bytes target/classes/daos/CarsRepository.class | Bin 0 -> 4479 bytes target/classes/daos/PokemonRepository.class | Bin 4120 -> 0 bytes target/classes/models/Cars.class | Bin 0 -> 2227 bytes target/classes/models/Pokemon.class | Bin 2136 -> 0 bytes 12 files changed, 212 insertions(+), 169 deletions(-) create mode 100644 src/main/java/daos/CarsRepository.java delete mode 100644 src/main/java/daos/DELETEME.txt delete mode 100644 src/main/java/daos/PokemonRepository.java create mode 100644 src/main/java/models/Cars.java delete mode 100644 src/main/java/models/Pokemon.java create mode 100644 target/classes/daos/CarsRepository.class delete mode 100644 target/classes/daos/PokemonRepository.class create mode 100644 target/classes/models/Cars.class delete mode 100644 target/classes/models/Pokemon.class diff --git a/pom.xml b/pom.xml index 2c16393..cfd5bb7 100644 --- a/pom.xml +++ b/pom.xml @@ -33,5 +33,10 @@ mysql-connector-java 8.0.18 + + com.fasterxml.jackson.core + jackson-core + 2.13.0-rc1 + \ No newline at end of file diff --git a/src/main/java/MainApplication.java b/src/main/java/MainApplication.java index c4def4b..b126963 100644 --- a/src/main/java/MainApplication.java +++ b/src/main/java/MainApplication.java @@ -1,7 +1,7 @@ import com.mysql.cj.jdbc.Driver; -import daos.PokemonRepository; -import models.Pokemon; +import daos.CarsRepository; +import models.Cars; import java.sql.Connection; import java.sql.DriverManager; @@ -20,21 +20,25 @@ public class MainApplication { public static void main(String[] args) { registerJDBCDriver(); Connection mysqlDbConnection = getConnection("mysql"); - PokemonRepository pokemonRepository = new PokemonRepository(mysqlDbConnection); - executeStatement(mysqlDbConnection, "DROP DATABASE IF EXISTS databaseName;"); - executeStatement(mysqlDbConnection, "CREATE DATABASE IF NOT EXISTS databaseName;"); - executeStatement(mysqlDbConnection, "USE databaseName;"); + CarsRepository carsRepository = new CarsRepository(mysqlDbConnection); + executeStatement(mysqlDbConnection, "DROP DATABASE IF EXISTS Objects;"); + executeStatement(mysqlDbConnection, "CREATE DATABASE IF NOT EXISTS Objects;"); + executeStatement(mysqlDbConnection, "USE Objects;"); executeStatement(mysqlDbConnection, new StringBuilder() - .append("CREATE TABLE IF NOT EXISTS databaseName.pokemonTable(") + .append("CREATE TABLE IF NOT EXISTS Objects.cars(") .append("id int auto_increment primary key,") - .append("name text not null,") - .append("primary_type int not null,") - .append("secondary_type int null);") + .append("make text not null,") + .append("year int not null,") + .append("color text not null,") + .append("MPG int not null);") .toString()); - pokemonRepository.create(new Pokemon(12L, "Ivysaur", 3, 7)); - pokemonRepository.create(new Pokemon(13L, "Ivysaurr", 3, 7)); - System.out.println(pokemonRepository.readAll()); + carsRepository.create(new Cars(1L, "Toyota", 1993, "red", 120 )); + carsRepository.create(new Cars(2L, "Ford", 1980, "black", 100)); + carsRepository.create(new Cars(3L, "Jeep", 2000, "orange", 110)); + carsRepository.create(new Cars(4L, "Volks Wagon", 2005, "silver", 140)); + carsRepository.create(new Cars(5L, "Tesla", 2010, "silver", 150)); + System.out.println(carsRepository.readAll()); } @@ -84,8 +88,8 @@ static Statement getScrollableStatement(Connection connection) { } static Connection getConnection(String dbVendor) { - String username = "root"; - String password = ""; + String username = "song"; + String password = "songbass123"; String url = new StringBuilder() .append("jdbc:") .append(dbVendor) diff --git a/src/main/java/daos/CarsRepository.java b/src/main/java/daos/CarsRepository.java new file mode 100644 index 0000000..9157dad --- /dev/null +++ b/src/main/java/daos/CarsRepository.java @@ -0,0 +1,103 @@ +package daos; + +import com.sun.deploy.net.MessageHeader; +import models.Cars; + +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 CarsRepository implements Repo { + private Connection connection; + + public CarsRepository(Connection connection) { + this.connection = connection; + } + + @Override + public Connection getConnection() { + return connection; + } + + public void create(Cars cars) { + executeStatement(String.format(new StringBuilder() + .append("INSERT INTO Objects.cars(") + .append("id, make, year, color, MPG) ") + .append("VALUES (%s, '%s', %s, '%s', %s);") + .toString(), + cars.getId(), + cars.getMake(), + cars.getYear(), + cars.getColor(), + cars.getMPG())); + } + + public List readAll() { + ResultSet resultSet = executeQuery("SELECT * FROM Objects.cars;"); + List list = new ArrayList<>(); + try { + while (resultSet.next()) { + String id = resultSet.getString(1); + String make = resultSet.getString(2); + String year = resultSet.getString(3); + String color = resultSet.getString(4); + String MPG = resultSet.getString(5); + list.add(new Cars( + Long.parseLong(id), + make, + Integer.parseInt(year), + color, + Integer.parseInt(MPG))); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return list; + } + + public Cars read(Long id) { + return readAll() + .stream() + .filter(pokemon -> pokemon.getId().equals(id)) + .findAny() + .get(); + } + + public void update(Long id, Cars newCar) { + executeStatement(String.format(new StringBuilder() + .append("Update cars Set make = '%s', ") + .append("year = '%s', ") + .append("color = '%s', ") + .append("MPG = '%s', ") + .toString(), + + newCar.getMake(), + newCar.getYear(), + newCar.getColor(), + newCar.getMPG(), + id)); + + + } + + public void delete(Long id) { + executeStatement(String.format(new StringBuilder() + .append("DELETE FROM cars ") + .append("WHERE primaryID = %s; ") + .toString(), + id)); + + } + + public void delete(Cars cars) { + delete(cars.getId()); + } + +} 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/PokemonRepository.java b/src/main/java/daos/PokemonRepository.java deleted file mode 100644 index 0f5754e..0000000 --- a/src/main/java/daos/PokemonRepository.java +++ /dev/null @@ -1,82 +0,0 @@ -package daos; - -import com.sun.deploy.net.MessageHeader; -import models.Pokemon; - -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 PokemonRepository implements Repo { - private Connection connection; - - public PokemonRepository(Connection connection) { - this.connection = connection; - } - - @Override - public Connection getConnection() { - return connection; - } - - public void create(Pokemon pokemon) { - executeStatement(String.format(new StringBuilder() - .append("INSERT INTO databaseName.pokemonTable(") - .append("id, name, primary_type, secondary_type) ") - .append("VALUES (%s, '%s', %s, %s);") - .toString(), - pokemon.getId(), - pokemon.getName(), - pokemon.getPrimaryType(), - pokemon.getSecondaryType())); - } - - public List readAll() { - ResultSet resultSet = executeQuery("SELECT * FROM databaseName.pokemonTable;"); - List list = new ArrayList<>(); - try { - while (resultSet.next()) { - String id = resultSet.getString(1); - String name = resultSet.getString(2); - String primaryType = resultSet.getString(3); - String secondaryType = resultSet.getString(4); - list.add(new Pokemon( - Long.parseLong(id), - name, - Integer.parseInt(primaryType), - Integer.parseInt(secondaryType))); - } - } catch (SQLException throwables) { - throw new RuntimeException(throwables); - } - return list; - } - - public Pokemon read(Long pokemonId) { - return readAll() - .stream() - .filter(pokemon -> pokemon.getId().equals(pokemonId)) - .findAny() - .get(); - } - - public void update(Long id, Pokemon newPokemonData) { - - } - - public void delete(Long id) { - - } - - public void delete(Pokemon pokemon) { - - } - -} diff --git a/src/main/java/models/Cars.java b/src/main/java/models/Cars.java new file mode 100644 index 0000000..5303d48 --- /dev/null +++ b/src/main/java/models/Cars.java @@ -0,0 +1,85 @@ +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 Cars { + private Long id; + private String make; + private Integer year; + private Integer MPG; + private String color; + + + + + + public void setId(Long id) { + this.id = id; + } + + public void setMake(String make) { + this.make = make; + } + + + public void setYear(Integer year) { + this.year = year; + } + + public void setMPG(Integer MPG) { + this.MPG = MPG; + } + + public Long getId() { + return id; + } + + public String getMake() { + return make; + } + + public Object getColor() { + return color; + } + + public Integer getYear() { + return year; + } + + public Integer getMPG() { + return MPG; + } + + public Cars(Long id, String make, Integer year, String color, Integer MPG) { + this.id = id; + this.make = make; + this.year = year; + this.MPG = MPG; + this.color = color; + } + + @Override + public String toString() { + try { + return new ObjectMapper().writeValueAsString(this); + } catch (JsonProcessingException e) { + return "Cars{" + + "id=" + id + + ", make='" + make + '\'' + + ", year='" + year + + ", color='" + color + + ", MPG=" + MPG + + '}'; + } + } + + + + +} diff --git a/src/main/java/models/Pokemon.java b/src/main/java/models/Pokemon.java deleted file mode 100644 index 912220a..0000000 --- a/src/main/java/models/Pokemon.java +++ /dev/null @@ -1,72 +0,0 @@ -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 Pokemon { - private Long id; - private String name; - private int primaryType; - private int secondaryType; - - public Pokemon() { - } - - public Pokemon(Long id, String name, int primaryType, int secondaryType) { - this.id = id; - this.name = name; - this.primaryType = primaryType; - this.secondaryType = secondaryType; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getPrimaryType() { - return primaryType; - } - - public void setPrimaryType(int primaryType) { - this.primaryType = primaryType; - } - - public int getSecondaryType() { - return secondaryType; - } - - public void setSecondaryType(int secondaryType) { - this.secondaryType = secondaryType; - } - - @Override - public String toString() { - try { - return new ObjectMapper().writeValueAsString(this); - } catch (JsonProcessingException e) { - return "Pokemon{" + - "id=" + id + - ", name='" + name + '\'' + - ", primaryType=" + primaryType + - ", secondaryType=" + secondaryType + - '}'; - } - } -} diff --git a/target/classes/MainApplication.class b/target/classes/MainApplication.class index 0ea7286391a3e3730791460d2dcdbf972d53f07c..193feec19fbd9be9b1c0ce2b8b3f6903bf500a29 100644 GIT binary patch delta 2639 zcmZuz33yc175?wco4lLJOUO*vLJ&v65GDyR7>W=;lMo<~brQk2)J~Gu5SYvhGZQ4; z#^QsPdDPbt}_b$rH)&*CnLyS+GodnE4lVg~M0=I;0KKJ{@)Jdl+5 z+~nFVaZuv(lS@tFL5VL+EPUQ{EMhf6T3 z9%DMjB_8!+DJCQyQ+|C-EgqLRD)EHGlRR3Fuj_a!58uEyC7zaeM&er%&q_S!#kcVt z9pClhdw5>Q3u^tMj_>REfsP+~(SnqYmvsEd_KBzF7W9T=@sK%W#Rn2rY(!v2b6?ns zS2a*gww{8v{*i1C5tAb#`?I+IqH{y@`0OfdqyHO6~QYdErT+ zfN>eMr^SXqS_M) z_ip2IgJ}-&oE2llCe3cLBHQAD&EbA4N^yK3vO~r0=`!OHn*D=;KjIYwui{TS{%qhc z_^W|yu~Wz247>-gkzofvGFH{uVIR$zm*0WE8+aZ6Fz`?O%YHTI+;ckchCqJEx|WCx z_L#B2s(^y*-v<7J|JtSc@}(#6CUMGI3YqcYNTSnB=s0HJB>qRg<5skv?y8|D9FJEo zxyat7Cv)CXiE_#=kaKlXD}->_)v`zvZlN7nFNefp-xR-1(S+HrqMKRPw5a(kd9A?J z_IU1myTr)TGrG1k=FQK{YZq-ILcK9FoFH(8WzDBCa^z(0gRZOE*gMomLXd$FpPgJ) zaTFXq!BL3AoVd`%XO1KE<1)^Tv;sC^GgrB|9Nm=gu(+AV+?2g(i~PoN5-d*g}&7oRiNM9b0)~8zO0MM7v`HIN)9x9LGfh zcVc%?8&9Ifg_fXaT#c>49A{ji5wQs@?e@QG6w4-%*F6fue=!L!NntrjPhrKRw3bpL zt5V@K=}Jl}&yud9q*%*}$;b6cAr793A4Gn$!lhi{a@YZ8A8ya$vKrGE)x~^YEJqPm zkf~ZSwGs_j#q3-Si!YZOa4B|CwugHAu!g7Wv7Z`uqtU@|HBl+T2nLCgix#$%=`C<4 zX=n=#Y#}@@+=?M?2p&vBtZL-|Vu*88z!pF|370s5z4gR5mjJV`rvc{0X}U|Ybgy<{ zGb5W~JRMm+3bT>T3DYg0iS%wDwdC zqjJsOQ&^n5)Qv-}3gOC3=1Jb<%epa>_k(>xW2cZzMIZ0>vjwPzppws@xmTt0eG zZp1-L64>`~=5jFdL7buiw~qG0LU8gp0;(^!i|tj5`_#dBDV0rV)A z`*_4eB~epR)zF7Zc%4F0MYjweB8H%m8WyfXGlvCu9cM0{Ey9O6b35_PR`HcX)A5n) zHxs7%*N};FC$&}f6#LhuuzvUnG>u^clVRfoTDsYNTbbqx%{=DR#?08987JF8nw3H7 n3{fk}z$^x}-SJ1kx;dVGwhRBn>_RvkCwa^vG%x^Uy$`Z*wB delta 2272 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 literal 0 HcmV?d00001 diff --git a/target/classes/daos/PokemonRepository.class b/target/classes/daos/PokemonRepository.class deleted file mode 100644 index ea1e44d8a38990ed32fe83aae7ab49eb27357eff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4120 zcma)930oW26+I(_2E<@6wy|;ASa!gG1juQdwlR)VjKP*879--6IITNK1B^YIk!MD> z>Aoc0_ohp_w`uDxX=^tLi)ohbZJM?}s9%@!W=7J0AYVQ{-n{j`bI(2RzNc6Id*?*} zZ^6Ifh~r{2`tX>Hcg4|wi%od9_+Dzldzzq%>b#7690yPkg(ixHI2N%aYI+=(aV1Uz zMiYwSYs#?V*o%uTDB-FoY#B}*F3O^~CYD|oOK-Gb8Sj{)f*U{6QZ%B#i&)z(Ej=#08cx)&>7qRZQw>T;(&ec2*G7*&JA0+?L#txIU% zI?O>XEsPijVOH#yUEN4$b;l)$h+Ys5c&r$zxtPwmwr(zRBx$mNbIOLB(_9IAYqMr5y<$6qfP@Dg zlrY53&GZsSK=F|+b5Csb{v_?T=3F&@WkM}^i)4IW#uq3gV#?`@rs|e$y477r&9=6p zf=dZU0*!clWi7JRzjbGt4}y~6g21WTe1^1KDtIBir_R_`TO!1}OznE0q0_3Xay?a` z1(K)*&j-W#t%h2hFR0xDaQ86@uVa@-c~o*%+0JX@x=?jzoo0u`MhXV-MFmNu81UN8 zzHCmFb)%r!5{_mjb7M2JiOl5eRDzDG^QxmwQcyzyEnYPG6nqI^me8jc1`DD*X~b9ICx0d<9>{ z*A#pmPb&BZo|5rR1>eHA6?{iDzN_GS_`ZT4;D-c~8_SN3&L)zH@tLWKoq=<&r|~16 zM{h4rtRuFqE{j7&i7EIoexl$ee#*#gKCm)=rr_uJg@Evkf?wiSg3w=6lnQR)HZzoG zQY5JG8KUDgw`R(ws~5HE0TUK}qu_oVSMV&JBL$}{%XM5^Elp_dl2vfpVtBqCxA|FV z$Et!gtjoBgU<1EZ@B&_x@sfg<@jC^-7Z^IX&sh|;Hz2YYlSUP2^%&FJ8XIm*s@W}k%47}-)e#tL z)8R};U>OO!YpiBWS6dX?m9MErS({oQ4}F<1xL^i1ZKt)|=1drpT?KJ$!Lo}gNw|L- zuP^$^%R}qylv$*PCg6r!X*aZd+0~fFT&<{?G`DXXbAn|hn0mgf*~=93cGLVVguJRz zqd!qoyWt0mS)f@s=iLHgt4$14QTcJMQZ3S*YCD?9KRe(%CvLBEVHdq*#SnWd$?Xmc z8KvH^C*HDprZO2pL4#VL7B&%7A(x(2E_V<2Y~|+i?$DUyGFKKQ+*Og8cdGqfaVc_e zIF3KykK*a^r){rd?hth~q55NWfCI-pqYGuzdyb^1ZLOf^8CQnD&!zR7^6)I^hAV_w zkU^)+g~_bFNsjkriJ1u6Q2J12mLKydu>?af#p%vFmgJ>EaRUN zdg}Pu&L0VPzxF&FrV!(h(9i#fxRCi0Zf1P|gDi*G8fSlm-*|ErQZn^CBDdL!AkA_Y zU+du8JBoc=)rn(lb^5b$FW$r!*LhYYT6;5p0Qff3{7M{aOg@LmEmnMUF|YHWXGZZS z1ZE`Mhqtmv0D2lRZ;La@4K&QHBHGcof>?(viY68-XqI0g^f44R0q<9yA;$Oahk9L*^e~CObM-uqV5Ly@b7QBDIcA2~Xi%D!PvS5lp5Uz3=g8 zD&|)jQ?g%)4Q$}R+~69z)^M;Z+SRy*ySid5R`G^)yfK1DZvOAtn`oWfz@fRpRU}>- zxJ3+YxP*D4je5}<$8MrX5=)9BgZxP}L@(2f{V~SsUJSDwVU!*s+0&%^0^5(#pG)*) zo?hkYlfhXc$}?!<+7oP@pa%N6>H*fGT#>{{)*3l-7!R@*o_7Ib%&9|I=Uk)dL*pi=*u`z)7wFU13^X!uZ;lr5>gjI9b#Wi%86=l6Qt!l zca!LTF4*-!S`ddos_Dp=@mbGA!XK=fkjRTL!3CHlrxAW1CeywP_px8NP-iR~!Xwog z6DBIBV@DIyJDBkF+8!5aH$d?~KxDHxKqRyG84s2?@V;v!AydsBCmdpsed#w~&YS-z cUg1|Hm%rjw{Ef_hm~9c@kC2p);$wLH|GKIMsQ>@~ diff --git a/target/classes/models/Cars.class b/target/classes/models/Cars.class new file mode 100644 index 0000000000000000000000000000000000000000..4b609ef670b8e6026f90961d23dfe50c71e8c4b4 GIT binary patch literal 2227 zcmaJ?e^VP(6g@A$2?@nepjfP_{Xqz!TPxLS8(JC*rG}PDMRCT?EXj&XlPt4Yw2tGq z@N+mgW6~Kr;|K6VIiCA=DNDNXpZk8@bIyJD-naYDzkmG=U#XQR33mNMfY-I2_gD0}uOyg-9Un<1xrowoA z-~7=uT4ra@s5_m#+X{)c`NC2tgif|R*Y?kTwoF%HB6POi@vJ?|B{06Rxu%e8I4y@h z$*$$CQ(>YMa@G>_+Z3reO^TeU+a2riVSCqdpP9QYE$cMQ*0$-|vJN&A-Vb(HAzyD3 z)#@5G)9q3)O^FR1>||IZh*o68V@HQP74|reSzJ;=q66Ra11^;22O}mC4}Gb#r;gub zCPRmsfAiBGPj>gMh9}X|!;fY16vc5c3`ImFl++!&V|&XA--V;r$qR)RXoq%=sX|-B zo#gTv&+#1;6qCPHZ#Zq^d$a3V?#p(|*f$$5x=zPvIId+p;%w7(8dkTVf zAzHs_dgiX(X&QbqsdQkuIXuHx3OAx5{}-~t^hwwI_rHH=x0)8)HY2hAVmGTfY~yP& z-*B^1lt)pWll6{X%R{Kn@otr(Zg`oeDn*u$$WLG>jE0((5A8(JzXab)NlH-o$+bOe z+iV?LE8XK_Tn*Pf=%8>{234h`q@u%TwireP$8RHoYqDmi{D&%>_|KMV!|8C5AEs%3 zw~~lSg*l5!k@d(r>yf3_Bdg7E6beP+6h7c;nf@`3sq#V(>JROAi8iZur^$N`m${zu zy>JCrxuU;TWAkDTr6{i0AlG?v%?{y`h=pq&vM}lwQqX=+(5WEx#UWx=K2En%?!8h@7p!^#%lwux=^m8 z()tNKlaeMG8^08^lGxuFq4+<4jr7hdWXgSv9MxZAl#5&;-^ZBLx{ou3aep4;Fh1AE zJB5P35tqXWf1cz}IP1?7+#mmyj(toXQB59Sj!!GDduB|>w#uC~86JyuUMFN%4QzN`KRLU*Ef literal 0 HcmV?d00001 diff --git a/target/classes/models/Pokemon.class b/target/classes/models/Pokemon.class deleted file mode 100644 index ddf9a8c045179c5b365eda218a5bfbd6a5a6186d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2136 zcmaKtYj4|R6vzM0eW}xB>18a-AcL`{X*TZ?U?XdHDIH{FU1>@sUb=}X?h-q)UD$+> z_$<8UMUiMGF^LbrheG_1Z5k&{r%LBMm-C$Gch2*V`_I3B{SBaw-7FT-IEMv15VI;~ zP0YhI9%Ye2L(Jneo}{s!MHY<=z7W45=4l3BivKEurub(Wd@a6}#`82b6~xT0f_&>h z|54X^y0x#hY-_)vAYti!LqQ?3)Ak(G-xkksfx+iO?2c~6u zYYO6(bcsM{nF^$ z7NM3Z5gZ>hG7s^ZO}R0-Z+J~sR;VmTLc-dTZm>CbDxDln^XR5u{QTJAlk(F%9t12z z6NLMcVwNekqCH|8*riz>99vFQeAqn0+v5$)Gjw7p2`OV_rvj_nxQGmf?#yJNU6pKRk*#~65~-@;tmW8iar;5VD9QIKuhhfc?MYRZeK zVYhFJB2>JO4^&*ldnzuWsNyn8Dz2cUU}gI4UES07OslKC*gG&f9`6|#j*1u9QgCPb zk#_+rxHwW~Q2mobv)45o1v4S(&t`X3#W&a%(^inFl|{R&OETYK*K6g7Uj5K-sjgai zOtW0CV};S)DE{%3mx^Ev16x@bDU=<%*PF#t1uTMwxI|{S1pi)Cp!P z#8gnlN|-AO5}yRQHWj3X8`D7IlOPp>ES~`)Pc9v}2>~dxm?%i%_lb_wrh?qU?NcC^ z`J9s=w+M3k3=nxF0l703BsmFEp9*q!I!HuO!PDF$$o(@wL?Z&iuLZ4irl1ayt5Q5e%offE<2YS@X^4E`La>k+qEMI%#z~Izzi@Mi`6J#S xKQNW*j#Dh4!bPcTTzQBb9-T1euz^qTsUN=`3h6UOQmFh_e~;_;Ig8=*{{X6IkZ}M2