Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
80a4f1e846 | |||
f8d5295347 | |||
f5a54dfb74 | |||
f1c5199d89 | |||
302b89b14f | |||
d7451301be |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
./config.json
|
config.json
|
@ -23,8 +23,10 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation 'org.jetbrains:annotations:20.1.0'
|
||||||
compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
|
compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
|
||||||
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'
|
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'
|
||||||
|
compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.2'
|
||||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
{
|
{
|
||||||
"storePath": "./data/",
|
"storePath": "./data/",
|
||||||
"apiURL": "https://data.sensor.community/airrohr/v1/sensor/35943/",
|
"apiURL": "https://data.sensor.community/airrohr/v1/sensor/35943/",
|
||||||
"interval": 150
|
"interval": 150,
|
||||||
|
"dbConfig": {
|
||||||
|
"db": "",
|
||||||
|
"pw": "",
|
||||||
|
"user": "",
|
||||||
|
"port": 3306,
|
||||||
|
"server": "localhost"
|
||||||
|
}
|
||||||
}
|
}
|
35
src/main/java/sh/adb/sensorCommunityAPI/DBConfig.java
Normal file
35
src/main/java/sh/adb/sensorCommunityAPI/DBConfig.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package sh.adb.sensorCommunityAPI;
|
||||||
|
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class DBConfig {
|
||||||
|
String pw;
|
||||||
|
String db;
|
||||||
|
String user;
|
||||||
|
int port;
|
||||||
|
String server;
|
||||||
|
|
||||||
|
DBConfig(String pw, String db, String user, int port, String server){
|
||||||
|
this.pw = pw;
|
||||||
|
this.db = db;
|
||||||
|
this.user = user;
|
||||||
|
this.port = port;
|
||||||
|
this.server = server;
|
||||||
|
}
|
||||||
|
DBConfig(JSONObject config){
|
||||||
|
this.pw = (String) config.get("pw");
|
||||||
|
this.db = (String) config.get("db");
|
||||||
|
this.user = (String) config.get("user");
|
||||||
|
this.port = (int) (long) config.get("port");
|
||||||
|
this.server = (String) config.get("server");
|
||||||
|
}
|
||||||
|
Connection getDbConnection() throws SQLException {
|
||||||
|
return DriverManager.getConnection(
|
||||||
|
"jdbc:mariadb://"+this.server+":"+String.valueOf(this.port)+"/"+this.db+"?user="+this.user+"&password="+this.pw
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
30
src/main/java/sh/adb/sensorCommunityAPI/DBHandler.java
Normal file
30
src/main/java/sh/adb/sensorCommunityAPI/DBHandler.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package sh.adb.sensorCommunityAPI;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
|
||||||
|
public class DBHandler {
|
||||||
|
Connection connection;
|
||||||
|
|
||||||
|
DBHandler(DBConfig config) throws SQLException {
|
||||||
|
this.connection = config.getDbConnection();
|
||||||
|
}
|
||||||
|
public void storeInDB(String SQL) {
|
||||||
|
try (Statement stmt = this.connection.createStatement()) {
|
||||||
|
stmt.executeUpdate(SQL);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void storeInDB(String country, int sensorID, String timeStamp, String value_type_p1, int id_p1, float value_p1, String value_type_p2, int id_p2, float value_p2, String allJSON) {
|
||||||
|
try (Statement stmt = this.connection.createStatement()) {
|
||||||
|
stmt.executeUpdate(
|
||||||
|
"INSERT INTO apidata (id, country, sensorID, Timestamp, value_type_p1, id_p1, value_p1, value_type_p2, id_p2, value_p2, allJSON )" +
|
||||||
|
"VALUES ( NULL , '" + country + "', '" + sensorID + "' , '" + timeStamp +"', '" + value_type_p1 + "', '" + id_p1 + "', '" + value_p1 + "', '" + value_type_p2 + "', '" + id_p2 + "' , '" + value_p2 + "', '" + allJSON + "' )"
|
||||||
|
);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -17,7 +17,7 @@ public class DataStore {
|
|||||||
fw.close();
|
fw.close();
|
||||||
return true;
|
return true;
|
||||||
}catch (IOException e){
|
}catch (IOException e){
|
||||||
System.out.println("error while soring data to: " + path);
|
System.out.println("error while storing data to: " + path);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,10 @@ import org.json.simple.parser.ParseException;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@ -15,11 +19,13 @@ public class DataStoreBot {
|
|||||||
String apiURL;
|
String apiURL;
|
||||||
APIParser api;
|
APIParser api;
|
||||||
DataStore store;
|
DataStore store;
|
||||||
DataStoreBot(String storePath, String apiURL) throws MalformedURLException {
|
DBHandler db;
|
||||||
|
DataStoreBot(String storePath, String apiURL, DBConfig dbConfig) throws MalformedURLException, SQLException {
|
||||||
this.storePath = storePath;
|
this.storePath = storePath;
|
||||||
this.apiURL = apiURL;
|
this.apiURL = apiURL;
|
||||||
this.api = new APIParser(this.apiURL);
|
this.api = new APIParser(this.apiURL);
|
||||||
this.store = new DataStore();
|
this.store = new DataStore();
|
||||||
|
this.db = new DBHandler(dbConfig);
|
||||||
}
|
}
|
||||||
public void setInterval(int seconds) {
|
public void setInterval(int seconds) {
|
||||||
ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
|
ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
|
||||||
@ -37,6 +43,7 @@ public class DataStoreBot {
|
|||||||
this.storeEntry(entry);
|
this.storeEntry(entry);
|
||||||
}
|
}
|
||||||
public void storeEntry(JSONObject entry) throws IOException {
|
public void storeEntry(JSONObject entry) throws IOException {
|
||||||
|
|
||||||
System.out.println("entry => ");
|
System.out.println("entry => ");
|
||||||
System.out.println(entry);
|
System.out.println(entry);
|
||||||
//get country
|
//get country
|
||||||
@ -46,12 +53,34 @@ public class DataStoreBot {
|
|||||||
String sensorID = String.valueOf(
|
String sensorID = String.valueOf(
|
||||||
((JSONObject) entry.get("sensor")).get("id")
|
((JSONObject) entry.get("sensor")).get("id")
|
||||||
);
|
);
|
||||||
|
int sensorID2 = Integer.parseInt(sensorID);
|
||||||
|
|
||||||
//get timestamp
|
//get timestamp
|
||||||
String timestamp = (String) entry.get("timestamp");
|
String timestamp = (String) entry.get("timestamp");
|
||||||
|
|
||||||
|
//get value informations (6)
|
||||||
|
JSONArray value_array = (JSONArray) entry.get("sensordatavalues");
|
||||||
|
System.out.println("----------------------------");
|
||||||
|
Iterator iterator = value_array.iterator();
|
||||||
|
|
||||||
|
JSONObject firstArr = (JSONObject) iterator.next();
|
||||||
|
String value_type_p1 = (String) firstArr.get("value_type");
|
||||||
|
int id_p1 = (int) (long) firstArr.get("id");
|
||||||
|
float value_p1 = Float.parseFloat((String) firstArr.get("value")) ;
|
||||||
|
|
||||||
|
JSONObject secondArr = (JSONObject) iterator.next();
|
||||||
|
String value_type_p2 = (String) secondArr.get("value_type");
|
||||||
|
int id_p2 = (int) (long) secondArr.get("id");
|
||||||
|
float value_p2 = Float.parseFloat((String) firstArr.get("value")) ;
|
||||||
|
|
||||||
|
// Json to String
|
||||||
|
String allJSON = String.valueOf(entry);
|
||||||
|
|
||||||
String path = this.storePath + country + "-" + sensorID + "-" + timestamp + ".json";
|
String path = this.storePath + country + "-" + sensorID + "-" + timestamp + ".json";
|
||||||
path = path.replace(":", "-").replace(" ", "-");
|
path = path.replace(":", "-").replace(" ", "-");
|
||||||
this.store.storeJSON(path, entry);
|
this.store.storeJSON(path, entry);
|
||||||
|
//System.out.println(country + sensorID2 + timestamp + value_type_p1 + id_p1 + value_p1 + value_type_p2 + id_p2 + value_p2 + allJSON);
|
||||||
|
this.db.storeInDB(country, sensorID2, timestamp, value_type_p1, id_p1, value_p1, value_type_p2, id_p2, value_p2, allJSON);
|
||||||
|
//String country, int sensorID, String timeStamp, String value_type_p1, int id_p1, float value_p1, String value_type_p2, int id_p2, float value_p2, String allJSON
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,16 +3,20 @@ package sh.adb.sensorCommunityAPI;
|
|||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException, SQLException {
|
||||||
DataStore store = new DataStore();
|
DataStore store = new DataStore();
|
||||||
JSONObject config = store.readJSON("config.json");
|
JSONObject config = store.readJSON("config.json");
|
||||||
if (config == null) config = store.readJSON("example.config.json");
|
if (config == null) config = store.readJSON("example.config.json");
|
||||||
|
|
||||||
|
DBConfig dbConfig = new DBConfig((JSONObject) config.get("dbConfig"));
|
||||||
|
|
||||||
DataStoreBot bot = new DataStoreBot(
|
DataStoreBot bot = new DataStoreBot(
|
||||||
config.get("storePath").toString(),
|
config.get("storePath").toString(),
|
||||||
config.get("apiURL").toString()
|
config.get("apiURL").toString(),
|
||||||
|
dbConfig
|
||||||
);
|
);
|
||||||
bot.setInterval((int)(long) config.get("interval"));
|
bot.setInterval((int)(long) config.get("interval"));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user