init
This commit is contained in:
105
backend/src/main/java/org/bdware/sc/registry/DBConnector.java
Normal file
105
backend/src/main/java/org/bdware/sc/registry/DBConnector.java
Normal file
@@ -0,0 +1,105 @@
|
||||
package org.bdware.sc.registry;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.bdware.sc.util.ExceptionUtil;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class DBConnector {
|
||||
private static final Logger LOGGER = LogManager.getLogger(DBConnector.class);
|
||||
public static Connection jdbcConnection;
|
||||
public static String url;
|
||||
public static String userName;
|
||||
public static String password;
|
||||
|
||||
|
||||
public static void init() throws SQLException {
|
||||
try {
|
||||
JsonObject ret = new JsonObject();
|
||||
ret.addProperty("success", "yes");
|
||||
System.out.println(ret.get("success"));
|
||||
Class.forName("org.postgresql.Driver");
|
||||
connClose(jdbcConnection);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(e.getMessage());
|
||||
LOGGER.debug(ExceptionUtil.exceptionToString(e));
|
||||
}
|
||||
jdbcConnection = DriverManager.getConnection(url, userName, password);
|
||||
}
|
||||
|
||||
public static void connect() throws SQLException {
|
||||
if (url == null) init();
|
||||
if (jdbcConnection == null || jdbcConnection.isClosed())
|
||||
jdbcConnection = DriverManager.getConnection(url, userName, password);
|
||||
}
|
||||
|
||||
private static void connClose(Connection conn) {
|
||||
if (conn == null) return;
|
||||
try {
|
||||
if (conn != null && !conn.isClosed()) conn.close();
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(e.getMessage());
|
||||
LOGGER.debug(ExceptionUtil.exceptionToString(e));
|
||||
}
|
||||
}
|
||||
|
||||
private static void pstmtClose(PreparedStatement pstmt) {
|
||||
if (pstmt == null) return;
|
||||
try {
|
||||
if (pstmt != null && !pstmt.isClosed()) pstmt.close();
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(e.getMessage());
|
||||
LOGGER.debug(ExceptionUtil.exceptionToString(e));
|
||||
}
|
||||
}
|
||||
|
||||
public static void insert(String schema, String table, Map<String, Object> items) {
|
||||
// if (!items.containsKey("time") || items.get("time").equals("0")) return; // If time is null, do nothing.
|
||||
// prepare columns and values needed in sql
|
||||
StringBuilder columns = new StringBuilder();
|
||||
StringBuilder values = new StringBuilder();
|
||||
|
||||
List<Map.Entry<String, Object>> list = new ArrayList<>(items.entrySet());
|
||||
list.forEach(item -> {
|
||||
columns.append("\"").append(item.getKey()).append("\",");
|
||||
values.append("?,");
|
||||
});
|
||||
columns.deleteCharAt(columns.lastIndexOf(","));
|
||||
values.deleteCharAt(values.lastIndexOf(","));
|
||||
|
||||
// generate sql
|
||||
// example:
|
||||
// INSERT INTO "public"."doip_request" ("op","server_doid","status_code","client_doid","do_prefix",
|
||||
// "response_hash","server_pubkey","do_data_id","do_repo","request_hash","client_pubkey","server_ip",
|
||||
// "client_ip","time","record_hash") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
|
||||
String sql = "INSERT INTO \"" + schema + "\".\"" + table + "\" (" + columns + ") VALUES (" + values + ")";
|
||||
|
||||
// execute sql
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
connect();
|
||||
pstmt = jdbcConnection.prepareStatement(sql);
|
||||
int i = 1;
|
||||
for (Map.Entry<String, Object> item : list) {
|
||||
pstmt.setObject(i, item.getValue());
|
||||
i++;
|
||||
}
|
||||
System.out.println(pstmt);
|
||||
pstmt.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
LOGGER.error(e.getMessage());
|
||||
LOGGER.debug(ExceptionUtil.exceptionToString(e));
|
||||
}
|
||||
pstmtClose(pstmt);
|
||||
connClose(jdbcConnection);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.bdware.sc.contractexample;
|
||||
package org.bdware.sc.registry;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
33
backend/src/main/java/org/bdware/sc/registry/RegistryDB.java
Normal file
33
backend/src/main/java/org/bdware/sc/registry/RegistryDB.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package org.bdware.sc.registry;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import org.bdware.sc.engine.JSONTool;
|
||||
import wrp.jdk.nashorn.api.scripting.ScriptObjectMirror;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public class RegistryDB {
|
||||
public static void init(ScriptObjectMirror arg, String requester) {
|
||||
try {
|
||||
JsonObject jsonData = JSONTool.convertMirrorToJson(arg).getAsJsonObject();
|
||||
DBConnector.url = jsonData.get("DBUrl").getAsString();
|
||||
DBConnector.password = jsonData.get("password").getAsString();
|
||||
DBConnector.userName = jsonData.get("username").getAsString();
|
||||
DBConnector.connect();
|
||||
|
||||
Map<String, Object> item = new HashMap<>();
|
||||
item.put("pubkey", requester);
|
||||
item.put("type", "admin");
|
||||
item.put("username", "admin");
|
||||
DBConnector.insert("registry", "user", item);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
filter.threshold.type=ThresholdFilter
|
||||
filter.threshold.level=debug
|
||||
appender.console.type=Console
|
||||
appender.console.name=STDOUT
|
||||
appender.console.layout.type=PatternLayout
|
||||
appender.console.layout.pattern=%highlight{[%-5p] %d{HH:mm:ss.SSS} %m (%F:%L)[%M]%n}{FATAL=Bright Red,ERROR=Red,WARN=Yellow,INFO=Green,DEBUG=Blue,TRACE=White}
|
||||
appender.rolling.type=File
|
||||
appender.rolling.name=log
|
||||
appender.rolling.append=true
|
||||
appender.rolling.fileName=./log/gateway.log
|
||||
appender.rolling.layout.type=PatternLayout
|
||||
appender.rolling.layout.pattern=%d-%m%n
|
||||
rootLogger.level=info
|
||||
rootLogger.appenderRef.stdout.ref=STDOUT
|
||||
rootLogger.appenderRef.log.ref=log
|
||||
@@ -1,15 +0,0 @@
|
||||
filter.threshold.type=ThresholdFilter
|
||||
filter.threshold.level=debug
|
||||
appender.console.type=Console
|
||||
appender.console.name=STDOUT
|
||||
appender.console.layout.type=PatternLayout
|
||||
appender.console.layout.pattern=%highlight{[%-5p] %d{HH:mm:ss.SSS} %m (%F:%L)[%M]%n}{FATAL=Bright Red,ERROR=Red,WARN=Yellow,INFO=Green,DEBUG=Blue,TRACE=White}
|
||||
appender.rolling.type=File
|
||||
appender.rolling.name=log
|
||||
appender.rolling.append=true
|
||||
appender.rolling.fileName=./log/gateway.log
|
||||
appender.rolling.layout.type=PatternLayout
|
||||
appender.rolling.layout.pattern=%d-%m%n
|
||||
rootLogger.level=info
|
||||
rootLogger.appenderRef.stdout.ref=STDOUT
|
||||
rootLogger.appenderRef.log.ref=log
|
||||
Reference in New Issue
Block a user