From b94abc8abd7eed3e52f06f582c89057b442cfe81 Mon Sep 17 00:00:00 2001 From: Martin Goik <goik@hdm-stuttgart.de> Date: Thu, 21 Feb 2019 19:02:22 +0100 Subject: [PATCH] First step towards Postgresql --- Doc/Common/glossary.xml | 11 +++++++- Doc/Sda1/jdbc.xml | 21 ++++++++++----- Doc/Sda1/prerequisites.xml | 27 +++++++++++++++++++ P/Sda1/Jdbc/Insert/MinimumTest/pom.xml | 6 ++--- .../sda1/insert/SimpleInsert.java | 9 ++----- .../src/main/resources/jdbc.properties | 4 +-- .../hdm_stuttgart/sda1/insert/InsertTest.java | 4 +-- 7 files changed, 61 insertions(+), 21 deletions(-) diff --git a/Doc/Common/glossary.xml b/Doc/Common/glossary.xml index 257b79f71..451dbf9d7 100644 --- a/Doc/Common/glossary.xml +++ b/Doc/Common/glossary.xml @@ -773,7 +773,16 @@ <glossdef> <para><link xlink:href="https://www.mysql.com/about/legal/trademark.html">The - <acronym>Mysql</acronym> database server product</link></para> + <acronym>Mysql</acronym> database server</link></para> + </glossdef> + </glossentry> + + <glossentry xml:id="glo_Soft_Postgresql"> + <glossterm><trademark>Postgresql</trademark></glossterm> + + <glossdef> + <para><link xlink:href="https://www.postgresql.org">The + <acronym>Postgresql</acronym> database server</link></para> </glossdef> </glossentry> diff --git a/Doc/Sda1/jdbc.xml b/Doc/Sda1/jdbc.xml index ddd18b33c..5e429cbc4 100644 --- a/Doc/Sda1/jdbc.xml +++ b/Doc/Sda1/jdbc.xml @@ -1063,11 +1063,11 @@ ResourceBundle jdbcProperties = ResourceBundle.getBundle("<emphasis role="red">j <itemizedlist> <listitem> - <para>Opening database connection</para> + <para>Open database connection</para> </listitem> <listitem> - <para>Erase and re-create a desired schema.</para> + <para>Create a required schema.</para> </listitem> <listitem> @@ -1077,13 +1077,22 @@ ResourceBundle jdbcProperties = ResourceBundle.getBundle("<emphasis role="red">j </listitem> <listitem> - <para><emphasis role="red">Test:</emphasis> Executing <xref + <para><emphasis role="red">Test:</emphasis> Execute <xref linkend="glo_JDBC"/> CRUD / SELECT operations.</para> </listitem> <listitem> - <para><emphasis role="red">Tear down:</emphasis> Close database - connection.</para> + <para><emphasis role="red">Tear down:</emphasis></para> + + <itemizedlist> + <listitem> + <para>Drop schema</para> + </listitem> + + <listitem> + <para> Close database connection.</para> + </listitem> + </itemizedlist> </listitem> </orderedlist> </figure> @@ -1143,7 +1152,7 @@ ResourceBundle jdbcProperties = ResourceBundle.getBundle("<emphasis role="red">j <programlisting language="xml"><dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> - <version>5.1.4.RELEASE</version> + <version>5.1.5.RELEASE</version> <emphasis role="red"><scope>test</scope></emphasis> </dependency></programlisting> </figure> diff --git a/Doc/Sda1/prerequisites.xml b/Doc/Sda1/prerequisites.xml index 79c010aa4..90e62ad93 100644 --- a/Doc/Sda1/prerequisites.xml +++ b/Doc/Sda1/prerequisites.xml @@ -180,6 +180,33 @@ </informaltable> </figure> + <section xml:id="sda1_sect_setupPostgresql"> + <title><productname + xlink:href="https://www.postgresql.org">Postgresql</productname> + database components</title> + + <figure xml:id="sda1_fig_installPostgresql"> + <title>Installing <xref linkend="glo_Soft_Postgresql"/></title> + + <para>Installation references:</para> + + <itemizedlist> + <listitem> + <para><link + xlink:href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04">How + To Install and Use PostgreSQL on Ubuntu 18.04</link></para> + </listitem> + + <listitem> + <para><link + xlink:href="https://blog.2ndquadrant.com/how-to-safely-change-the-postgres-user-password-via-psql">How + to safely change the “postgres” user password via + “psql”</link></para> + </listitem> + </itemizedlist> + </figure> + </section> + <section xml:id="sda1_sect_setupMysql"> <title><productname xlink:href="https://www.mysql.com">Mysql</productname> Database diff --git a/P/Sda1/Jdbc/Insert/MinimumTest/pom.xml b/P/Sda1/Jdbc/Insert/MinimumTest/pom.xml index cd88c7b50..98a8d1f9e 100644 --- a/P/Sda1/Jdbc/Insert/MinimumTest/pom.xml +++ b/P/Sda1/Jdbc/Insert/MinimumTest/pom.xml @@ -25,9 +25,9 @@ </dependency> <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <version>8.0.8-dmr</version> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>9.1-901-1.jdbc4</version> <scope>runtime</scope> </dependency> diff --git a/P/Sda1/Jdbc/Insert/MinimumTest/src/main/java/de/hdm_stuttgart/sda1/insert/SimpleInsert.java b/P/Sda1/Jdbc/Insert/MinimumTest/src/main/java/de/hdm_stuttgart/sda1/insert/SimpleInsert.java index d99407c2a..ce93374b3 100644 --- a/P/Sda1/Jdbc/Insert/MinimumTest/src/main/java/de/hdm_stuttgart/sda1/insert/SimpleInsert.java +++ b/P/Sda1/Jdbc/Insert/MinimumTest/src/main/java/de/hdm_stuttgart/sda1/insert/SimpleInsert.java @@ -89,7 +89,7 @@ public class SimpleInsert { * @param email Person's email * @return Inserted reord count: 1 on successful INSERT, 0 in case of duplicate email violating UNIQUE constraint. * - * @throws SQLException To be thrown in case of non - {@link SQLIntegrityConstraintViolationException} + * @throws SQLException In case e.g. of constraint violation * errors. */ static public int insertPerson(final Statement statement, final String name, final String email) @@ -97,11 +97,6 @@ public class SimpleInsert { final String sql = "INSERT INTO Person VALUES('" + name + "', '" + email + "')"; log.info("Executing »" + sql + "«"); - try { - return statement.executeUpdate(sql); - } catch (final SQLIntegrityConstraintViolationException ex) { - log.info("Constraint violation, possibly inserting duplicate email '" + email + "'"); - return 0; - } + return statement.executeUpdate(sql); } } \ No newline at end of file diff --git a/P/Sda1/Jdbc/Insert/MinimumTest/src/main/resources/jdbc.properties b/P/Sda1/Jdbc/Insert/MinimumTest/src/main/resources/jdbc.properties index 47fb0a5ae..39599462c 100644 --- a/P/Sda1/Jdbc/Insert/MinimumTest/src/main/resources/jdbc.properties +++ b/P/Sda1/Jdbc/Insert/MinimumTest/src/main/resources/jdbc.properties @@ -1,3 +1,3 @@ -jdbcurl=jdbc:mysql://localhost:3306/hdm?allowMultiQueries=true&serverTimezone=UTC +jdbcurl=jdbc:postgresql://localhost/hdm +username=hdmuser password=XYZ -username=hdmuser \ No newline at end of file diff --git a/P/Sda1/Jdbc/Insert/MinimumTest/src/test/java/de/hdm_stuttgart/sda1/insert/InsertTest.java b/P/Sda1/Jdbc/Insert/MinimumTest/src/test/java/de/hdm_stuttgart/sda1/insert/InsertTest.java index 85bf9b894..2bfec3801 100644 --- a/P/Sda1/Jdbc/Insert/MinimumTest/src/test/java/de/hdm_stuttgart/sda1/insert/InsertTest.java +++ b/P/Sda1/Jdbc/Insert/MinimumTest/src/test/java/de/hdm_stuttgart/sda1/insert/InsertTest.java @@ -15,7 +15,7 @@ import java.util.ResourceBundle; * Testing insert operations. */ -@FixMethodOrder(MethodSorters.NAME_ASCENDING) // SQL inserts require fixed execution order. +@FixMethodOrder(MethodSorters.NAME_ASCENDING) // Subsequent SQL inserts require fixed execution order. @SuppressWarnings({"UnusedDeclaration"}) public class InsertTest { @@ -57,7 +57,7 @@ public class InsertTest { * Insert fails due to UNIQUE constraint on email value »jill@programmer.org« * */ - @Test + @Test (expected = SQLException.class) // Duplicate key public void test_030_insertJillAgain() throws SQLException { Assert.assertEquals(0, SimpleInsert.insertPerson(stmt, "Jill", "jill@programmer.org")); } -- GitLab