From 1049e86f754563cef682f52a6fbebadd06e19332 Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Tue, 23 Oct 2018 18:38:11 +0200
Subject: [PATCH] Nodebb API property config file in user's home directory

---
 .../java/de/hdm_stuttgart/mi/bb/Id2Topic.java | 69 +++++++++++--------
 .../mi/bb/ModifyNodebbTopic.java              |  2 +-
 .../de/hdm_stuttgart/mi/bb/ReadUsers.java     | 13 ++--
 ....template => bbtopics.properties.template} |  0
 4 files changed, 48 insertions(+), 36 deletions(-)
 rename ws/Docbook/Id2topic/src/main/resources/{conf.properties.template => bbtopics.properties.template} (100%)

diff --git a/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/Id2Topic.java b/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/Id2Topic.java
index 590b76686..95617922f 100644
--- a/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/Id2Topic.java
+++ b/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/Id2Topic.java
@@ -16,10 +16,14 @@ import javax.ws.rs.core.MediaType;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Locale;
 import java.util.Map;
+import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
-import static java.util.ResourceBundle.getBundle;
 import java.util.logging.Logger;
 import java.util.logging.Level;
 
@@ -28,9 +32,27 @@ public class Id2Topic {
     static {
         final Logger mongoLogger = Logger.getLogger( "org.mongodb.driver" );
         mongoLogger.setLevel(Level.SEVERE); // e.g. or Log.WARNING, etc.
+
+        final String
+            configPathName= System.getProperty("user.home"),
+            configFileName = "bbtopics",
+            fqPathname = configPathName + '/' + configFileName + ".properties";
+
+        final File file = new File(configPathName);
+
+        ResourceBundle rb = null;
+        try {
+            final URL[] urls = new URL[]{file.toURI().toURL()};
+            final ClassLoader loader = new URLClassLoader(urls);
+            rb = ResourceBundle.getBundle(configFileName, Locale.getDefault(), loader);
+        } catch (final MalformedURLException | MissingResourceException e) {
+            System.err.println("Unable to open URI " + fqPathname);
+            System.exit(1);
+        }
+        config = rb;
     }
 
-    private static ResourceBundle config = getBundle("conf");
+    static private final ResourceBundle config;
 
     static private final
     ModifyNodebbTopic db = new ModifyNodebbTopic(
@@ -39,12 +61,11 @@ public class Id2Topic {
 
     static private final Client client = ClientBuilder.newClient(new ClientConfig().register(new JacksonFeature()));
 
-    static final String bearerToken = config.getString("nodebbBearerToken");
+    static private final String bearerToken = config.getString("nodebbBearerToken");
 
-    static final String
+    static private final String
             KEY_PAYLOAD = "payload",
-            KEY_TOPICDATA = "topicData",
-            KEY_POSTDATA = "postData";
+            KEY_TOPICDATA = "topicData";
 
     public static void main(String[] args) {
 
@@ -71,26 +92,25 @@ public class Id2Topic {
             } catch (JDOMException e) {
                 System.err.println("Unable to parse " + inputFile);
             } catch (IOException e) {
-                System.err.println("Unable to read " + inputFile + ":" +
-                        e.getLocalizedMessage());
+                System.err.println("Unable to read " + inputFile);
             }
         }
     }
 
-    static void handleDocbok2idMap(final Element map) {
+    static private void handleDocbok2idMap(final Element map) {
         String mapPrefix = map.getAttributeValue("prefix");
 
         for (final Element entry : map.getChildren("entry")) {
             final int tid = createTopic(
                     mapPrefix + ":" + entry.getAttributeValue("id"),
-                    Integer.valueOf(entry.getChildText("forumId")),
+                    Integer.valueOf(entry.getAttributeValue("forumId")),
                     entry.getChildText("title"),
                     entry.getChildText("content"));
             entry.setAttribute("tid", "" + tid);
         }
     }
 
-    static int createTopic(String hdmId, int categoryId, String title, String content) {
+    static private int createTopic(String hdmId, int categoryId, String title, String content) {
 
         int tid = db.hdmIdExists(hdmId);
         if (tid < 0) { // No related topic
@@ -100,16 +120,15 @@ public class Id2Topic {
 
             final Entity jsonTopic = Entity.json(topic);
             System.out.println("Feeding in Topic " + topic);
-            final Map<String, Object> response = topicsTarget.request(MediaType.APPLICATION_JSON).
-                    header(HttpHeaders.AUTHORIZATION, "Bearer " + bearerToken)
-                    .accept(MediaType.TEXT_PLAIN_TYPE)
-                    .post(jsonTopic, Map.class);
+            final Map<String, Object> response = (Map<String, Object>)
+                topicsTarget.request(MediaType.APPLICATION_JSON).
+                header(HttpHeaders.AUTHORIZATION, "Bearer " + bearerToken).
+                accept(MediaType.TEXT_PLAIN_TYPE).
+                post(jsonTopic, Map.class);
 
-            //System.out.println("Result:" + response.get("code"));
-            //printAttribs(response);
-
-            final Map<String, Object> payload = (Map<String, Object>) response.get(KEY_PAYLOAD);
-            final Map<String, Object> topicData = (Map<String, Object>) payload.get(KEY_TOPICDATA);
+            final Map<String, Object> topicData = (Map<String, Object>)
+                ((Map<String, Object>)(response.get(KEY_PAYLOAD))).
+                get(KEY_TOPICDATA);
 
             int newTid = (int) topicData.get("tid");
             db.addHdmId(newTid, hdmId);
@@ -128,14 +147,10 @@ public class Id2Topic {
 
             final Map<String, Object> hdmTopicMap = response.readEntity(Map.class);
             System.out.println("-----------------------Topic [tid=" + tid + "] data:");
-            printAttribs(hdmTopicMap);
+            for (String k : hdmTopicMap) {
+                System.out.println("key '" + k + "', val '" + m.get(k) + "'");
+            }
              */
         }
     }
-
-    static void printAttribs(Map<String, Object> m) {
-        for (String k : m.keySet()) {
-            System.out.println("key '" + k + "', val '" + m.get(k) + "'");
-        }
-    }
 }
diff --git a/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/ModifyNodebbTopic.java b/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/ModifyNodebbTopic.java
index a70f41c04..49e1ce5bf 100644
--- a/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/ModifyNodebbTopic.java
+++ b/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/ModifyNodebbTopic.java
@@ -28,7 +28,7 @@ class ModifyNodebbTopic {
      * @param hdmId The hdmId value to be searched for.
      * @return If a topic carrying the hdmId value exists, return its tid, else return a negative value.
      */
-    private int hdmIdExists(final String hdmId) {
+     int hdmIdExists(final String hdmId) {
 
         final Document res = objectCollection.find(eq("hdmId", hdmId)).first();
         if (null == res) {
diff --git a/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/ReadUsers.java b/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/ReadUsers.java
index 51bddd6e0..061a8a5a0 100644
--- a/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/ReadUsers.java
+++ b/ws/Docbook/Id2topic/src/main/java/de/hdm_stuttgart/mi/bb/ReadUsers.java
@@ -12,13 +12,11 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * Hello world!
+ * Reading user flags
  *
  */
-public class ReadUsers
-{
-    public static void main( String[] args )
-    {
+public class ReadUsers {
+    public static void main( String[] args ) {
 
         final ClientConfig cc = new ClientConfig().register(new JacksonFeature());
 
@@ -33,10 +31,9 @@ public class ReadUsers
         System.out.println(response.getStatus());
         System.out.println(ret.get("users").getClass().getName());
         final List l = (List)ret.get("users");
-        System.out.println(l.get(0).getClass().getName());
-        Map<String, Object> m = (Map)l.get(0);
+        final Map<String, Object> m = (Map)l.get(0);
         for (String k: m.keySet()) {
             System.out.println("key '" + k + "', val '" + m.get(k) + "'");
         }
     }
-}
+}
\ No newline at end of file
diff --git a/ws/Docbook/Id2topic/src/main/resources/conf.properties.template b/ws/Docbook/Id2topic/src/main/resources/bbtopics.properties.template
similarity index 100%
rename from ws/Docbook/Id2topic/src/main/resources/conf.properties.template
rename to ws/Docbook/Id2topic/src/main/resources/bbtopics.properties.template
-- 
GitLab