From 479efbfc6cc4e4a2732f681aeb9fd114a04997ef Mon Sep 17 00:00:00 2001 From: lospejos Date: Wed, 3 Mar 2021 23:34:13 +0200 Subject: [PATCH] Added support for custom DB port (default is also set) --- .../server/data/sql/adapter/DataAdapter.java | 4 +++- .../data/sql/adapter/PostgreDataAdapter.java | 22 +++++++++---------- .../service/action/UploadToDBAction.java | 3 ++- server/src/main/resources/lsfusion.xml | 1 + 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/server/src/main/java/lsfusion/server/data/sql/adapter/DataAdapter.java b/server/src/main/java/lsfusion/server/data/sql/adapter/DataAdapter.java index 44516e99e3f..7ffa4ba1115 100644 --- a/server/src/main/java/lsfusion/server/data/sql/adapter/DataAdapter.java +++ b/server/src/main/java/lsfusion/server/data/sql/adapter/DataAdapter.java @@ -42,6 +42,7 @@ public abstract class DataAdapter extends AbstractConnectionPool implements Type public final SQLSyntax syntax; public String server; + public Integer port; public String instance; public String dataBase; public String userID; @@ -50,13 +51,14 @@ public abstract class DataAdapter extends AbstractConnectionPool implements Type protected abstract void ensureDB(boolean cleanDB) throws Exception; - protected DataAdapter(SQLSyntax syntax, String dataBase, String server, String instance, String userID, String password, Long connectTimeout, boolean cleanDB) throws Exception { + protected DataAdapter(SQLSyntax syntax, String dataBase, String server, Integer port, String instance, String userID, String password, Long connectTimeout, boolean cleanDB) throws Exception { Class.forName(syntax.getClassName()); this.syntax = syntax; this.dataBase = dataBase; + this.port = port; this.server = server; this.userID = userID; this.password = password; diff --git a/server/src/main/java/lsfusion/server/data/sql/adapter/PostgreDataAdapter.java b/server/src/main/java/lsfusion/server/data/sql/adapter/PostgreDataAdapter.java index 8115b3c9de1..4b25be00758 100644 --- a/server/src/main/java/lsfusion/server/data/sql/adapter/PostgreDataAdapter.java +++ b/server/src/main/java/lsfusion/server/data/sql/adapter/PostgreDataAdapter.java @@ -37,20 +37,20 @@ public class PostgreDataAdapter extends DataAdapter { private String binPath; private String dumpDir; - public PostgreDataAdapter(String dataBase, String server, String userID, String password) throws Exception { - this(dataBase, server, userID, password, false); + public PostgreDataAdapter(String dataBase, String server, Integer port, String userID, String password) throws Exception { + this(dataBase, server, port, userID, password, false); } - public PostgreDataAdapter(String dataBase, String server, String userID, String password, boolean cleanDB) throws Exception{ - this(dataBase, server, userID, password, null, null, null, cleanDB); + public PostgreDataAdapter(String dataBase, String server, Integer port, String userID, String password, boolean cleanDB) throws Exception{ + this(dataBase, server, port, userID, password, null, null, null, cleanDB); } - public PostgreDataAdapter(String dataBase, String server, String userID, String password, Long connectTimeout, String binPath, String dumpDir) throws Exception { - this(dataBase, server, userID, password, connectTimeout, binPath, dumpDir, false); + public PostgreDataAdapter(String dataBase, String server, Integer port, String userID, String password, Long connectTimeout, String binPath, String dumpDir) throws Exception { + this(dataBase, server, port, userID, password, connectTimeout, binPath, dumpDir, false); } - public PostgreDataAdapter(String dataBase, String server, String userID, String password, Long connectTimeout, String binPath, String dumpDir, boolean cleanDB) throws Exception { - super(PostgreSQLSyntax.instance, dataBase, server, null, userID, password, connectTimeout, cleanDB); + public PostgreDataAdapter(String dataBase, String server, Integer port, String userID, String password, Long connectTimeout, String binPath, String dumpDir, boolean cleanDB) throws Exception { + super(PostgreSQLSyntax.instance, dataBase, server, port, null, userID, password, connectTimeout, cleanDB); this.defaultBinPath = binPath; this.defaultDumpDir = dumpDir; @@ -71,7 +71,7 @@ public void ensureDB(boolean cleanDB) throws Exception { Connection connect = null; while(connect == null) { try { - connect = DriverManager.getConnection("jdbc:postgresql://" + server + "/postgres?user=" + userID + "&password=" + password); + connect = DriverManager.getConnection("jdbc:postgresql://" + server + ":" + port + "/postgres?user=" + userID + "&password=" + password); } catch (PSQLException e) { ServerLoggers.startLogger.error(String.format("%s (host: %s, user: %s)", e.getMessage(), server, userID)); logger.error("EnsureDB error: ", e); @@ -129,7 +129,7 @@ protected String getPath() { public Connection startConnection() throws SQLException { long started = System.currentTimeMillis(); try { - return DriverManager.getConnection("jdbc:postgresql://" + server + "/" + dataBase.toLowerCase() + "?user=" + userID + "&password=" + password + "&connectTimeout=" + (int) (connectTimeout / 1000)); + return DriverManager.getConnection("jdbc:postgresql://" + server + ":" + port + "/" + dataBase.toLowerCase() + "?user=" + userID + "&password=" + password + "&connectTimeout=" + (int) (connectTimeout / 1000)); } finally { long elapsed = System.currentTimeMillis() - started; if(elapsed > connectTimeout) @@ -318,7 +318,7 @@ public void dropDB(String dbName) throws IOException { public List>> readCustomRestoredColumns(String dbName, String table, List keys, List columns) throws SQLException { List> dataKeys = new ArrayList<>(); List> dataColumns = new ArrayList<>(); - try(Connection connection = DriverManager.getConnection("jdbc:postgresql://" + server + "/" + dbName.toLowerCase() + "?user=" + userID + "&password=" + password)) { + try(Connection connection = DriverManager.getConnection("jdbc:postgresql://" + server + ":" + port + "/" + dbName.toLowerCase() + "?user=" + userID + "&password=" + password)) { try (Statement statement = connection.createStatement()) { String column = ""; for(String k : keys) diff --git a/server/src/main/java/lsfusion/server/physics/admin/service/action/UploadToDBAction.java b/server/src/main/java/lsfusion/server/physics/admin/service/action/UploadToDBAction.java index 627fd602060..0a7d1b0072c 100644 --- a/server/src/main/java/lsfusion/server/physics/admin/service/action/UploadToDBAction.java +++ b/server/src/main/java/lsfusion/server/physics/admin/service/action/UploadToDBAction.java @@ -29,6 +29,7 @@ public void executeInternal(final ExecutionContext conte try { String type = (String) findProperty("uploadStaticNameType[]").read(context); String host = (String) findProperty("uploadHost[]").read(context); + Integer port = (Integer) findProperty("uploadPort[]").read(context); String user = (String) findProperty("uploadUser[]").read(context); String password = (String) findProperty("uploadPassword[]").read(context); String db = (String) findProperty("uploadDB[]").read(context); @@ -37,7 +38,7 @@ public void executeInternal(final ExecutionContext conte final DataAdapter adapter; try { if(type.trim().equals("Service_DBType.POSTGRE")) - adapter = new PostgreDataAdapter(db, host, user, password); + adapter = new PostgreDataAdapter(db, host, port, user, password); // else if(type.trim().equals("Service_DBType.MSSQL")) // adapter = new MSSQLDataAdapter(db, host, user, password, instance); else diff --git a/server/src/main/resources/lsfusion.xml b/server/src/main/resources/lsfusion.xml index 5d1889c5078..fb3e5f55a53 100644 --- a/server/src/main/resources/lsfusion.xml +++ b/server/src/main/resources/lsfusion.xml @@ -144,6 +144,7 @@ +