diff --git a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/pom.xml b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/pom.xml
index e1e8ae56c..2f6972457 100644
--- a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/pom.xml
+++ b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/pom.xml
@@ -199,10 +199,13 @@
- src/main/cfg/org.apache.plc4x.merlot.logrecorder.cfg
+ src/main/cfg/org.apache.plc4x.merlot.logrecorder.cfg
cfg
+
+ src/main/cfg/org.apache.plc4x.merlot.logrecorder.connection.database.cfg
+ cfg2
+
diff --git a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/appender/MerlotLogRecorderJDBCAppender.java b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/appender/MerlotLogRecorderJDBCAppender.java
index 1af14387a..75e95ea00 100644
--- a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/appender/MerlotLogRecorderJDBCAppender.java
+++ b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/appender/MerlotLogRecorderJDBCAppender.java
@@ -50,12 +50,11 @@ public class MerlotLogRecorderJDBCAppender implements EventHandler, ManagedServi
private Map connectionProperties = new HashMap();
- //OPS4J support: Derby, H2, MariaDB, MySQL, PostgreSQL, SQLite
+// //OPS4J support: Derby, H2, MariaDB, MySQL, PostgreSQL, SQLite
private final static String createTableQueryGenericTemplate
= "CREATE TABLE IF NOT EXISTS TABLENAME(id BIGINT NOT NULL PRIMARY KEY, owner VARCHAR(255),"
+ " level VARCHAR(100), description VARCHAR(4000), title VARCHAR(255), createdDate BIGINT, tags VARCHAR(255), logbooks VARCHAR(255), attachments_path VARCHAR(1500))";
-
- //OPS4J support: Oracle
+//OPS4J support: Oracle
private final static String createTableQueryOracleTemplate
= "CREATE TABLE IF NOT EXISTS TABLENAME(id NUMBER(19) NOT NULL PRIMARY KEY, owner VARCHAR2(255),"
+ " level VARCHAR2(100), description VARCHAR2(4000), title VARCHAR2(255), createdDate NUMBER(19), tags VARCHAR2(255), logbooks VARCHAR2(255), attachments_path VARCHAR(1500))";
@@ -96,6 +95,7 @@ public void handleEvent(Event event) {
try (Connection connection = dataSource.getConnection()) {
String insertQuery = insertQueryTemplate.replaceAll("TABLENAME", this.connectionProperties.get(TABLE_NAME_PROPERTY));
+
try (PreparedStatement insertStatement = connection.prepareStatement(insertQuery)) {
insertStatement.setLong(1, id);
insertStatement.setString(2, owner);
@@ -183,6 +183,7 @@ private void createTable(Connection connection) {
String createTableQuery = createTemplate.replaceAll("TABLENAME", this.connectionProperties.get(TABLE_NAME_PROPERTY));
+
try (Statement createStatement = connection.createStatement()) {
createStatement.executeUpdate(createTableQuery);
LOGGER.info("Table {} has been created", this.connectionProperties.get(TABLE_NAME_PROPERTY));
diff --git a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/core/MerlotLogRecorderFileExplorer.java b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/core/MerlotLogRecorderFileExplorer.java
index 4d1a16213..50f93947e 100644
--- a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/core/MerlotLogRecorderFileExplorer.java
+++ b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/core/MerlotLogRecorderFileExplorer.java
@@ -27,20 +27,25 @@
public class MerlotLogRecorderFileExplorer {
- private final static String MERLOT_DATA_DIRECTORY = "karaf.data";
-
private MerlotLogRecorderFileExplorer() {
+
}
public static File findFileByFilename(String searchTerm, BundleContext ctx) {
+
+ String fullDirPath = System.getenv("MERLOT_OLOG_ATTACHMENT");
+
+ if (fullDirPath == null || fullDirPath.trim().isEmpty()) {
+ return null;
+ }
+
- String karafDataDir = ctx.getProperty(MERLOT_DATA_DIRECTORY);
- //Search the data/tmp directory in Karaf
- Path fileTarget = Paths.get(karafDataDir, "tmp", searchTerm);
+ Path fileTarget = Paths.get(fullDirPath, searchTerm);
if (Files.exists(fileTarget) && Files.isRegularFile(fileTarget)) {
return fileTarget.toFile();
}
+
return null;
}
diff --git a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/servlets/MerlotLogRecorderLogMultipart.java b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/servlets/MerlotLogRecorderLogMultipart.java
index cba9618c0..b233f3cc7 100644
--- a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/servlets/MerlotLogRecorderLogMultipart.java
+++ b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/servlets/MerlotLogRecorderLogMultipart.java
@@ -22,6 +22,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Map;
import java.util.Random;
import javax.security.auth.login.LoginException;
import javax.servlet.ServletException;
@@ -75,11 +76,10 @@ private void processMultipart(HttpServletRequest req, HttpServletResponse resp
//Getting the application sections
for (Part part : req.getParts()) {
- String directoryPath = "data/tmp";
+ String directoryPath = System.getenv("MERLOT_OLOG_ATTACHMENT");
String fileName = part.getSubmittedFileName();
if (part.getContentType().equals("application/json")) {
-// String json = new String(part.getInputStream().readAllBytes());
try (InputStream is = part.getInputStream()) {
JsonNode node = mapper.readTree(is);
@@ -220,4 +220,6 @@ public String extractJSONData(JsonNode n, String nodeName) {
return dataResult;
}
+
+
}
diff --git a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/servlets/MerlotLogRecorderSearch.java b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/servlets/MerlotLogRecorderSearch.java
index 51af03294..28d5cb449 100644
--- a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/servlets/MerlotLogRecorderSearch.java
+++ b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/servlets/MerlotLogRecorderSearch.java
@@ -83,7 +83,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se
JSONObject log = new JSONObject();
log.put("id", dataLog.getId());
log.put("owner", dataLog.getOwner());
- log.put("source", "source");//TODO: This is where the machine's parameters should be listed—the machine that generated the log—but Phoebus doesn't send them.
+ log.put("source", dataLog.getDescription());
log.put("level", dataLog.getLevel());
log.put("title", dataLog.getTitle());
log.put("createdDate", dataLog.getCreatedDate());
@@ -330,8 +330,7 @@ private void addBetweenFilter(StringBuilder sql, List