From 5480cf28bc1ac6c26725cf7796d61c859ea20157 Mon Sep 17 00:00:00 2001 From: "Dr. Martin Goik" <goik@hdm-stuttgart.de> Date: Sun, 24 Feb 2019 11:42:12 +0100 Subject: [PATCH] Transition to Postgresql --- Doc/Sda1/prerequisites.xml | 254 ++++-------------- Klausuren/Sda1/2018Winter/Exam/.gitignore | 49 +--- .../Sda1/2018Winter/Exam/Schema/schema.sql | 2 +- Klausuren/Sda1/2018Winter/Exam/pom.xml | 6 +- .../de/hdm_stuttgart/mi/sda1/Book2Rdbms.java | 2 +- .../hdm_stuttgart/mi/sda1}/Driver.java | 5 +- Klausuren/Sda1/2018Winter/Solve/Doc/exam.xml | 8 +- .../Sda1/2018Winter/Solve/Schema/schema.sql | 38 ++- Klausuren/Sda1/2018Winter/Solve/pom.xml | 6 +- .../de/hdm_stuttgart/mi/sda1/Book2Rdbms.java | 3 +- .../hdm_stuttgart/mi/sda1}/Driver.java | 2 +- 11 files changed, 84 insertions(+), 291 deletions(-) rename Klausuren/Sda1/2018Winter/Exam/src/main/java/{ => de/hdm_stuttgart/mi/sda1}/Driver.java (77%) rename Klausuren/Sda1/2018Winter/Solve/src/main/java/{ => de/hdm_stuttgart/mi/sda1}/Driver.java (79%) diff --git a/Doc/Sda1/prerequisites.xml b/Doc/Sda1/prerequisites.xml index 90e62ad93..8908ad097 100644 --- a/Doc/Sda1/prerequisites.xml +++ b/Doc/Sda1/prerequisites.xml @@ -144,8 +144,8 @@ <itemizedlist> <listitem> - <para><link linkend="sda1_sect_setupMysql">Mysql database - server</link></para> + <para><link linkend="sda1_sect_setupPostgresql">Postgresql + database server</link></para> </listitem> <listitem> @@ -185,7 +185,7 @@ xlink:href="https://www.postgresql.org">Postgresql</productname> database components</title> - <figure xml:id="sda1_fig_installPostgresql"> + <figure xml:id="sda1_fig_postgresqlInstall"> <title>Installing <xref linkend="glo_Soft_Postgresql"/></title> <para>Installation references:</para> @@ -205,145 +205,44 @@ </listitem> </itemizedlist> </figure> - </section> - - <section xml:id="sda1_sect_setupMysql"> - <title><productname - xlink:href="https://www.mysql.com">Mysql</productname> Database - components</title> - - <figure xml:id="sda1_fig_installMysql"> - <title>Installing <xref linkend="glo_Soft_Mysql"/></title> - - <screen>root@goiki:~# aptitude -y install mysql-server -The following NEW packages will be installed: - libdbd-mysql-perl{a} libdbi-perl{a} libnet-daemon-perl{a} libplrpc-perl{a} - mysql-client-5.5{a} mysql-server-5.5 -0 packages upgraded, 6 newly installed, 0 to remove and 0 not upgraded. -...</screen> - </figure> - - <para>During the installation you will be asked for the <productname - xlink:href="https://www.mysql.com">Mysql</productname> servers - <quote>root</quote> (Administrator) password:</para> - - <figure xml:id="sda1_fig_installMysqlSetRootPw"> - <title>Setting database root password</title> - - <screen> ┌────────────────┤ Configuring mysql-server-5.5 ├─────────────────┠- │ While not mandatory, it is highly recommended that you │ - │ set a password for the MySQL administrative "root" user. │ - │ │ - │ If this field is left blank, the password will not be changed. │ - │ │ - │ New password for the MySQL "root" user: │ - │ │ - │ ********_______________________________________________________ │ - │ │ - │ <Ok> │ - └─────────────────────────────────────────────────────────────────┘ -</screen> - </figure> - <para>This has to be entered twice. Keep a <emphasis - role="bold">permanent</emphasis> record of this entry. Alternatively set - a bookmark to <uri - xlink:href="https://help.ubuntu.com/community/MysqlPasswordReset">https://help.ubuntu.com/community/MysqlPasswordReset</uri> - for later reference *** and don't blame me! ***.</para> + <figure xml:id="sda1_fig_postgresqlInstallUserPW"> + <title>Configure <xref linkend="glo_Soft_Postgresql"/></title> - <para>At this point we should be able to connect to our newly installed - Server. We create a database <quote>hdm</quote> to be used for our - exercises:</para> + <screen>useradd -r -s /usr/sbin/nologin hdmuser <co + linkends="sda1_fig_postgresqlInstallUserPW-1" + xml:id="sda1_fig_postgresqlInstallUserPW-1-co"/> - <figure xml:id="sda1_fig_installMysqlConnectToDb"> - <title>Connect to database</title> +su - postgres -c "PGPASSWORD=XYZ createdb --owner hdmuser hdm" <co + linkends="sda1_fig_postgresqlInstallUserPW-2" + xml:id="sda1_fig_postgresqlInstallUserPW-2-co"/> - <screen>goik@hopc ~> mysql -u root -p -Enter password: - -... messages omitted for brevity ... - -mysql> <emphasis role="bold">create database hdm CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;</emphasis> <co - linkends="sda1_prereq_screen_mysqlCreateDatabase-1" - xml:id="sda1_prereq_screen_mysqlCreateDatabase-1-co"/> -Query OK, 1 row affected (0.00 sec)</screen> - </figure> - - <calloutlist role="slideExclude"> - <callout arearefs="sda1_prereq_screen_mysqlCreateDatabase-1-co" - xml:id="sda1_prereq_screen_mysqlCreateDatabase-1"> - <para>This parameter setting mitigates key limitations, <link - xlink:href="https://stackoverflow.com/questions/20014106/how-to-create-this-table-1071-specified-key-was-too-long-max-key-length-is/42497309#answer-49233800">see - detailed explanation</link>.</para> - </callout> - </calloutlist> - - <para>Following <uri - xlink:href="https://dev.mysql.com/doc/refman/5.5/en/adding-users.html">https://dev.mysql.com/doc/refman/5.5/en/adding-users.html</uri> - we add <code>hdmuser</code> as a new user and grant full access to the - newly created database <code>hdm</code>:</para> - - <figure xml:id="sda1_fig_installMysqlGrants"> - <title>New user and privileges</title> - - <screen>mysql> <emphasis role="bold">CREATE USER '<emphasis - role="red">hdmuser</emphasis>'@'localhost' IDENTIFIED BY '<emphasis - role="red">XYZ</emphasis>';</emphasis> <co - linkends="sda1_fig_installMysqlGrants-1" - xml:id="sda1_fig_installMysqlGrants-1-co"/> -mysql> <emphasis role="bold">use</emphasis> <emphasis role="red">hdm</emphasis>; <co - linkends="sda1_fig_installMysqlGrants-2" - xml:id="sda1_fig_installMysqlGrants-2-co"/> -mysql> <emphasis role="bold">GRANT ALL PRIVILEGES ON *.* TO 'hdmuser'@'localhost' WITH GRANT OPTION;</emphasis> <co - linkends="sda1_fig_installMysqlGrants-3" - xml:id="sda1_fig_installMysqlGrants-3-co"/> -mysql> <emphasis role="bold">FLUSH PRIVILEGES;</emphasis> <co - linkends="sda1_fig_installMysqlGrants-4" - xml:id="sda1_fig_installMysqlGrants-4-co"/> -mysql> exit;</screen> +PGPASSWORD=XYZ psql -h localhost --username=hdmuser -d hdm <co + linkends="sda1_fig_postgresqlInstallUserPW-3" + xml:id="sda1_fig_postgresqlInstallUserPW-3-co"/></screen> <calloutlist role="slideExclude"> - <callout arearefs="sda1_fig_installMysqlGrants-1-co" - xml:id="sda1_fig_installMysqlGrants-1"> - <para>Create a new user <emphasis role="red">hdmuser</emphasis> - setting his password to <emphasis role="red">XYZ</emphasis>. The - localhost address will prevent external network access: The server - will only listen for connections originating from your local - machine.</para> + <callout arearefs="sda1_fig_postgresqlInstallUserPW-1-co" + xml:id="sda1_fig_postgresqlInstallUserPW-1"> + <para>Create a system user <code>hdmuser</code> at OS level. For + security reasons no system level access rights are being granted + to this account.</para> </callout> - <callout arearefs="sda1_fig_installMysqlGrants-2-co" - xml:id="sda1_fig_installMysqlGrants-2"> - <para>Switch to database <emphasis - role="red">hdm</emphasis>.</para> + <callout arearefs="sda1_fig_postgresqlInstallUserPW-2-co" + xml:id="sda1_fig_postgresqlInstallUserPW-2"> + <para>Create a database <code>hdm</code> with ownership + <code>hdmuser</code> using password <code>XYZ</code> on behalf of + user <code>postgres</code>.</para> </callout> - <callout arearefs="sda1_fig_installMysqlGrants-3-co" - xml:id="sda1_fig_installMysqlGrants-3"> - <para>Grant all privileges within <code>hdm</code> database to - <code>hdmuser</code>.</para> - </callout> - - <callout arearefs="sda1_fig_installMysqlGrants-4-co" - xml:id="sda1_fig_installMysqlGrants-4"> - <para>Make grants permanent.</para> + <callout arearefs="sda1_fig_postgresqlInstallUserPW-3-co" + xml:id="sda1_fig_postgresqlInstallUserPW-3"> + <para>Connect to database <code>hdm</code> as user + <code>hdmuser</code> using password <code>XYZ</code>.</para> </callout> </calloutlist> </figure> - - <para>You may want to test your configuration:</para> - - <figure xml:id="sda1_fig_installMysqlConectHdmuser"> - <title>Testing <code>hdmuser</code> access</title> - - <screen>goik@hopc ~> mysql --user=hdmuser --password=XYZ - -... messages omitted for brevity ... - -mysql> use hdm;show tables; -Database changed -Empty set (0,00 sec)</screen> - </figure> </section> <section xml:id="sda1SqlClient"> @@ -352,7 +251,8 @@ Empty set (0,00 sec)</screen> <para>Since we are dealing with <xref linkend="glo_Java"/> a <trademark xlink:href="https://en.wikipedia.org/wiki/Java_Database_Connectivity">JDBC</trademark> a corresponding driver is needed to connecting applications to our - <productname xlink:href="https://www.mysql.com">Mysql</productname> + <productname + xlink:href="https://www.postgresql.org">Postgresql</productname> server:</para> <figure xml:id="sda1_fig_mysqlDriverByAptitude"> @@ -360,26 +260,27 @@ Empty set (0,00 sec)</screen> <command xlink:href="https://linux.die.net/man/8/aptitude">aptitude</command>.</title> - <screen>#> <link xlink:href="https://linux.die.net/man/8/aptitude">aptitude</link> install libmysql-java</screen> + <screen>#> apt-get install libpostgresql-jdbc-java</screen> - <screen>#> cd /usr/share/java -#> ls -al <emphasis role="red">mysql</emphasis>* --rw-r--r-- 1 ... 2011 <emphasis role="red">mysql-connector-java-5.1.16.jar</emphasis> -lrwxrwxrwx 1 ... 2011 <emphasis role="red">mysql-connector-java.jar</emphasis> -> mysql-connector-java-5.1.16.jar -lrwxrwxrwx 1 ... 2011 <emphasis role="red">mysql.jar</emphasis> -> mysql-connector-java.jar</screen> + <para>This provides:</para> + + <screen># dpkg -L libpostgresql-jdbc-java +/usr/share/java/postgresql.jar +/usr/share/java/postgresql-jdbc4.jar +...</screen> </figure> <para>A second approach works by adding the following dependency to your Maven project:</para> <figure xml:id="sda1_fig_mysqlDriverByMaven"> - <title>Installing <xref linkend="glo_Soft_Mysql"/> driver using <xref - linkend="glo_Maven"/>.</title> + <title>Installing <xref linkend="glo_Soft_Postgresql"/> driver using + <xref linkend="glo_Maven"/>.</title> <programlisting language="xml"><dependency> - <groupId>mysql</groupId> - <artifactId><emphasis role="red">mysql-connector-java</emphasis></artifactId> - <version><emphasis role="red">8.0.12</emphasis></version> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>9.1-901-1.jdbc4</version> </dependency></programlisting> <screen>#> mvn compile @@ -395,76 +296,11 @@ lrwxrwxrwx 1 ... 2011 <emphasis role="red">mysql.jar</emphasis> -> mysql-conn <title><xref linkend="glo_Soft_IntellijIDEA"/> <xref linkend="glo_Soft_Mysql"/> driver configuration</title> - <para>Configuration and usage of <xref linkend="glo_Soft_Mysql"/> is - being described in detail at <uri - xlink:href="https://www.jetbrains.com/help/idea/connecting-to-a-database.html#mysql">https://www.jetbrains.com/help/idea/connecting-to-a-database.html#mysql</uri>.</para> + <para>Configuration and usage of <xref + linkend="glo_Soft_Postgresql"/> is being described in detail at <uri + xlink:href="https://www.jetbrains.com/help/idea/connecting-to-a-database.html#connect-to-postgresql-database">https://www.jetbrains.com/help/idea/connecting-to-a-database.html#mysql</uri>.</para> </figure> </section> - - <section xml:id="sda1ConfigOracleSqldevelop"> - <title>Configuring <productname - xlink:href="http://www.oracle.com/technetwork/developer-tools/sql-developer">Oracle - SQL Developer</productname>.</title> - - <figure xml:id="sda1_fig_mysqlSqldeveloperDriverConfig"> - <title><productname>Sqldeveloper</productname> <xref - linkend="glo_Soft_Mysql"/> driver configuration</title> - - <mediaobject> - <imageobjectco> - <areaspec otherunits="imagemap" units="other"> - <area coords="40,349,180,379" - linkends="sda1_fig_mysqlSqldeveloperDriverConfig-1" - xml:id="__area-6xwfe4"/> - - <area coords="190,77,437,106" - linkends="sda1_fig_mysqlSqldeveloperDriverConfig-2" - xml:id="__area-yfm3td"/> - </areaspec> - - <imageobject> - <imagedata fileref="Ref/Fig/sqldevelopAddMysqlJdbc.png.marked.svg"/> - </imageobject> - - <calloutlist role="slideExclude"> - <callout arearefs="__area-6xwfe4" - xml:id="sda1_fig_mysqlSqldeveloperDriverConfig-1"> - <para>Select <option>Database</option> -> <option>Third - Party JDBC Drivers</option>.</para> - </callout> - - <callout arearefs="__area-yfm3td" - xml:id="sda1_fig_mysqlSqldeveloperDriverConfig-2"> - <para>Using <orgname>MySQL or other database server products - requires configuration of a related</orgname> <xref - linkend="glo_JDBC"/> connector via <guimenu>Tools</guimenu> - --> <guisubmenu>Preferences</guisubmenu> choosing from - <guisubmenu>Database</guisubmenu> --> <guisubmenu>Third - Party JDBC Drivers</guisubmenu>. The MI/Ubuntu systems - already provide a driver instance at - <filename>/usr/share/java/mysql-connector-java.jar</filename>. - You may however use external downloads as well.</para> - </callout> - </calloutlist> - </imageobjectco> - </mediaobject> - </figure> - - <figure xml:id="sda1_fig_mysqlSqldeveloperConnectionConfig"> - <title><productname>Sqldeveloper</productname> <xref - linkend="glo_Soft_Mysql"/> connection configuration</title> - - <mediaobject> - <imageobject> - <imagedata fileref="Ref/Fig/sqldevelopChooseMysqlpng.png"/> - </imageobject> - </mediaobject> - </figure> - - <para>In case of trouble you may want to consult <quote - xlink:href="http://rpbouman.blogspot.de/2007/01/oracle-sql-developer-11-supports-mysql.html">Oracle - SQL Developer 1.1 Supports MySQL</quote> for further details.</para> - </section> </section> </section> diff --git a/Klausuren/Sda1/2018Winter/Exam/.gitignore b/Klausuren/Sda1/2018Winter/Exam/.gitignore index 9b36bc511..b9badad8b 100644 --- a/Klausuren/Sda1/2018Winter/Exam/.gitignore +++ b/Klausuren/Sda1/2018Winter/Exam/.gitignore @@ -1,3 +1,5 @@ +.idea +*.iml /target/ /.settings/ .classpath @@ -5,50 +7,3 @@ dependency-reduced-pom.xml *.log -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff: -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/dictionaries - -# Sensitive or high-churn files: -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml - -# Gradle: -.idea/**/gradle.xml -.idea/**/libraries - -# CMake -cmake-build-debug/ - -# Mongo Explorer plugin: -.idea/**/mongoSettings.xml - -*.iws - - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties diff --git a/Klausuren/Sda1/2018Winter/Exam/Schema/schema.sql b/Klausuren/Sda1/2018Winter/Exam/Schema/schema.sql index 6d356e353..fc0b21311 100644 --- a/Klausuren/Sda1/2018Winter/Exam/Schema/schema.sql +++ b/Klausuren/Sda1/2018Winter/Exam/Schema/schema.sql @@ -15,7 +15,7 @@ INSERT INTO Para VALUES ( INSERT INTO Section VALUES ('valid', 'Valid documents', 'categories', NULL, 4); -INSERT INTO Para VALUES ('valid', 'Valid documents require a schema.', NULL, 5); +INSERT INTO Para VALUES ('valid', 'Valid documents require a schema.', 'changed', 5); INSERT INTO Para VALUES ('valid', 'Common standards are DTD, XML Schema and Relax-NG.',NULL, 6); INSERT INTO Section VALUES ('api', 'Available APIs', NULL, 'deleted', 7); diff --git a/Klausuren/Sda1/2018Winter/Exam/pom.xml b/Klausuren/Sda1/2018Winter/Exam/pom.xml index b5641d291..9799537cc 100644 --- a/Klausuren/Sda1/2018Winter/Exam/pom.xml +++ b/Klausuren/Sda1/2018Winter/Exam/pom.xml @@ -56,9 +56,9 @@ </dependency> <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <version>6.0.6</version> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>9.1-901-1.jdbc4</version> </dependency> <dependency> diff --git a/Klausuren/Sda1/2018Winter/Exam/src/main/java/de/hdm_stuttgart/mi/sda1/Book2Rdbms.java b/Klausuren/Sda1/2018Winter/Exam/src/main/java/de/hdm_stuttgart/mi/sda1/Book2Rdbms.java index 62daf2166..fda3f75ab 100644 --- a/Klausuren/Sda1/2018Winter/Exam/src/main/java/de/hdm_stuttgart/mi/sda1/Book2Rdbms.java +++ b/Klausuren/Sda1/2018Winter/Exam/src/main/java/de/hdm_stuttgart/mi/sda1/Book2Rdbms.java @@ -21,7 +21,7 @@ public class Book2Rdbms { public Book2Rdbms() { try { conn = DriverManager.getConnection( - "jdbc:mysql://localhost/hdm?serverTimezone=UTC", "hdmuser", "XYZ"); + "jdbc:postgresql://localhost/hdm", "hdmuser", "XYZ"); } catch (SQLException e) { System.err.println("Unable to establish connection: " + e); System.exit(1); diff --git a/Klausuren/Sda1/2018Winter/Exam/src/main/java/Driver.java b/Klausuren/Sda1/2018Winter/Exam/src/main/java/de/hdm_stuttgart/mi/sda1/Driver.java similarity index 77% rename from Klausuren/Sda1/2018Winter/Exam/src/main/java/Driver.java rename to Klausuren/Sda1/2018Winter/Exam/src/main/java/de/hdm_stuttgart/mi/sda1/Driver.java index 5aed9b810..c339cecdf 100644 --- a/Klausuren/Sda1/2018Winter/Exam/src/main/java/Driver.java +++ b/Klausuren/Sda1/2018Winter/Exam/src/main/java/de/hdm_stuttgart/mi/sda1/Driver.java @@ -1,4 +1,4 @@ -import de.hdm_stuttgart.mi.sda1.Book2Rdbms; +package de.hdm_stuttgart.mi.sda1; public class Driver { @@ -6,6 +6,5 @@ public class Driver { final Book2Rdbms book2rdbms = new Book2Rdbms(); book2rdbms.execute(); - } -} +} \ No newline at end of file diff --git a/Klausuren/Sda1/2018Winter/Solve/Doc/exam.xml b/Klausuren/Sda1/2018Winter/Solve/Doc/exam.xml index 5a5198ec4..9ec4efb3d 100644 --- a/Klausuren/Sda1/2018Winter/Solve/Doc/exam.xml +++ b/Klausuren/Sda1/2018Winter/Solve/Doc/exam.xml @@ -292,7 +292,7 @@ the skeleton project import.</para> <para>A database connection may already be configured on IDE level. If - not configure a <productname>Mysql</productname> type database + not configure a <productname>Postgresql</productname> type database connection yourself in <productname>IDEA</productname> (»Views« --> »Tool Windows« --> »Database«) using:</para> @@ -539,6 +539,12 @@ <para>Write a Java application reading <tag class="starttag">book</tag> document instances and writing their content to a relational database.</para> + + <para>Class + <package>de.hdm_stuttgart.mi.sda1</package>.<classname>Book2Rdbms</classname> + already provides code establishing a database connection and reading + your <filename>sampledata.xml</filename> file upon execution by + <package>de.hdm_stuttgart.mi.sda1</package>.<classname>Driver</classname>.</para> </section> <section xml:id="task3_tasks"> diff --git a/Klausuren/Sda1/2018Winter/Solve/Schema/schema.sql b/Klausuren/Sda1/2018Winter/Solve/Schema/schema.sql index dd4fafeed..e211e1b22 100644 --- a/Klausuren/Sda1/2018Winter/Solve/Schema/schema.sql +++ b/Klausuren/Sda1/2018Winter/Solve/Schema/schema.sql @@ -2,46 +2,42 @@ DROP TABLE IF EXISTS Para; DROP TABLE IF EXISTS Section; CREATE TABLE Section ( - id CHAR(100) - ,PRIMARY KEY(id) - ,title TEXT NOT NULL - ,parent CHAR(100) - ,FOREIGN KEY (parent) REFERENCES Section(id) - ,revisionFlag CHAR(7) - ,CHECK(revisionFlag in ('new', 'changed', 'deleted')) - ,orderValue INT AUTO_INCREMENT UNIQUE + id VARCHAR(255) PRIMARY KEY + ,title TEXT NOT NULL + ,parent VARCHAR(255) NULL REFERENCES Section(id) + ,revisionFlag CHAR(7) NULL + ,orderValue INT NOT NULL GENERATED ALWAYS AS IDENTITY UNIQUE + + ,CHECK (revisionFlag in ('new', 'changed', 'deleted')) ); CREATE TABLE Para ( - section CHAR(100) NOT NULL - ,FOREIGN KEY (section) REFERENCES Section(id) - ,para LONGTEXT - ,revisionFlag CHAR(7) - ,CHECK(revisionFlag in ('new', 'changed', 'deleted')) - ,orderValue INT AUTO_INCREMENT UNIQUE + section VARCHAR(100) NOT NULL REFERENCES Section + ,para TEXT NOT NULL + ,revisionFlag CHAR(7) NULL + ,orderValue INT NOT NULL GENERATED ALWAYS AS IDENTITY UNIQUE + ,CHECK ( revisionFlag in ('new', 'changed', 'deleted')) ); - INSERT INTO Section (id, title, parent, revisionFlag) VALUES ('categories', 'XML Document categories', NULL, 'new'); INSERT INTO Section (id, title, parent, revisionFlag) VALUES ('wellFormed', 'Well-formed documents', 'categories', NULL); INSERT INTO Section (id, title, parent, revisionFlag) VALUES ('valid', 'Valid documents', 'categories', NULL); INSERT INTO Section (id, title, parent, revisionFlag) VALUES ('api', 'Available APIs', NULL, 'deleted'); - INSERT INTO Para (section, para, revisionFlag) VALUES - ('categories', 'Documents belonging to this category do not adhere to any schema.','changed'); +('categories', 'Documents belonging to this category do not adhere to any schema.','changed'); INSERT INTO Para (section, para, revisionFlag) VALUES - ('valid', 'Valid documents require a schema.', NULL); +('valid', 'Valid documents require a schema.', 'changed'); INSERT INTO Para (section, para, revisionFlag) VALUES - ('valid', 'Common standards are DTD, XML Schema and Relax-NG.', NULL); +('valid', 'Common standards are DTD, XML Schema and Relax-NG.', NULL); INSERT INTO Para (section, para, revisionFlag) VALUES - ('api', 'We introduce SAX and DOM here.', NULL); +('api', 'We introduce SAX and DOM here.', NULL); INSERT INTO Para (section, para, revisionFlag) VALUES - ('api', 'Some APIs offer multiple language bindings.', NULL); +('api', 'Some APIs offer multiple language bindings.', NULL); SELECT * FROM Section; SELECT * FROM Para; \ No newline at end of file diff --git a/Klausuren/Sda1/2018Winter/Solve/pom.xml b/Klausuren/Sda1/2018Winter/Solve/pom.xml index 1aad76638..0e23d4cad 100644 --- a/Klausuren/Sda1/2018Winter/Solve/pom.xml +++ b/Klausuren/Sda1/2018Winter/Solve/pom.xml @@ -56,9 +56,9 @@ </dependency> <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <version>6.0.6</version> + <groupId>postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>9.1-901-1.jdbc4</version> </dependency> <dependency> diff --git a/Klausuren/Sda1/2018Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/Book2Rdbms.java b/Klausuren/Sda1/2018Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/Book2Rdbms.java index 7705bde1b..0ecf22167 100644 --- a/Klausuren/Sda1/2018Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/Book2Rdbms.java +++ b/Klausuren/Sda1/2018Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/Book2Rdbms.java @@ -21,7 +21,7 @@ public class Book2Rdbms implements AutoCloseable { public Book2Rdbms() { try { conn = DriverManager.getConnection( - "jdbc:mysql://localhost/hdm?serverTimezone=UTC", "hdmuser", "XYZ"); + "jdbc:postgresql://localhost/hdm", "hdmuser", "XYZ"); insertSection = conn.prepareStatement( "INSERT INTO Section (id, title, parent, revisionFlag) VALUES (?, ?, ?, ?);"); @@ -69,6 +69,7 @@ public class Book2Rdbms implements AutoCloseable { insertPara.setString(3, p.getAttributeValue("revisionflag")); insertPara.execute(); } catch (final SQLException e) { + e.printStackTrace(); System.err.println("Unable to insert <para>: " + e); System.exit(1); } diff --git a/Klausuren/Sda1/2018Winter/Solve/src/main/java/Driver.java b/Klausuren/Sda1/2018Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/Driver.java similarity index 79% rename from Klausuren/Sda1/2018Winter/Solve/src/main/java/Driver.java rename to Klausuren/Sda1/2018Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/Driver.java index ed7f34ded..5d57ee1b6 100644 --- a/Klausuren/Sda1/2018Winter/Solve/src/main/java/Driver.java +++ b/Klausuren/Sda1/2018Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/Driver.java @@ -1,4 +1,4 @@ -import de.hdm_stuttgart.mi.sda1.Book2Rdbms; +package de.hdm_stuttgart.mi.sda1; public class Driver { -- GitLab