From c280815acb03cdf8f71f22fad2d1aa632c9a7f2b Mon Sep 17 00:00:00 2001 From: Martin Goik <goik@hdm-stuttgart.de> Date: Wed, 7 Jan 2015 17:43:02 +0100 Subject: [PATCH] Externalize strings, adding solution --- .../mi/sda1/catalog2sql/Messages.java | 22 +++++++++++++++ .../mi/sda1/catalog2sql/Xml2Rdbms.java | 27 +++++++++---------- .../mi/sda1/catalog2sql/messages.properties | 16 +++++++++++ Sda1/sda1.xml | 13 +++++++++ 4 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/Messages.java create mode 100644 Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/messages.properties diff --git a/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/Messages.java b/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/Messages.java new file mode 100644 index 000000000..e68812cee --- /dev/null +++ b/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/Messages.java @@ -0,0 +1,22 @@ +package de.hdm_stuttgart.mi.sda1.catalog2sql; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +public class Messages { + private static final String BUNDLE_NAME = "de.hdm_stuttgart.mi.sda1.catalog2sql.messages"; //$NON-NLS-1$ + + private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle + .getBundle(BUNDLE_NAME); + + private Messages() { + } + + public static String getString(String key) { + try { + return RESOURCE_BUNDLE.getString(key); + } catch (MissingResourceException e) { + return '!' + key + '!'; + } + } +} diff --git a/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/Xml2Rdbms.java b/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/Xml2Rdbms.java index 893868eff..183507fd5 100644 --- a/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/Xml2Rdbms.java +++ b/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/Xml2Rdbms.java @@ -1,7 +1,6 @@ package de.hdm_stuttgart.mi.sda1.catalog2sql; import java.io.IOException; -import java.io.PrintStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -35,18 +34,18 @@ public class Xml2Rdbms { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { - log.info("Creating SAX parser"); + log.info(Messages.getString("Xml2Rdbms.0")); //$NON-NLS-1$ final SAXParserFactory saxPf = SAXParserFactory.newInstance(); final SAXParser saxParser = saxPf.newSAXParser(); final XMLReader xmlReader = saxParser.getXMLReader(); // Register Driver - final String sqlDriverClassName = "com.mysql.jdbc.Driver"; + final String sqlDriverClassName = Messages.getString("Xml2Rdbms.jdbcDriverName"); //$NON-NLS-1$ try { Class.forName(sqlDriverClassName); } catch (ClassNotFoundException e) { - Helper.exitWithErrorMessage("Unable to register driver class '" + sqlDriverClassName + "'", 1); + Helper.exitWithErrorMessage(Messages.getString("Xml2Rdbms.errMsgUnableRegisterDriverClass") + sqlDriverClassName + Messages.getString("Xml2Rdbms.3"), 1); //$NON-NLS-1$ //$NON-NLS-2$ } @@ -54,28 +53,28 @@ public class Xml2Rdbms { // Connection conn = null; - final String jdbcConnectionUrl = "jdbc:mysql://localhost:3306/hdm"; - final String userName = "hdmuser"; + final String jdbcConnectionUrl = Messages.getString("Xml2Rdbms.jdbcUrl"); //$NON-NLS-1$ + final String userName = Messages.getString("Xml2Rdbms.jdbcUser"); //$NON-NLS-1$ try { - conn = DriverManager.getConnection(jdbcConnectionUrl, userName, "XYZ"); + conn = DriverManager.getConnection(jdbcConnectionUrl, userName, Messages.getString("Xml2Rdbms.jdbcPasswd")); //$NON-NLS-1$ } catch (SQLException e) { - Helper.exitWithErrorMessage("Unable to connect as user '" + userName + "' to '" + - jdbcConnectionUrl + "'", 1); + Helper.exitWithErrorMessage(Messages.getString("Xml2Rdbms.errMsgUnableToConnect") + userName + Messages.getString("Xml2Rdbms.8") + //$NON-NLS-1$ //$NON-NLS-2$ + jdbcConnectionUrl + Messages.getString("Xml2Rdbms.9"), 1); //$NON-NLS-1$ } DataInsert dataInsert = null; try { dataInsert = new DataInsert(conn); } catch (SQLException e) { - Helper.exitWithErrorMessage("Unable to initialize data inserter", 1); + Helper.exitWithErrorMessage(Messages.getString("Xml2Rdbms.errMsgUnableInitDataInsert"), 1); //$NON-NLS-1$ } - log.info("Registering content- and error handler instances"); + log.info(Messages.getString("Xml2Rdbms.11")); //$NON-NLS-1$ xmlReader.setContentHandler(new CatalogContentHandler(dataInsert)); xmlReader.setErrorHandler(new SaxErrorHandler(System.err)); - final String xmlDocumentInstanceFilename = "products.xml"; - log.info("Start parsing file '" + xmlDocumentInstanceFilename + "'"); + final String xmlDocumentInstanceFilename = Messages.getString("Xml2Rdbms.xmlSourceFileName"); //$NON-NLS-1$ + log.info(Messages.getString("Xml2Rdbms.13") + xmlDocumentInstanceFilename + Messages.getString("Xml2Rdbms.14")); //$NON-NLS-1$ //$NON-NLS-2$ xmlReader.parse(xmlDocumentInstanceFilename); // Closing @@ -83,7 +82,7 @@ public class Xml2Rdbms { dataInsert.close(); // Closing Statement conn.close(); // Closing Connection } catch (SQLException e) { - Helper.exitWithErrorMessage("Unable to close RDBMS access", 1); + Helper.exitWithErrorMessage(Messages.getString("Xml2Rdbms.errMsgUnableCloseRdbms"), 1); //$NON-NLS-1$ } } diff --git a/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/messages.properties b/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/messages.properties new file mode 100644 index 000000000..ef6d55455 --- /dev/null +++ b/Sda1/P/catalog2rdbms/src/main/java/de/hdm_stuttgart/mi/sda1/catalog2sql/messages.properties @@ -0,0 +1,16 @@ +Xml2Rdbms.0=Creating SAX parser +Xml2Rdbms.11=Registering content- and error handler instances +Xml2Rdbms.13=Start parsing file ' +Xml2Rdbms.14=' +Xml2Rdbms.3=' +Xml2Rdbms.8=' to ' +Xml2Rdbms.9=' +Xml2Rdbms.errMsgUnableCloseRdbms=Unable to close RDBMS access +Xml2Rdbms.errMsgUnableInitDataInsert=Unable to initialize data inserter +Xml2Rdbms.errMsgUnableRegisterDriverClass=Unable to register driver class ' +Xml2Rdbms.errMsgUnableToConnect=Unable to connect as user ' +Xml2Rdbms.jdbcDriverName=com.mysql.jdbc.Driver +Xml2Rdbms.jdbcPasswd=XYZ +Xml2Rdbms.jdbcUrl=jdbc:mysql://localhost:3306/hdm +Xml2Rdbms.jdbcUser=hdmuser +Xml2Rdbms.xmlSourceFileName=products.xml diff --git a/Sda1/sda1.xml b/Sda1/sda1.xml index 602c72365..a4f6545c0 100644 --- a/Sda1/sda1.xml +++ b/Sda1/sda1.xml @@ -9659,7 +9659,20 @@ public class SimpleInsert { SQL statements. Modify your solution by directly inserting corresponding data by means of <xref linkend="glo_JDBC"/> into a relational database.</para> + + <para>Error handling may be implemented by simply issuing a + corresponding message before exiting the application.</para> </question> + + <answer> + <annotation role="make"> + <para role="eclipse">P/catalog2rdbms</para> + </annotation> + + <para>This solution requires a <command>mvn</command> + <option>install</option> on dependent project + <quote>saxerrorhandler</quote>.</para> + </answer> </qandaentry> </qandadiv> </qandaset> -- GitLab