From 9679807a4dd7e0ecd0942fdb2d9a5b2c4d78ad13 Mon Sep 17 00:00:00 2001 From: coco3x Date: Wed, 27 Nov 2024 16:51:06 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20log-api=EC=97=90=EC=84=9C=20log-wri?= =?UTF-8?q?ter=20yml=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../log_writer}/config/PropertiesConfig.java | 2 +- .../src/main/resources/application-jpa.yml | 21 ------------------- ...network.yml => application-log-writer.yml} | 10 +++++---- .../src/main/resources/application.yml | 18 ++++++++-------- 4 files changed, 16 insertions(+), 35 deletions(-) rename modules/{log-api/src/main/java/com/whoz_in/network_log => infrastructure/log-writer/src/main/java/com/whoz_in/log_writer}/config/PropertiesConfig.java (88%) delete mode 100644 modules/infrastructure/log-writer/src/main/resources/application-jpa.yml rename modules/infrastructure/log-writer/src/main/resources/{application-network.yml => application-log-writer.yml} (55%) diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/config/PropertiesConfig.java b/modules/infrastructure/log-writer/src/main/java/com/whoz_in/log_writer/config/PropertiesConfig.java similarity index 88% rename from modules/log-api/src/main/java/com/whoz_in/network_log/config/PropertiesConfig.java rename to modules/infrastructure/log-writer/src/main/java/com/whoz_in/log_writer/config/PropertiesConfig.java index b17c0509..5df9520c 100644 --- a/modules/log-api/src/main/java/com/whoz_in/network_log/config/PropertiesConfig.java +++ b/modules/infrastructure/log-writer/src/main/java/com/whoz_in/log_writer/config/PropertiesConfig.java @@ -1,4 +1,4 @@ -package com.whoz_in.network_log.config; +package com.whoz_in.log_writer.config; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; diff --git a/modules/infrastructure/log-writer/src/main/resources/application-jpa.yml b/modules/infrastructure/log-writer/src/main/resources/application-jpa.yml deleted file mode 100644 index df5ae8a1..00000000 --- a/modules/infrastructure/log-writer/src/main/resources/application-jpa.yml +++ /dev/null @@ -1,21 +0,0 @@ -spring: - config: - activate: - on-profile: jpa - - datasource: - url: ${DB_URL} - username: ${DB_USERNAME} - password: ${DB_PASSWORD} - - driver-class-name: ${DB_DRIVER_CLASS} - jpa: - hibernate: - ddl-auto: update - properties: - hibernate: - format_sql: true - show_sql: false - dialect: ${DB_DIALECT} - generate-ddl: false - open-in-view: false \ No newline at end of file diff --git a/modules/infrastructure/log-writer/src/main/resources/application-network.yml b/modules/infrastructure/log-writer/src/main/resources/application-log-writer.yml similarity index 55% rename from modules/infrastructure/log-writer/src/main/resources/application-network.yml rename to modules/infrastructure/log-writer/src/main/resources/application-log-writer.yml index fc291484..e280c0bc 100644 --- a/modules/infrastructure/log-writer/src/main/resources/application-network.yml +++ b/modules/infrastructure/log-writer/src/main/resources/application-log-writer.yml @@ -1,7 +1,9 @@ spring: - config: - activate: - on-profile: network + datasource: + url: ${DB_URL} + username: ${DB_USERNAME} + password: ${DB_PASSWORD} + driver-class-name: ${DB_DRIVER_CLASS} network: process: @@ -12,4 +14,4 @@ network: monitor: ${MONITOR_COMMAND} password: ${SUDO_PASSWORD} interface: - monitor: ${MONITOR_INTERFACE} + monitor: ${MONITOR_INTERFACE} \ No newline at end of file diff --git a/modules/log-api/src/main/resources/application.yml b/modules/log-api/src/main/resources/application.yml index 9f267451..5ea49f98 100644 --- a/modules/log-api/src/main/resources/application.yml +++ b/modules/log-api/src/main/resources/application.yml @@ -1,9 +1,9 @@ -#spring: -# application: -# name: WhozIn-Network -# -# profiles: -# group: -# local: -# - jpa -# active: local +spring: + application: + name: WhozIn-Network + + profiles: + group: + local: + - log-writer + active: local From 30ef864c1c36fff93d26babfa9871d56bbbbc570 Mon Sep 17 00:00:00 2001 From: coco3x Date: Wed, 27 Nov 2024 20:28:30 +0900 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20domain=5Fjpa=EC=9D=98=20Repository?= =?UTF-8?q?=EB=8F=84=20=EC=8A=A4=ED=94=84=EB=A7=81=20=EB=B9=88=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=93=B1=EB=A1=9D=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/whoz_in/domain_jpa/config/JpaConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/config/JpaConfig.java b/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/config/JpaConfig.java index 448682d1..dc2e3732 100644 --- a/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/config/JpaConfig.java +++ b/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/config/JpaConfig.java @@ -8,8 +8,8 @@ @Configuration @EnableJpaAuditing -//멀티 모듈에서 명시적으로 엔티티와 JpaRepository의 위치를 지정하기 위함 -@EnableJpaRepositories(basePackages = {"com.whoz_in.domain", "com.whoz_in.common_domain_jpa"}) +//기본적으로 SpringApplication 모듈에서 찾기 때문에 이 모듈에서도 찾을 수 있도록 함 +@EnableJpaRepositories(basePackages = {"com.whoz_in.domain_jpa"}) @EntityScan(basePackages = "com.whoz_in") public class JpaConfig { } From e0a484f9fc09cfae9bee24b5f935fd97cdf8471f Mon Sep 17 00:00:00 2001 From: coco3x Date: Wed, 27 Nov 2024 20:31:02 +0900 Subject: [PATCH 3/6] =?UTF-8?q?refactor:=20log=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=EC=9D=98=20=EC=86=8D=EC=84=B1=20=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=ED=85=8C=EC=9D=B4=EB=B8=94=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/whoz_in/domain_jpa/managed/ManagedLog.java | 11 +++-------- .../com/whoz_in/domain_jpa/monitor/MonitorLog.java | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/managed/ManagedLog.java b/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/managed/ManagedLog.java index 18ca7ae7..25c9b90c 100644 --- a/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/managed/ManagedLog.java +++ b/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/managed/ManagedLog.java @@ -14,22 +14,17 @@ import lombok.experimental.SuperBuilder; @Entity -@Table(name = ManagedLog.TABLE_NAME) @SuperBuilder(toBuilder = true) @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ManagedLog extends BaseEntity { - public static final String TABLE_NAME = "managed_log"; - @EmbeddedId private LogId logId; - @Column(name = TABLE_NAME + "_wifi_ssid", nullable = true) - private String wifiSsid; + private String ssid; - @Column(name = TABLE_NAME + "_device_name", nullable = true) private String deviceName; @Getter @@ -38,10 +33,10 @@ public class ManagedLog extends BaseEntity { @Embeddable public static class LogId { - @Column(name = TABLE_NAME + "_mac", nullable = false) + @Column(name = "mac", nullable = false) private String mac; - @Column(name = TABLE_NAME + "_ip", nullable = false) + @Column(name = "ip", nullable = false) private String ip; @Override diff --git a/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/monitor/MonitorLog.java b/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/monitor/MonitorLog.java index 8f0c658f..5668f7fe 100644 --- a/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/monitor/MonitorLog.java +++ b/modules/infrastructure/domain-jpa/src/main/java/com/whoz_in/domain_jpa/monitor/MonitorLog.java @@ -9,8 +9,8 @@ import com.whoz_in.domain_jpa.shared.BaseEntity; @Entity -@NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class MonitorLog extends BaseEntity { @Id private String mac; From b70d32a9c5f067d03d9ac4b89a7ed9815c457819 Mon Sep 17 00:00:00 2001 From: coco3x Date: Wed, 27 Nov 2024 20:43:06 +0900 Subject: [PATCH 4/6] =?UTF-8?q?refactor(log-writer):=20jpa=20->=20jdbc?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/log-writer/build.gradle | 3 +-- .../log_writer/monitor/MonitorLogDAO.java | 24 +++++++++---------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/modules/infrastructure/log-writer/build.gradle b/modules/infrastructure/log-writer/build.gradle index ef4b6ec8..e2d956df 100644 --- a/modules/infrastructure/log-writer/build.gradle +++ b/modules/infrastructure/log-writer/build.gradle @@ -10,9 +10,8 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa:3.3.4' + implementation 'org.springframework.boot:spring-boot-starter-jdbc:3.3.4' runtimeOnly 'com.mysql:mysql-connector-j:8.3.0' - compileOnly 'jakarta.annotation:jakarta.annotation-api:2.1.1' testImplementation platform('org.junit:junit-bom:5.10.0') diff --git a/modules/infrastructure/log-writer/src/main/java/com/whoz_in/log_writer/monitor/MonitorLogDAO.java b/modules/infrastructure/log-writer/src/main/java/com/whoz_in/log_writer/monitor/MonitorLogDAO.java index bd3500aa..357f8e32 100644 --- a/modules/infrastructure/log-writer/src/main/java/com/whoz_in/log_writer/monitor/MonitorLogDAO.java +++ b/modules/infrastructure/log-writer/src/main/java/com/whoz_in/log_writer/monitor/MonitorLogDAO.java @@ -1,25 +1,23 @@ package com.whoz_in.log_writer.monitor; -import jakarta.persistence.EntityManager; -import jakarta.persistence.PersistenceContext; import java.util.Collection; -import org.springframework.data.jpa.repository.Modifying; +import lombok.RequiredArgsConstructor; +import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; @Repository +@RequiredArgsConstructor public class MonitorLogDAO { - @PersistenceContext - private EntityManager em; - @Modifying - @Transactional + private final JdbcTemplate jdbcTemplate; + public void upsertAll(Collection macs) { if (macs.isEmpty()) return; - StringBuilder sql = new StringBuilder("INSERT INTO monitor_log (mac, created_date, updated_date) VALUES "); - macs.forEach(mac -> sql.append(String.format("('%s', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),", mac))); - sql.setLength(sql.length() - 1); - sql.append(" ON DUPLICATE KEY UPDATE updated_date = CURRENT_TIMESTAMP"); - em.createNativeQuery(sql.toString()).executeUpdate(); + + String sql = "INSERT INTO monitor_log (mac, created_at, updated_at) VALUES (?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE updated_at = CURRENT_TIMESTAMP"; + jdbcTemplate.batchUpdate(sql, macs, macs.size(), + (ps, mac) -> ps.setString(1, mac)); } + + } From 700197f8a8a9af0911e39f882694cd98c5cfc2ab Mon Sep 17 00:00:00 2001 From: coco3x Date: Wed, 27 Nov 2024 20:49:13 +0900 Subject: [PATCH 5/6] =?UTF-8?q?remove(log-api):=20log-writer=EC=97=90=20?= =?UTF-8?q?=EC=A1=B4=EC=9E=AC=ED=95=B4=EC=95=BC=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/NonBlockingBufferedReader.java | 36 ------------------- 1 file changed, 36 deletions(-) delete mode 100644 modules/log-api/src/main/java/com/whoz_in/network_log/common/util/NonBlockingBufferedReader.java diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/common/util/NonBlockingBufferedReader.java b/modules/log-api/src/main/java/com/whoz_in/network_log/common/util/NonBlockingBufferedReader.java deleted file mode 100644 index 349b37b0..00000000 --- a/modules/log-api/src/main/java/com/whoz_in/network_log/common/util/NonBlockingBufferedReader.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.whoz_in.network_log.common.util; - -import java.io.BufferedReader; -import java.io.IOException; - -public class NonBlockingBufferedReader { - private final BufferedReader br; - private final StringBuilder buffer = new StringBuilder(); - - public NonBlockingBufferedReader(BufferedReader br) { - this.br = br; - } - - /* - 한 줄 단위의 데이터를 가져오며, 데이터가 없을경우 BufferedReader의 readLine과 다르게 블로킹되지 않고 null을 반환한다. - 처리할 데이터는 이 메서드가 실행되는 운영체제와 같은 운영체제에서 만들어진 데이터여야 한다. - */ - public String readLine() throws IOException { - while(true){ - int i = buffer.indexOf(System.lineSeparator()); - if (i != -1){ - String extracted = buffer.substring(0, i); - buffer.delete(0, i+1); - return extracted; - } - - if (!br.ready()) return null; - - int len = 1024; - char[] charsBuffer = new char[len]; - int readChars = br.read(charsBuffer, 0, len); - if (readChars == -1) return null; - buffer.append(charsBuffer, 0, readChars); - } - } -} \ No newline at end of file From de0872892ff1fab6232fc5bdf515dcdf497b5ffe Mon Sep 17 00:00:00 2001 From: coco3x Date: Wed, 27 Nov 2024 20:53:19 +0900 Subject: [PATCH 6/6] =?UTF-8?q?refactor:=20log-api=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EC=9D=98=20=EC=9D=B4=EB=A6=84=EC=9D=84=20network-api=EB=A1=9C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=ED=95=A9=EB=8B=88=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/{log-api => network-api}/build.gradle | 0 .../com/whoz_in/network_log/WhozInNetworkLogApplication.java | 0 .../java/com/whoz_in/network_log/common/util/HttpUtils.java | 0 .../java/com/whoz_in/network_log/common/util/IpHolder.java | 0 .../com/whoz_in/network_log/common/util/RequesterInfo.java | 0 .../java/com/whoz_in/network_log/config/WebMVCConfig.java | 0 .../network_log/config/interceptor/ClientIpInterceptor.java | 0 .../whoz_in/network_log/controller/IpAddressController.java | 0 modules/{log-api => network-api}/src/main/java/lombok.config | 0 .../src/main/resources/application.yml | 0 .../whoz_in/network_log/WhozInNetworkApplicationTests.java | 0 .../network_log/application/log/MdnsLogParserTest.java | 0 settings.gradle | 4 ++-- 13 files changed, 2 insertions(+), 2 deletions(-) rename modules/{log-api => network-api}/build.gradle (100%) rename modules/{log-api => network-api}/src/main/java/com/whoz_in/network_log/WhozInNetworkLogApplication.java (100%) rename modules/{log-api => network-api}/src/main/java/com/whoz_in/network_log/common/util/HttpUtils.java (100%) rename modules/{log-api => network-api}/src/main/java/com/whoz_in/network_log/common/util/IpHolder.java (100%) rename modules/{log-api => network-api}/src/main/java/com/whoz_in/network_log/common/util/RequesterInfo.java (100%) rename modules/{log-api => network-api}/src/main/java/com/whoz_in/network_log/config/WebMVCConfig.java (100%) rename modules/{log-api => network-api}/src/main/java/com/whoz_in/network_log/config/interceptor/ClientIpInterceptor.java (100%) rename modules/{log-api => network-api}/src/main/java/com/whoz_in/network_log/controller/IpAddressController.java (100%) rename modules/{log-api => network-api}/src/main/java/lombok.config (100%) rename modules/{log-api => network-api}/src/main/resources/application.yml (100%) rename modules/{log-api => network-api}/src/test/java/com/whoz_in/network_log/WhozInNetworkApplicationTests.java (100%) rename modules/{log-api => network-api}/src/test/java/com/whoz_in/network_log/application/log/MdnsLogParserTest.java (100%) diff --git a/modules/log-api/build.gradle b/modules/network-api/build.gradle similarity index 100% rename from modules/log-api/build.gradle rename to modules/network-api/build.gradle diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/WhozInNetworkLogApplication.java b/modules/network-api/src/main/java/com/whoz_in/network_log/WhozInNetworkLogApplication.java similarity index 100% rename from modules/log-api/src/main/java/com/whoz_in/network_log/WhozInNetworkLogApplication.java rename to modules/network-api/src/main/java/com/whoz_in/network_log/WhozInNetworkLogApplication.java diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/common/util/HttpUtils.java b/modules/network-api/src/main/java/com/whoz_in/network_log/common/util/HttpUtils.java similarity index 100% rename from modules/log-api/src/main/java/com/whoz_in/network_log/common/util/HttpUtils.java rename to modules/network-api/src/main/java/com/whoz_in/network_log/common/util/HttpUtils.java diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/common/util/IpHolder.java b/modules/network-api/src/main/java/com/whoz_in/network_log/common/util/IpHolder.java similarity index 100% rename from modules/log-api/src/main/java/com/whoz_in/network_log/common/util/IpHolder.java rename to modules/network-api/src/main/java/com/whoz_in/network_log/common/util/IpHolder.java diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/common/util/RequesterInfo.java b/modules/network-api/src/main/java/com/whoz_in/network_log/common/util/RequesterInfo.java similarity index 100% rename from modules/log-api/src/main/java/com/whoz_in/network_log/common/util/RequesterInfo.java rename to modules/network-api/src/main/java/com/whoz_in/network_log/common/util/RequesterInfo.java diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/config/WebMVCConfig.java b/modules/network-api/src/main/java/com/whoz_in/network_log/config/WebMVCConfig.java similarity index 100% rename from modules/log-api/src/main/java/com/whoz_in/network_log/config/WebMVCConfig.java rename to modules/network-api/src/main/java/com/whoz_in/network_log/config/WebMVCConfig.java diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/config/interceptor/ClientIpInterceptor.java b/modules/network-api/src/main/java/com/whoz_in/network_log/config/interceptor/ClientIpInterceptor.java similarity index 100% rename from modules/log-api/src/main/java/com/whoz_in/network_log/config/interceptor/ClientIpInterceptor.java rename to modules/network-api/src/main/java/com/whoz_in/network_log/config/interceptor/ClientIpInterceptor.java diff --git a/modules/log-api/src/main/java/com/whoz_in/network_log/controller/IpAddressController.java b/modules/network-api/src/main/java/com/whoz_in/network_log/controller/IpAddressController.java similarity index 100% rename from modules/log-api/src/main/java/com/whoz_in/network_log/controller/IpAddressController.java rename to modules/network-api/src/main/java/com/whoz_in/network_log/controller/IpAddressController.java diff --git a/modules/log-api/src/main/java/lombok.config b/modules/network-api/src/main/java/lombok.config similarity index 100% rename from modules/log-api/src/main/java/lombok.config rename to modules/network-api/src/main/java/lombok.config diff --git a/modules/log-api/src/main/resources/application.yml b/modules/network-api/src/main/resources/application.yml similarity index 100% rename from modules/log-api/src/main/resources/application.yml rename to modules/network-api/src/main/resources/application.yml diff --git a/modules/log-api/src/test/java/com/whoz_in/network_log/WhozInNetworkApplicationTests.java b/modules/network-api/src/test/java/com/whoz_in/network_log/WhozInNetworkApplicationTests.java similarity index 100% rename from modules/log-api/src/test/java/com/whoz_in/network_log/WhozInNetworkApplicationTests.java rename to modules/network-api/src/test/java/com/whoz_in/network_log/WhozInNetworkApplicationTests.java diff --git a/modules/log-api/src/test/java/com/whoz_in/network_log/application/log/MdnsLogParserTest.java b/modules/network-api/src/test/java/com/whoz_in/network_log/application/log/MdnsLogParserTest.java similarity index 100% rename from modules/log-api/src/test/java/com/whoz_in/network_log/application/log/MdnsLogParserTest.java rename to modules/network-api/src/test/java/com/whoz_in/network_log/application/log/MdnsLogParserTest.java diff --git a/settings.gradle b/settings.gradle index 241d1d66..4d22ddc6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,8 +1,8 @@ rootProject.name = 'whoz_in' include 'modules:api' findProject(':modules:api')?.name = 'api' -include 'modules:log-api' -findProject(':modules:log-api')?.name = 'log-api' +include 'modules:network-api' +findProject(':modules:network-api')?.name = 'network-api' include 'modules:domain' findProject(':modules:domain')?.name = 'domain' include 'modules:infrastructure:domain-jpa'