From c8ee9925a194a392979f8ecef20ce8d1df9171be011afd1735bff67ddf2ded7c Mon Sep 17 00:00:00 2001 From: AidarKC Date: Thu, 25 Dec 2025 14:53:08 +0300 Subject: [PATCH] =?UTF-8?q?25=2012=2025=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BB=D0=BE=D0=B3=D0=B3=D0=B5=D1=80=20=D0=B2=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8.=D0=9E?= =?UTF-8?q?=D0=BC=D1=82=D0=B0=D0=BB=D0=BE=D1=81=D1=8C=20=D1=81=D0=BE=D0=B7?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=20=D0=B2=20=D0=B1=D0=B4=20=D0=BF=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 6 ++ shine-server-blockchain/build.gradle | 3 +- shine-server-config/build.gradle | 4 +- shine-server-db/build.gradle | 5 +- .../java/shine/db/DatabaseInitializer.java | 9 +-- .../java/shine/db/dao/BlockchainStateDAO.java | 2 +- .../db/entities/BlockchainStateEntry.java | 19 ++--- shine-server-geo/build.gradle | 3 +- shine-server-net-protocol/build.gradle | 4 +- src/test/resources/log4j2.xml | 73 +++++++++++++++++++ 10 files changed, 104 insertions(+), 24 deletions(-) create mode 100644 src/test/resources/log4j2.xml diff --git a/build.gradle b/build.gradle index 6a76791..1885003 100644 --- a/build.gradle +++ b/build.gradle @@ -29,6 +29,12 @@ dependencies { testImplementation platform('org.junit:junit-bom:5.10.0') testImplementation 'org.junit.jupiter:junit-jupiter' + implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера + + + runtimeOnly "org.apache.logging.log4j:log4j-core:2.24.3" // Реализация: Log4j2 пишет в файл/консоль + runtimeOnly "org.apache.logging.log4j:log4j-slf4j2-impl:2.24.3" // Реализация: Log4j2 пишет в файл/консоль + implementation project(':shine-server-config') // модуль настроек из application.properties diff --git a/shine-server-blockchain/build.gradle b/shine-server-blockchain/build.gradle index da41301..8d43014 100644 --- a/shine-server-blockchain/build.gradle +++ b/shine-server-blockchain/build.gradle @@ -22,8 +22,7 @@ dependencies { // JSON (BchInfoManager) implementation 'com.fasterxml.jackson.core:jackson-databind:2.18.1' - // логгер - implementation 'org.slf4j:slf4j-api:2.0.16' + implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' implementation project(':shine-server-db') // модуль для работы с БД содержит и сущности из БД и саму работу с БД diff --git a/shine-server-config/build.gradle b/shine-server-config/build.gradle index 0b7c42a..e4dbe14 100644 --- a/shine-server-config/build.gradle +++ b/shine-server-config/build.gradle @@ -16,8 +16,10 @@ java { } dependencies { - // обычно тут пусто, максимум логгер и тесты testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' + + implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера + } test { diff --git a/shine-server-db/build.gradle b/shine-server-db/build.gradle index ce1a117..cf446c1 100644 --- a/shine-server-db/build.gradle +++ b/shine-server-db/build.gradle @@ -16,7 +16,10 @@ repositories { } dependencies { - implementation 'org.xerial:sqlite-jdbc:3.47.0.0' + implementation 'org.xerial:sqlite-jdbc:3.47.0.0' // sqlite + + implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера + implementation project(':shine-server-config') // модуль с настройками } diff --git a/shine-server-db/src/main/java/shine/db/DatabaseInitializer.java b/shine-server-db/src/main/java/shine/db/DatabaseInitializer.java index 96d0ce5..f7a8de9 100644 --- a/shine-server-db/src/main/java/shine/db/DatabaseInitializer.java +++ b/shine-server-db/src/main/java/shine/db/DatabaseInitializer.java @@ -158,17 +158,14 @@ public class DatabaseInitializer { blockchainName TEXT NOT NULL PRIMARY KEY, login TEXT NOT NULL, public_key_base64 TEXT NOT NULL, - + size_limit INTEGER NOT NULL, - size_bytes INTEGER NOT NULL, - file_size_bytes INTEGER NOT NULL, - + last_global_number INTEGER NOT NULL, last_global_hash TEXT NOT NULL, updated_at_ms INTEGER NOT NULL, - - -- Линии 0..7 (MVP: максимум 8 линий) + line0_last_number INTEGER NOT NULL, line0_last_hash TEXT NOT NULL, line1_last_number INTEGER NOT NULL, diff --git a/shine-server-db/src/main/java/shine/db/dao/BlockchainStateDAO.java b/shine-server-db/src/main/java/shine/db/dao/BlockchainStateDAO.java index 4f49081..01d67e2 100644 --- a/shine-server-db/src/main/java/shine/db/dao/BlockchainStateDAO.java +++ b/shine-server-db/src/main/java/shine/db/dao/BlockchainStateDAO.java @@ -135,7 +135,7 @@ public final class BlockchainStateDAO { ps.setString(i++, e.getBlockchainName()); ps.setString(i++, nn(e.getLogin())); ps.setString(i++, nn(e.getPublicKeyBase64())); - ps.setInt(i++, e.getSizeLimit()); + ps.setLong(i++, e.getSizeLimit()); ps.setLong(i++, e.getFileSizeBytes()); ps.setInt(i++, e.getLastGlobalNumber()); ps.setString(i++, nn(e.getLastGlobalHash())); diff --git a/shine-server-db/src/main/java/shine/db/entities/BlockchainStateEntry.java b/shine-server-db/src/main/java/shine/db/entities/BlockchainStateEntry.java index a60905d..2368899 100644 --- a/shine-server-db/src/main/java/shine/db/entities/BlockchainStateEntry.java +++ b/shine-server-db/src/main/java/shine/db/entities/BlockchainStateEntry.java @@ -13,7 +13,9 @@ public final class BlockchainStateEntry { private String login; private String publicKeyBase64; - private int sizeLimit; + /** Лимит (теперь long). */ + private long sizeLimit; + /** Размер файла блокчейна в байтах (то, что будем сверять/чинить при старте). */ private long fileSizeBytes; @@ -28,7 +30,6 @@ public final class BlockchainStateEntry { private long updatedAtMs; public BlockchainStateEntry() { - // по умолчанию хэши пустые (как "0") for (int i = 0; i < 8; i++) lastLineHashes[i] = ""; this.lastGlobalHash = ""; } @@ -36,7 +37,7 @@ public final class BlockchainStateEntry { public BlockchainStateEntry(String blockchainName, String login, String publicKeyBase64, - int sizeLimit, + long sizeLimit, long fileSizeBytes, int lastGlobalNumber, String lastGlobalHash, @@ -74,8 +75,8 @@ public final class BlockchainStateEntry { public String getPublicKeyBase64() { return publicKeyBase64; } public void setPublicKeyBase64(String publicKeyBase64) { this.publicKeyBase64 = publicKeyBase64; } - public int getSizeLimit() { return sizeLimit; } - public void setSizeLimit(int sizeLimit) { this.sizeLimit = sizeLimit; } + public long getSizeLimit() { return sizeLimit; } + public void setSizeLimit(long sizeLimit) { this.sizeLimit = sizeLimit; } public long getFileSizeBytes() { return fileSizeBytes; } public void setFileSizeBytes(long fileSizeBytes) { this.fileSizeBytes = fileSizeBytes; } @@ -106,12 +107,8 @@ public final class BlockchainStateEntry { lastLineHashes[line] = value == null ? "" : value; } - public int[] getLastLineNumbersCopy() { - return Arrays.copyOf(lastLineNumbers, 8); - } - public String[] getLastLineHashesCopy() { - return Arrays.copyOf(lastLineHashes, 8); - } + public int[] getLastLineNumbersCopy() { return Arrays.copyOf(lastLineNumbers, 8); } + public String[] getLastLineHashesCopy() { return Arrays.copyOf(lastLineHashes, 8); } public long getUpdatedAtMs() { return updatedAtMs; } public void setUpdatedAtMs(long updatedAtMs) { this.updatedAtMs = updatedAtMs; } diff --git a/shine-server-geo/build.gradle b/shine-server-geo/build.gradle index 9cdf092..b9b4fe0 100644 --- a/shine-server-geo/build.gradle +++ b/shine-server-geo/build.gradle @@ -22,8 +22,9 @@ dependencies { implementation 'org.eclipse.jetty:jetty-servlet:11.0.20' implementation 'org.eclipse.jetty.websocket:websocket-jetty-server:11.0.20' - implementation project(':shine-server-db') // модуль для работы с БД содержит и сущности из БД и саму работу с БД + implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера + implementation project(':shine-server-db') // модуль для работы с БД содержит и сущности из БД и саму работу с БД } diff --git a/shine-server-net-protocol/build.gradle b/shine-server-net-protocol/build.gradle index 5dfa9fb..6407aa4 100644 --- a/shine-server-net-protocol/build.gradle +++ b/shine-server-net-protocol/build.gradle @@ -25,7 +25,9 @@ dependencies { implementation 'org.slf4j:slf4j-api:2.0.9' implementation 'ch.qos.logback:logback-classic:1.5.6' - implementation project(':shine-server-config') // модуль с настройками + implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера + + implementation project(':shine-server-config') // модуль с настройками implementation project(':shine-server-crypto') // модуль сервера для работы с криптографией implementation project(':shine-server-blockchain') // модуль для работы с блокчейном implementation project(':shine-server-db') // модуль для работы с БД содержит и сущности из БД и саму работу с БД diff --git a/src/test/resources/log4j2.xml b/src/test/resources/log4j2.xml new file mode 100644 index 0000000..a165d9b --- /dev/null +++ b/src/test/resources/log4j2.xml @@ -0,0 +1,73 @@ + + + + + + logs + + + ${LOG_DIR}/server.log + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level}{FATAL=red blink, ERROR=red, WARN=yellow, INFO=green, DEBUG=cyan, TRACE=blue} + [%t] %c{1.} - %msg%n%throwable + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %c - %msg%n%throwable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +