From cded7c7d278d9f15c8606feafc9e039172133a1c Mon Sep 17 00:00:00 2001 From: lukas-heiligenbrunner Date: Fri, 27 Mar 2020 10:06:24 +0100 Subject: [PATCH 1/5] new class representing a storage --- .../com/wasteinformationserver/Dateget.java | 105 ------------------ src/java/com/wasteinformationserver/Main.kt | 2 + .../basicutils/Storage.kt | 46 ++++++++ 3 files changed, 48 insertions(+), 105 deletions(-) delete mode 100644 src/java/com/wasteinformationserver/Dateget.java create mode 100644 src/java/com/wasteinformationserver/basicutils/Storage.kt diff --git a/src/java/com/wasteinformationserver/Dateget.java b/src/java/com/wasteinformationserver/Dateget.java deleted file mode 100644 index c10c8da..0000000 --- a/src/java/com/wasteinformationserver/Dateget.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * dead code... - */ -package com.wasteinformationserver; - -import com.wasteinformationserver.basicutils.Log; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; -import java.text.DateFormat; -import java.util.ArrayList; -import java.util.GregorianCalendar; -import java.util.Scanner; - -public class Dateget { - private int index = 0; - ArrayList list = new ArrayList<>(); - ArrayList listnew = new ArrayList<>(); - public String nextDate; - - - public void getdata() { - - GregorianCalendar now = new GregorianCalendar(); - DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); - String datum = df.format(now.getTime()); - - URL url = null; - try { - url = new URL("https://www.steyr.at/system/web/kalender.aspx?vdatum=" + datum + "&bdatum=19.10.2019&typ=&typid=0&typids=225781950&detailonr=0&menuonr=225781812"); - Scanner scanner = new Scanner(new InputStreamReader(url.openStream())); - - int n = 0; - while (scanner.hasNext()) { - String temp = scanner.next(); - addList(temp); - } - - } catch (MalformedURLException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - Filter(); - } - - private void addList(String temp) { - list.add(index, temp); - } - - public void printList() { - for (int n = 0; n < list.size(); n++) { - Log.Log.debug(list.get(n)); - } - } - - public void printListnew() { - for (int n = 0; n < listnew.size(); n++) { - Log.Log.debug(listnew.get(n)); - } - } - - private void Filter() { - String temp = "href=\"/system/web/kalender.aspx?detailonr=225781954-6&menuonr=225781812\">Hausabfall"; - int counter = 0; - - for (int n = 0; n < list.size(); n++) { - if (list.get(n).equals(temp)) { - counter++; - - if (counter == 4) { - - int zaehler = 0; - - for (int v = n; v < list.size(); v++) { - listnew.add(zaehler, list.get(v)); - zaehler++; - } - - /* String string = "004-034556"; - String[] parts = string.split("-"); - String part1 = parts[0]; // 004 - String part2 = parts[1]; // 034556*/ - - splitter(); - - } - } - } - } - - private void splitter() { - String temp = "

"; - - for (int n = 0; n < listnew.size(); n++) { - - if (listnew.get(n).equals(temp)) { - - } - } - } - -} diff --git a/src/java/com/wasteinformationserver/Main.kt b/src/java/com/wasteinformationserver/Main.kt index cd82eb1..67bd65a 100644 --- a/src/java/com/wasteinformationserver/Main.kt +++ b/src/java/com/wasteinformationserver/Main.kt @@ -3,6 +3,7 @@ package com.wasteinformationserver import com.wasteinformationserver.basicutils.Info import com.wasteinformationserver.basicutils.Log +import com.wasteinformationserver.basicutils.Storage import com.wasteinformationserver.db.JDBC import com.wasteinformationserver.mqtt.MqttService import com.wasteinformationserver.website.Webserver @@ -16,6 +17,7 @@ import java.io.IOException fun main() { Log.setLevel(Log.DEBUG) Info.init() + Storage.getInstance().init() Log.info("startup of WasteInformationServer") diff --git a/src/java/com/wasteinformationserver/basicutils/Storage.kt b/src/java/com/wasteinformationserver/basicutils/Storage.kt new file mode 100644 index 0000000..41e43d2 --- /dev/null +++ b/src/java/com/wasteinformationserver/basicutils/Storage.kt @@ -0,0 +1,46 @@ +package com.wasteinformationserver.basicutils + +import java.io.FileInputStream +import java.io.FileNotFoundException +import java.io.FileOutputStream +import java.io.IOException +import java.util.* + +/** + * Storeage of user information + * * database infos + * * mqtt infos + * + * @author Lukas Heiligenbrunner + */ +class Storage { + companion object { + val obj = Storage() + fun getInstance(): Storage { + return obj; + } + } + + var mqttServer: String = ""; + + + /** + * init config file + */ + fun init() { + val prop = Properties() + try { + // try to load existing config file + val inp = FileInputStream("settings.prop") + prop.load(inp) + + + } catch (ee: FileNotFoundException) { + // file not generated yet + prop.store(FileOutputStream("settings.prop"), "") + Log.info("new Settings config file generated") + } catch (e: IOException) { + e.printStackTrace() + } + } +} \ No newline at end of file From 3818b6d1c7420e819a5f61d883f2483cf499c14c Mon Sep 17 00:00:00 2001 From: lukas-heiligenbrunner Date: Fri, 27 Mar 2020 10:33:14 +0100 Subject: [PATCH 2/5] getter setter all parameters in storage class --- .../basicutils/Storage.kt | 113 +++++++++++++++++- 1 file changed, 108 insertions(+), 5 deletions(-) diff --git a/src/java/com/wasteinformationserver/basicutils/Storage.kt b/src/java/com/wasteinformationserver/basicutils/Storage.kt index 41e43d2..b1b9596 100644 --- a/src/java/com/wasteinformationserver/basicutils/Storage.kt +++ b/src/java/com/wasteinformationserver/basicutils/Storage.kt @@ -15,32 +15,135 @@ import java.util.* */ class Storage { companion object { - val obj = Storage() + private val obj = Storage() fun getInstance(): Storage { return obj; } } - var mqttServer: String = ""; + private var mqttServer: String = "" + get() = field + set(value) { + field = value + } + private var mqttPort: Int = -1 + get() = field + set(value) { + field = value + } + + private var dbName: String = "" + get() = field + set(value) { + field = value + } + + private var dbUser: String = "" + get() = field + set(value) { + field = value + } + + private var dbPassword: String = "" + get() = field + set(value) { + field = value + } + + private var dbPort: Int = -1 + get() = field + set(value) { + field = value + } + + private val prop = Properties() /** * init config file */ fun init() { - val prop = Properties() try { // try to load existing config file val inp = FileInputStream("settings.prop") prop.load(inp) - + mqttServer = prop.get("mqttserver") as String } catch (ee: FileNotFoundException) { // file not generated yet - prop.store(FileOutputStream("settings.prop"), "") + store() Log.info("new Settings config file generated") } catch (e: IOException) { e.printStackTrace() } } + + /** + * store data to storage file + */ + fun store() { + prop["mqttserver"] = mqttServer + prop["mqttport"] = mqttPort + prop["dbname"] = dbName + prop["dbuser"] = dbUser + prop["dbpass"] = dbPassword + prop["dbport"] = dbPort + + prop.store(FileOutputStream("settings.prop"), "") + } + + /** + * check if all needed properties are set up correctly + */ + fun isEveryThingDefined(): Boolean { + return (mqttServer != "" && + mqttPort != 0 && + dbName != "" && + dbUser != "" && + dbPassword != "" && + dbPort != -1) + } + + + /** + * is the mqttservername defined? + */ + fun isMqttServerDefined(): Boolean { + return (mqttServer != "") + } + + /** + * is the mqttserver port defined? + */ + fun isMqttPortDefined(): Boolean { + return (mqttPort != -1) + } + + /** + * is the dbname defined? + */ + fun isDBNameDefined(): Boolean { + return (dbName != "") + } + + /** + * is the dbport defined? + */ + fun isDBPortDefined(): Boolean { + return (dbPort != -1) + } + + /** + * is the dbpassword defined? + */ + fun isDBPasswdDefined(): Boolean { + return (dbPassword != "") + } + + /** + * is the dbusername defined? + */ + fun isDBUsernameDefined(): Boolean { + return (dbUser != "") + } } \ No newline at end of file From b9058dcdba75f21f32b06a92c90618115509414d Mon Sep 17 00:00:00 2001 From: lukas-heiligenbrunner Date: Fri, 27 Mar 2020 17:06:48 +0100 Subject: [PATCH 3/5] storage class added config check in main page --- .../basicutils/Storage.kt | 11 +++++++--- .../website/MainPage.kt | 21 +++++++++++++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/java/com/wasteinformationserver/basicutils/Storage.kt b/src/java/com/wasteinformationserver/basicutils/Storage.kt index b1b9596..fc0a89e 100644 --- a/src/java/com/wasteinformationserver/basicutils/Storage.kt +++ b/src/java/com/wasteinformationserver/basicutils/Storage.kt @@ -68,7 +68,12 @@ class Storage { val inp = FileInputStream("settings.prop") prop.load(inp) - mqttServer = prop.get("mqttserver") as String + mqttServer = prop["mqttserver"] as String + mqttPort = (prop["mqttport"] as String).toInt() + dbName = prop["dbname"] as String + dbUser = prop["dbuser"] as String + dbPassword = prop["dbpass"] as String + dbPort = (prop["dbport"] as String).toInt() } catch (ee: FileNotFoundException) { // file not generated yet store() @@ -83,11 +88,11 @@ class Storage { */ fun store() { prop["mqttserver"] = mqttServer - prop["mqttport"] = mqttPort + prop["mqttport"] = mqttPort.toString() prop["dbname"] = dbName prop["dbuser"] = dbUser prop["dbpass"] = dbPassword - prop["dbport"] = dbPort + prop["dbport"] = dbPort.toString() prop.store(FileOutputStream("settings.prop"), "") } diff --git a/src/java/com/wasteinformationserver/website/MainPage.kt b/src/java/com/wasteinformationserver/website/MainPage.kt index e894435..fae3301 100644 --- a/src/java/com/wasteinformationserver/website/MainPage.kt +++ b/src/java/com/wasteinformationserver/website/MainPage.kt @@ -4,6 +4,7 @@ import com.sun.net.httpserver.HttpExchange import com.sun.net.httpserver.HttpHandler import com.wasteinformationserver.basicutils.Log.Log.debug import com.wasteinformationserver.basicutils.Log.Log.warning +import com.wasteinformationserver.basicutils.Storage import com.wasteinformationserver.website.datarequests.login.LoginState import java.io.IOException @@ -19,15 +20,25 @@ class MainPage : HttpHandler { if (path == "/") { path += "index.html" } + debug("looking for: $path") if (path.contains(".html")) { + // check if db and mqtt is configured properly + // todo check real connection / not only if filled in + if (!Storage.getInstance().isEveryThingDefined()) { + sendPage("/config.html", t) + return + } + if (LoginState.getObject().isLoggedIn || path == "/register.html" || path == "/index.html") { //pass only register page sendPage(path, t) - } else { + } + else { warning("user not logged in --> redirecting to login page") sendPage("/index.html", t) } - } else { //only detect login state on html pages + } + else { //only detect login state on html pages sendPage(path, t) } } @@ -38,9 +49,11 @@ class MainPage : HttpHandler { if (fs == null && path.contains(".html")) { warning("wrong page sending 404") sendPage("/404Error.html", t) - } else if (fs == null) { + } + else if (fs == null) { warning("requested resource doesnt exist --> $path") - } else { // Object exists and is a file: accept with response code 200. + } + else { // Object exists and is a file: accept with response code 200. var mime = "text/html" val s = path.substring(path.length - 3) if (s == ".js") mime = "application/javascript" From cf9069e489f77fc8122ee3b23b7a95ea657dd2a5 Mon Sep 17 00:00:00 2001 From: lukas-heiligenbrunner Date: Wed, 15 Apr 2020 15:49:04 +0200 Subject: [PATCH 4/5] add configuration error popups --- .../basicutils/Storage.kt | 3 +- .../website/MainPage.kt | 13 ++--- .../datarequests/login/LoginRequest.kt | 25 +++++++-- src/resources/wwwroot/js/index.js | 52 +++++++++---------- 4 files changed, 50 insertions(+), 43 deletions(-) diff --git a/src/java/com/wasteinformationserver/basicutils/Storage.kt b/src/java/com/wasteinformationserver/basicutils/Storage.kt index fc0a89e..17f1c43 100644 --- a/src/java/com/wasteinformationserver/basicutils/Storage.kt +++ b/src/java/com/wasteinformationserver/basicutils/Storage.kt @@ -7,7 +7,7 @@ import java.io.IOException import java.util.* /** - * Storeage of user information + * Storage of user information * * database infos * * mqtt infos * @@ -99,6 +99,7 @@ class Storage { /** * check if all needed properties are set up correctly + * todo real check if connections can be established */ fun isEveryThingDefined(): Boolean { return (mqttServer != "" && diff --git a/src/java/com/wasteinformationserver/website/MainPage.kt b/src/java/com/wasteinformationserver/website/MainPage.kt index fae3301..edbdb3c 100644 --- a/src/java/com/wasteinformationserver/website/MainPage.kt +++ b/src/java/com/wasteinformationserver/website/MainPage.kt @@ -23,14 +23,8 @@ class MainPage : HttpHandler { debug("looking for: $path") if (path.contains(".html")) { - // check if db and mqtt is configured properly - // todo check real connection / not only if filled in - if (!Storage.getInstance().isEveryThingDefined()) { - sendPage("/config.html", t) - return - } - - if (LoginState.getObject().isLoggedIn || path == "/register.html" || path == "/index.html") { //pass only register page + // if not logged in allow only register and index page! + if (LoginState.getObject().isLoggedIn || path == "/register.html" || path == "/index.html") { sendPage(path, t) } else { @@ -38,7 +32,8 @@ class MainPage : HttpHandler { sendPage("/index.html", t) } } - else { //only detect login state on html pages + else { + //only detect login state on html pages sendPage(path, t) } } diff --git a/src/java/com/wasteinformationserver/website/datarequests/login/LoginRequest.kt b/src/java/com/wasteinformationserver/website/datarequests/login/LoginRequest.kt index 47c1b27..c4eae81 100644 --- a/src/java/com/wasteinformationserver/website/datarequests/login/LoginRequest.kt +++ b/src/java/com/wasteinformationserver/website/datarequests/login/LoginRequest.kt @@ -3,6 +3,7 @@ package com.wasteinformationserver.website.datarequests.login import com.wasteinformationserver.basicutils.Log.Log.debug import com.wasteinformationserver.basicutils.Log.Log.error import com.wasteinformationserver.basicutils.Log.Log.message +import com.wasteinformationserver.basicutils.Storage import com.wasteinformationserver.db.JDBC import com.wasteinformationserver.website.HttpTools.Companion.StringToMD5 import com.wasteinformationserver.website.basicrequest.PostRequest @@ -11,9 +12,11 @@ import java.sql.SQLException import java.util.* /** - * request handler of new login request of user + * request handler of new user login requests * - checks the truth of username and password * - replies right error messages or the success login + * + * @author Lukas Heiligenbrunner */ class LoginRequest : PostRequest() { override fun request(params: HashMap): String { @@ -26,24 +29,36 @@ class LoginRequest : PostRequest() { error("no connection to db") return "{\"status\" : \"nodbconn\"}" } + + if (!Storage.getInstance().isEveryThingDefined()) { + error("config not configured correctly") + return "{\"status\" : \"conferror\"}" + } + val s = jdbc.executeQuery("select * from user where username ='$username'") debug("successfully logged in to db") var response = "{\"accept\": false}" try { s.last() - if (s.row == 1) { //success + if (s.row == 1) { + //success if (StringToMD5(password!!) == s.getString("password")) { debug("login success") LoginState.getObject().logIn() LoginState.getObject().setAccountData(username, s.getString("firstName"), s.getString("secondName"), s.getString("email"), s.getInt("permission")) response = "{\"accept\": true}" - } else { + } + else { debug("wrong password") } - } else if (s.row == 0) { //user not found + } + else if (s.row == 0) { + //user not found debug("user not found") - } else { //internal error two users with same name...? + } + else { + //internal error two users with same name...? error("there seem to be two users with same name") } debug("rowcount: " + s.row) diff --git a/src/resources/wwwroot/js/index.js b/src/resources/wwwroot/js/index.js index 4364878..f645892 100644 --- a/src/resources/wwwroot/js/index.js +++ b/src/resources/wwwroot/js/index.js @@ -2,43 +2,39 @@ $(document).ready(function () { $('#loginbtn').click(function (e) { e.preventDefault(); console.log("clicked login button"); - var username = $("#userfield")[0].value; - var password = $("#passfield")[0].value; + const username = $("#userfield")[0].value; + const password = $("#passfield")[0].value; $.post('/senddata/loginget', 'username=' + username + '&password=' + password, function (data) { - console.log(data); - if (data.status == "nodbconn"){ - Swal.fire({ - type: "error", - title: 'No connection to Database', - html: 'Setup DB here --> click.', - }).then((result) => { - console.log('Popup closed. ') + // todo parse different errors here with popups + - }); - } if (data.accept == true) { console.log("successfully logged in!"); - document.cookie = "username=" + username; window.location = 'dashboard.html'; + } else { + if (data.status == "nodbconn") { + Swal.fire({ + icon: "error", + title: 'No connection to Database', + html: 'Setup DB in config file!.', + }); + } else if (data.status == "conferror") { + Swal.fire({ + icon: "error", + title: 'Not configured correctly', + html: 'Please edit settings.prop and restart the server!', + }); + } else { + Swal.fire({ + icon: "error", + title: 'Wrong login data', + html: 'Maybe a typo in your password?', + }); + } } }, 'json'); }); - - - //register pwa - async function registerSW() { - console.log("registering service worker!"); - if ('serviceWorker' in navigator) { - try { - await navigator.serviceWorker.register('/sw.js'); - } catch (e) { - console.log(`SW registration failed`); - } - } - } - - registerSW(); }); From 14eea02dcfa6c7b6977b81a2348fa57d8de88306 Mon Sep 17 00:00:00 2001 From: lukas-heiligenbrunner Date: Wed, 15 Apr 2020 16:53:58 +0200 Subject: [PATCH 5/5] correct error handling of no db and mqtt connection. --- src/java/com/wasteinformationserver/Main.kt | 17 +++++++--- .../basicutils/Storage.kt | 34 ++++++++++++------- .../com/wasteinformationserver/db/JDBC.java | 9 ++++- .../website/datarequests/DataRequest.kt | 5 +-- .../website/datarequests/DeviceRequest.kt | 14 ++++---- .../website/datarequests/NewDateRequest.kt | 6 ++-- .../datarequests/login/LoginRequest.kt | 4 +-- 7 files changed, 58 insertions(+), 31 deletions(-) diff --git a/src/java/com/wasteinformationserver/Main.kt b/src/java/com/wasteinformationserver/Main.kt index 67bd65a..55249e5 100644 --- a/src/java/com/wasteinformationserver/Main.kt +++ b/src/java/com/wasteinformationserver/Main.kt @@ -25,6 +25,7 @@ fun main() { try { Thread.sleep(200) Log.warning("Shutting down ...") + JDBC.getInstance().disconnect(); //shutdown routine } catch (e: InterruptedException) { e.printStackTrace() @@ -37,9 +38,11 @@ fun main() { //initial connect to db Log.message("initial login to db") try { - JDBC.init("ingproject", "Kb9Dxklumt76ieq6", "ingproject", "db.power4future.at", 3306) + val stor = Storage.getInstance(); + JDBC.init(stor.dbUser, stor.dbPassword, stor.dbName, stor.dbhost, stor.dbPort) +// JDBC.init("ingproject", "Kb9Dxklumt76ieq6", "ingproject", "db.power4future.at", 3306) //JDBC.init("users", "kOpaIJUjkgb9ur6S", "wasteinformation", "192.168.65.15", 3306); - } catch (e: IOException) { //e.printStackTrace(); + } catch (e: IOException) { Log.error("no connection to db") } @@ -52,6 +55,12 @@ fun main() { //startup mqtt service Log.message("starting mqtt service") - val m = MqttService("mqtt.heili.eu", "1883") - m.startupService() + if (JDBC.isConnected()) { + val m = MqttService(Storage.getInstance().mqttServer, Storage.getInstance().mqttPort.toString()) + // val m = MqttService("mqtt.heili.eu", "1883") + m.startupService() + }else{ + Log.error("could't start mqtt service because of missing db connection!") + } + } \ No newline at end of file diff --git a/src/java/com/wasteinformationserver/basicutils/Storage.kt b/src/java/com/wasteinformationserver/basicutils/Storage.kt index 17f1c43..b34fa62 100644 --- a/src/java/com/wasteinformationserver/basicutils/Storage.kt +++ b/src/java/com/wasteinformationserver/basicutils/Storage.kt @@ -21,37 +21,43 @@ class Storage { } } - private var mqttServer: String = "" + var mqttServer: String = "" get() = field set(value) { field = value } - private var mqttPort: Int = -1 + var mqttPort: Int = -1 get() = field set(value) { field = value } - private var dbName: String = "" + var dbName: String = "" get() = field set(value) { field = value } - private var dbUser: String = "" + var dbhost: String = "" get() = field set(value) { field = value } - private var dbPassword: String = "" + var dbUser: String = "" get() = field set(value) { field = value } - private var dbPort: Int = -1 + var dbPassword: String = "" + get() = field + set(value) { + field = value + } + + var dbPort: Int = -1 get() = field set(value) { field = value @@ -70,6 +76,7 @@ class Storage { mqttServer = prop["mqttserver"] as String mqttPort = (prop["mqttport"] as String).toInt() + dbhost = prop["dbhost"] as String dbName = prop["dbname"] as String dbUser = prop["dbuser"] as String dbPassword = prop["dbpass"] as String @@ -89,12 +96,13 @@ class Storage { fun store() { prop["mqttserver"] = mqttServer prop["mqttport"] = mqttPort.toString() + prop["dbhost"] = dbhost prop["dbname"] = dbName prop["dbuser"] = dbUser prop["dbpass"] = dbPassword prop["dbport"] = dbPort.toString() - prop.store(FileOutputStream("settings.prop"), "") + prop.store(FileOutputStream("settings.prop"), "main config") } /** @@ -102,12 +110,12 @@ class Storage { * todo real check if connections can be established */ fun isEveryThingDefined(): Boolean { - return (mqttServer != "" && - mqttPort != 0 && - dbName != "" && - dbUser != "" && - dbPassword != "" && - dbPort != -1) + return (isMqttServerDefined() && + isMqttPortDefined() && + isDBNameDefined() && + isDBUsernameDefined() && + isDBPasswdDefined() && + isDBPortDefined()) } diff --git a/src/java/com/wasteinformationserver/db/JDBC.java b/src/java/com/wasteinformationserver/db/JDBC.java index 4eb8d9a..28d9523 100644 --- a/src/java/com/wasteinformationserver/db/JDBC.java +++ b/src/java/com/wasteinformationserver/db/JDBC.java @@ -82,7 +82,14 @@ public class JDBC { throw new IOException("No connection to database"); // todo reconnect every 5mins or something } + } + public void disconnect(){ + try { + conn.close(); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } } /** @@ -114,7 +121,7 @@ public class JDBC { return stmt.executeUpdate(); } - public boolean isConnected() { + public static boolean isConnected() { return loggedin; } } diff --git a/src/java/com/wasteinformationserver/website/datarequests/DataRequest.kt b/src/java/com/wasteinformationserver/website/datarequests/DataRequest.kt index 8e22578..6cca587 100644 --- a/src/java/com/wasteinformationserver/website/datarequests/DataRequest.kt +++ b/src/java/com/wasteinformationserver/website/datarequests/DataRequest.kt @@ -22,11 +22,12 @@ class DataRequest : PostRequest() { val sb = StringBuilder() var set: ResultSet? var status = -1 - val jdbc: JDBC = JDBC.getInstance() - if (!jdbc.isConnected) { + + if (!JDBC.isConnected()) { error("no connection to db") return "{\"query\" : \"nodbconn\"}" } + val jdbc: JDBC = JDBC.getInstance() when (params["action"]) { /** diff --git a/src/java/com/wasteinformationserver/website/datarequests/DeviceRequest.kt b/src/java/com/wasteinformationserver/website/datarequests/DeviceRequest.kt index e3a000c..1444ecd 100644 --- a/src/java/com/wasteinformationserver/website/datarequests/DeviceRequest.kt +++ b/src/java/com/wasteinformationserver/website/datarequests/DeviceRequest.kt @@ -15,11 +15,11 @@ import java.util.* */ class DeviceRequest : PostRequest() { override fun request(params: HashMap): String { - val jdbc = JDBC.getInstance() - if (!jdbc.isConnected) { + if (!JDBC.isConnected()) { error("no connection to db") return "{\"query\" : \"nodbconn\"}" } + val jdbc: JDBC = JDBC.getInstance() val sb = StringBuilder() val deviceset: ResultSet @@ -28,7 +28,7 @@ class DeviceRequest : PostRequest() { * return all available devices */ "getdevices" -> { - deviceset = jdbc!!.executeQuery("SELECT * FROM `devices") + deviceset = jdbc.executeQuery("SELECT * FROM `devices") sb.append("{\"data\":[") try { while (deviceset.next()) { @@ -67,7 +67,7 @@ class DeviceRequest : PostRequest() { * returns all available city names */ "getCitynames" -> { - deviceset = jdbc!!.executeQuery("select * from cities") + deviceset = jdbc.executeQuery("select * from cities") debug(deviceset.toString()) sb.append("{") try { @@ -91,7 +91,7 @@ class DeviceRequest : PostRequest() { * returns all available zones for specified city */ "getzones" -> { - deviceset = jdbc!!.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' ORDER BY zone ASC") + deviceset = jdbc.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' ORDER BY zone ASC") debug(deviceset.toString()) sb.append("{") try { @@ -114,7 +114,7 @@ class DeviceRequest : PostRequest() { * returns all available waste types for specified zone and city */ "gettypes" -> { - deviceset = jdbc!!.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' ORDER BY zone ASC") + deviceset = jdbc.executeQuery("select * from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' ORDER BY zone ASC") debug(deviceset.toString()) sb.append("{") try { @@ -137,7 +137,7 @@ class DeviceRequest : PostRequest() { * configure device and save infos to db */ "savetodb" -> try { - val cityset = jdbc!!.executeQuery("SELECT id from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' AND `wastetype`='" + params["wastetype"] + "'") + val cityset = jdbc.executeQuery("SELECT id from cities WHERE `name`='" + params["cityname"] + "' AND `zone`='" + params["zonename"] + "' AND `wastetype`='" + params["wastetype"] + "'") cityset.last() if (cityset.row != 1) { error("error saving device to db --> device multiply defined?") diff --git a/src/java/com/wasteinformationserver/website/datarequests/NewDateRequest.kt b/src/java/com/wasteinformationserver/website/datarequests/NewDateRequest.kt index 1b4114e..fa9fb94 100644 --- a/src/java/com/wasteinformationserver/website/datarequests/NewDateRequest.kt +++ b/src/java/com/wasteinformationserver/website/datarequests/NewDateRequest.kt @@ -17,11 +17,13 @@ class NewDateRequest : PostRequest() { override fun request(params: HashMap): String { val sb = StringBuilder() val set: ResultSet - val jdbc = JDBC.getInstance() - if (!jdbc.isConnected) { + + if (!JDBC.isConnected()) { error("no connection to db") return "{\"query\" : \"nodbconn\"}" } + val jdbc: JDBC = JDBC.getInstance() + when (params["action"]) { "getCitynames" -> { set = jdbc.executeQuery("select * from cities") diff --git a/src/java/com/wasteinformationserver/website/datarequests/login/LoginRequest.kt b/src/java/com/wasteinformationserver/website/datarequests/login/LoginRequest.kt index c4eae81..179ab2f 100644 --- a/src/java/com/wasteinformationserver/website/datarequests/login/LoginRequest.kt +++ b/src/java/com/wasteinformationserver/website/datarequests/login/LoginRequest.kt @@ -25,8 +25,8 @@ class LoginRequest : PostRequest() { val username = params["username"] val jdbc: JDBC = try { JDBC.getInstance() - } catch (e: IOException) { - error("no connection to db") + } catch (e: Exception) { + error("no connection to db" + e.printStackTrace()) return "{\"status\" : \"nodbconn\"}" }