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 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 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 b85f790a75c1f13ed262724ceece3e60e4250db8 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 9 Aug 2021 16:46:38 -0400 Subject: [PATCH 3/3] Done --- .idea/runConfigurations.xml | 10 ++ src/main/java/MainApplication.java | 33 ++++--- src/main/java/daos/CarsRepository.java | 100 ++++++++++++++++++++ src/main/java/daos/PokemonRepository.java | 82 ---------------- src/main/java/models/Cars.java | 82 ++++++++++++++++ src/main/java/models/Pokemon.java | 72 -------------- target/classes/MainApplication.class | Bin 4759 -> 5118 bytes target/classes/daos/CarsRepository.class | Bin 0 -> 4497 bytes target/classes/daos/PokemonRepository.class | Bin 4120 -> 0 bytes target/classes/models/Cars.class | Bin 0 -> 2046 bytes target/classes/models/Pokemon.class | Bin 2136 -> 0 bytes 11 files changed, 211 insertions(+), 168 deletions(-) create mode 100644 .idea/runConfigurations.xml create mode 100644 src/main/java/daos/CarsRepository.java 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/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..797acea --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/MainApplication.java b/src/main/java/MainApplication.java index c4def4b..d2b09c9 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,26 @@ 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 Vehicles;"); + executeStatement(mysqlDbConnection, "CREATE DATABASE IF NOT EXISTS Vehicles;"); + executeStatement(mysqlDbConnection, "USE Vehicles;"); executeStatement(mysqlDbConnection, new StringBuilder() - .append("CREATE TABLE IF NOT EXISTS databaseName.pokemonTable(") + .append("CREATE TABLE IF NOT EXISTS Vehicles.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("vin int not null,") + .append("color text 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, "Kia", 2016, 1891L, "red" )); + carsRepository.create(new Cars(2L, "Ford", 2004, 5678L, "purple" )); + carsRepository.create(new Cars(3L, "Toyota", 1984, 4685L, "black" )); + carsRepository.create(new Cars(4L, "Tesla", 2020, 1627L, "black" )); + carsRepository.create(new Cars(5L, "Nissan", 2010, 1467L, "silver" )); + + System.out.println(carsRepository.readAll()); } @@ -85,7 +90,7 @@ static Statement getScrollableStatement(Connection connection) { static Connection getConnection(String dbVendor) { String username = "root"; - String password = ""; + String password = "zipcode0"; 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..4703f13 --- /dev/null +++ b/src/main/java/daos/CarsRepository.java @@ -0,0 +1,100 @@ +package daos; + +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 Vehicles.cars(") + .append("id, make, year, vin, color) ") + .append("VALUES (%s, '%s', %s, %s, '%s');") + .toString(), + cars.getId(), + cars.getMake(), + cars.getYear(), + cars.getVin(), + cars.getColor())); + } + + public List readAll() { + ResultSet resultSet = executeQuery("SELECT * FROM Vehicles.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 vin = resultSet.getString(4); + String color = resultSet.getString(5); + list.add(new Cars( + Long.parseLong(id), + make, + Integer.parseInt(year), + Long.parseLong(vin), + color)); + } + } catch (SQLException throwables) { + throw new RuntimeException(throwables); + } + return list; + } + + public Cars read(Long id) { + return readAll() + .stream() + .filter(cars -> cars.getId().equals(id)) + .findAny() + .get(); + } + + public void update(Long id, Cars newCarsData) { + executeStatement(String.format(new StringBuilder() + .append("Update cars Set make = '%s', ") + .append("make ='%s', ") + .append("year ='%s', ") + .append("vin ='%s', ") + .append("color ='%s', ") + .toString(), + + newCarsData.getMake(), + newCarsData.getYear(), + newCarsData.getVin(), + newCarsData.getColor(), + 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/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..f2b916b --- /dev/null +++ b/src/main/java/models/Cars.java @@ -0,0 +1,82 @@ +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 Long vin; + private String color; + + public Cars() { + + } + + public Cars(Long id, String make, Integer year, Long vin, String color) { + this.id = id; + this.make = make; + this.year = year; + this.vin = vin; + this.color = color; + } + + 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 Integer getYear() { + return year; + } + + public void setYear(Integer year) { + this.year = year; + } + + public Long getVin() { + return vin; + } + + public void setVin(Long vin) { + this.vin = vin; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + @Override + public String toString() { + return "Cars{" + + "id=" + id + + ", make='" + make + '\'' + + ", year=" + year + + ", vin=" + vin + + ", color='" + color + '\'' + + '}'; + } + + +} 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..4b253a0a80e9f2c90a47013263deb2f481758912 100644 GIT binary patch delta 2659 zcmZuz3w)DT760G7?rrk5kQ7?FzziFMHcjc+s%(_UN@+(&TWVWirT7Txw~~=IB}o~b zy7-unAqw(2=6nsGIG=QA+EN8{KIe0DIz^qE&expJxv7(Z|NA8kAm-P6_niNC?mg%H z&$%bP=c=^^n9pUbyidg?qLBUWNB5ykFu2Uie@s zd{D3VDI8Y#kiv%*KBDkZjeShw<6a!WClv1Y;*s>Bcx-nV~NMS_z8Y0aa!v?llZyBFC-rKVhc`5{8Hix%P$_BUlxm| z(%t4rG9Aw(Q)2>i+Xte_bbT{n>v?fnoH+Kdqg#k4twk&G?& z@4z+z_t02+SHi$s@K%BH;`Z~W8tBJU0t?r5Z|n-KYwB%U+tkw%YHJO(+}zgF+Y{Ps z?uf?{X1dY99monSvDUjUA1I;%rJHDffnIrQba%8q5gi_^@5!X%!-H!_$Wtlt2Ln&zj{?pO@uG`vPzu>O|uGVB~K)^FHni@%%6nc|m$xM_aZ%;&HJGu6n=>&C8XFQ#b4pT_S6T8in z#NQ139nTv02cDC7-oQWcF9UDD8zug2;8wg~je8=c{rHc8GkDR!S)8+;_Pk_4zW@pD zPTt1Mhqjxk(5eur5yB7-;j|XZ>#h|p;U*zA=PY!6x0xPIWO~eu#FK{b2+6Qh$z(=A z-5wu_G3%?XyW|~GDE5RXvC7nZDZGa83By{Z%3Y#VlpR~IM#NJ8`8u`@XUsue!HVj( zn)XZZMuDx?RLPZA(D12(ZKHL( zY59BwwR*0Ct2;aaF;2mOSMuqx!2n)G*~lB<)re9n!FI%maI-kT!<@v&EU;hC!Q~nX`Q@Xw!9uNFd6B^)4K4P| zQ?|hpt<_v)5Y|w{FQ1}8>m1ZwYEiGDWqx_uKH?g!HRO+Y056T?@Uk41pHF)$Dy;pb z%d$6OA#TDI=s*x%ScD|5!T~JCIF{fMRO4BM@ggENJ)t}W7=UTh^Biu$APEZK8SFru zgetb(&OBwDu1?#&lA&MM5viTR^$r~Em_}n?WCANs+FWN1lwt+#bSVOG@p(0;<}#w! zpbXdAe#6AwJUf9Q`Y2;zh8d@Wwv`xR1o~5nT}biBG-Z~wLn6Z+qu8B~Ms(R{0Ee9` z!&6u#a4+_TT~k@CcAz8dp3-Y)*ki9NTx4t-Yx)8=OrU8RzPw3SHRCFqSrs$4~w^|&)D#F2C9BPeaxywqx5#%*E_;_f0Zt1*jNUC&>I z6)5K~M-VGnsa0skYW}XQAs07r6gS~6V*6-!5G~x@j6+z5`_O80xSFh#V+^;EB?nK~ zg*}vYuE(5!v4tFkvaakNu2TvzBkMNj@>7!~vnbd!S~=Cp}#HnSPG6e9=}{OSoX z&@ zSO_s)Ws_TOK^?D)o^%b2p$=aABI!%F9B(6s;2{lcBYlxPyo7rxIk>kRZ>Qw6^P8vh ztA$HqU-7SyrvB%kkmVj)>+Y!vygY~Q(NpM|L@%3R!!)+^aRA@UHrH(W*i)Md>*m5b uGY;}q8K%uHS|yp-2$M?L@#{%Fi&c3i_H&o+O;)~B;y?*syo;&>2mcEO#~h^q delta 2313 zcmZWqX>=1+7`-n`XGo_lNh!31Lco@mq@|)|D^M0&wa`{9n-vrS9i`ATB}suI8bL%s z6l4ShL2yM}Su|~_0*a!dsJNksiW@F)j{iL#@V+Ds^f)J(_uluG?|%2Y-Y#&syM#Wkc z52;uu4G$}L#L6S(quH%eG`Zf$a)* zD0tF_9PCWSHP|IzPbqj>#WObK<5?BYNng*)!EO~VsMw?8MY;7Q1urM#6}+nAH5GeR z>{GE{#Q_^$#~TVFHngHmLAx9uRMOF*;7tW@*)R?}6&zA<*zk#?1ME%yg}Tq*Sfe-j zgY_YQphY0Fvd-%d7EO-L7?q~eV#k3zbBz#3jAa&GyltGd6pMF^4C}yQWhmFM807+1 zUrTUNg9bmE1bSY1!sW9yl;NmAuF+`C%&7B*ymP%lz1r*3M`^ed^94M{7HeNuml*;3 zv?=9XY{m&|wis%hw>tY>xpZ(mmZ{#k4SK$Yck!N)m6RWDqytw-Um9{X`uT5eXebcq z-4v+zc>^u8LoH3ZtG=-2^MM+!dB@F9*1C>4ua zg5KtUjPxT7ALE25f*Lml6nvuLQ+%f3BtBR0g@!Njm4*dasNic2Q*cTk!#HWmFvco9 zQp)g+hHr6N!*@7i%u)Jfm*IPXlp6mMM&X;Q2V7%ZGRz+|{D`y0c4dSIKjCKq#{%zS zZxPc`RHFx*8$wg`kb)x`e!;H-mVnFPuMcOl=aTynJJuZGfwyV$gJfqC|8+ti1le#Od$cmtM-0GCp?1Xhc`W8gcF9O$P&lBM=&ZQ0sm!m(uJL&Bz zcv+H5kc$<_iz0HxyrK%#QA91c36qJ*fhOFH8pfb9eN$s75$0-%vX{FJ{i_N*?HFLf z-l`7d)E2ZN_i!{k4JmYFjt1|5g`42v6;VKQAyP3o>etN)E6<*W>GY9GE@t2s_INgG zi9kNRa4Tl=$XV=@#VQ52amVeL9YZ4~N6!FunMb?ZF;HMD*19e2$TOkJZH>0o?xgmx zG?ZA#PzUmB9fMlo?m%*FD>R2Ef>dV&WG+2|!cOa8T4_q{YAvFr@PF2;Y00uA%;bNS z5W6o0cO#`z(&A}FIQQ_rC@~wcDM3sr(il}S@4%r*$1rARI5RVX!Wzl=OQ_vZSdGzG zL)$v8+sONE6H2ieW3dzCqa2o!m2|XV4p}nsghkBmOcI}i`IyU|h1Lz27e*c3Z;n$e z6}k&L?qDm4O@-xOn8ZI=KY{#qBf-3|Vg%E1EZxpTx`&uBgP~o{cr3CMbWcRqo2bB| zuu|74RC@O?m0%~}-W0tog088zUy*ueBK1zxCsMD#G&v597fKx3MnbdjFsI#oVYJ=+ z_ZYXcPdlzPV{f&jy)dpumB7OG1h$?;1!~yg<(;q`aWGQjonS1~VMCNc zm2CUiGewEBLtNqkW(AFcg&z|qKN4|(rwC9w8}0}fS2~80v6$qBQ7dl#9mC~oL`*r= zg`R>ojNDsdk>Il|ar8Ol%98*;m|_9T#LPlTB2#HBk94w>NjTXo4Hruzhhp$h289%W z462wI!iBI!t4s1VoGO{g*379ul;R`|L6AKYH>V@So;ey{ri{-6i-P9FuQN=37~^3s zDfC#^Y diff --git a/target/classes/daos/CarsRepository.class b/target/classes/daos/CarsRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..0586bdc30fa6f8e6c9fa15443a754ea94dbcf87a GIT binary patch literal 4497 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 diff --git a/target/classes/models/Cars.class b/target/classes/models/Cars.class new file mode 100644 index 0000000000000000000000000000000000000000..1a583a83a473064817027044731b9e65a6602106 GIT binary patch literal 2046 zcmZ`(*>2NN5Is(8#|bHvgtnBeW^J0L1Zbf^Hy~_<01u!@@aDEwF{BAfQzV3t_y|4( zBvK@h_y9f%apvBnb&T^eGxy$^GiMh2&)=WF0nFh^26@bbNu^?hGg{2Hq zn0K%&dPT%72e(DvaZqt^*TFqG-A~~`3J(n=f(--1)i>UIuUz*Uo8@Y=vAJNt-16S~ z26Ca7=j~RY-#++W%RoN#w%Ta>n|_Od$@f9SfVJMNH|b+9292P-%o{(#_|9&8|NK2nD z%0^^y0w=RLf{`pnF_y(qjAwC7j>j=(U~GSFG}4`&puXXA?v7x53^tasSj8g|k9k>g zWviAZVgC090SiA+l_*M>&Azjr#mG+Cq5dQU4Q#%HU_5=J%K9H)K~0 zW^vr?5P96{z~09`#s2_E(j=WUM|+So^PKKDhdV)Jm#@njvzw3TsyHF)s`7-LD{FzI zvZO>)SyH401Lts_QW%!0CDJN>N8&4u1k->Cd`-nU5uMIes)&l*j^!EDj(d+ag4+#E!;}5?P5Q zG8;dd(4y-dsgTIs0Yqe3g$RE+l+xYL+#`d!_6w<(Kj7rjyU57m?&3f$tL-G!@Z>Ir oatHN=DUXM=ZHYasZM)|<{E6PXI2^6)VW_g&-p75F`4hPI4_1Ok1poj5 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