Skip to content

Commit

Permalink
Merge pull request #41 from JNU-econovation/refactor/38
Browse files Browse the repository at this point in the history
[REFACTOR] #38 #37
  • Loading branch information
inferior3x authored Nov 22, 2024
2 parents 2c7cb4f + 73d1506 commit 48279c5
Show file tree
Hide file tree
Showing 19 changed files with 52 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

import com.whoz_in.network_log.common.ApiResponse;
import com.whoz_in.network_log.common.util.RequesterInfo;
import com.whoz_in.network_log.controller.dto.MacResponse;
import com.whoz_in.network_log.domain.managed.repository.LogRepository;
import jakarta.servlet.http.HttpServletRequest;
import com.whoz_in.network_log.persistence.ManagedLogDAO;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -16,40 +14,23 @@
@RequiredArgsConstructor
public class MacAddressController {

private final LogRepository logRepository;
private final ManagedLogDAO managedLogDAO;
private final RequesterInfo requesterInfo;

@GetMapping("/mac")
public ApiResponse.SuccessBody<?> getMac() {
String ip = requesterInfo.getIp();
System.out.println("Requester Info : " + ip);

return ApiResponse.success(HttpStatus.OK, "조회 성공", new MacResponse(logRepository.findByIp(ip).getLogId().getMac()));
return ApiResponse.success(HttpStatus.OK, "조회 성공", managedLogDAO.findByIp(ip).getLogId().getMac());
}

@GetMapping("/macs")
public ApiResponse.SuccessBody<?> getMacs(){
String ip = requesterInfo.getIp();
System.out.println("Requester Info : " + ip);

return ApiResponse.success(HttpStatus.OK, "조회 성공", logRepository.findAllByIp(ip).stream().map(log->log.getLogId().getMac()).toList());
return ApiResponse.success(HttpStatus.OK, "조회 성공", managedLogDAO.findAllByIp(ip).stream().map(log->log.getLogId().getMac()).toList());
}

@GetMapping("/ip")
public String getClientIp(HttpServletRequest request) {
String xForwardedFor = request.getHeader("X-Forwarded-For");
String httpXForwardedFor = request.getHeader("HTTP-X-Forwarded-For");
String httpXForwardedFor2 = request.getHeader("HTTP_X_Forwarded_For");
String xRealIp = request.getHeader("X-Real-IP");
String remoteAddr = request.getRemoteAddr();

StringBuilder result = new StringBuilder();
result.append("X-Forwarded-For: ").append(xForwardedFor).append("\n");
result.append("HTTP-X-Forwarded-For: ").append(httpXForwardedFor).append("\n");
result.append("HTTP-X-Forwarded-For2: ").append(httpXForwardedFor2).append("\n");
result.append("X-Real-IP: ").append(xRealIp).append("\n");
result.append("RemoteAddr: ").append(remoteAddr).append("\n");

return result.toString();
}
}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.whoz_in.network_log.domain.managed;
package com.whoz_in.network_log.infra.managed.mdns;

import lombok.Builder;
import lombok.EqualsAndHashCode;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.whoz_in.network_log.domain.managed;
package com.whoz_in.network_log.infra.managed.mdns;

import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.whoz_in.network_log.domain.managed.collector;
package com.whoz_in.network_log.infra.managed.mdns.collector;

import com.whoz_in.network_log.domain.managed.manager.MulticastDNSLogManager;
import jakarta.annotation.PostConstruct;
import com.whoz_in.network_log.infra.managed.mdns.manager.MulticastDNSLogManager;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.whoz_in.network_log.domain.managed.manager;
package com.whoz_in.network_log.infra.managed.mdns.manager;

import java.util.Set;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package com.whoz_in.network_log.domain.managed.manager;
package com.whoz_in.network_log.infra.managed.mdns.manager;

import com.whoz_in.network_log.domain.managed.LogDTO;
import com.whoz_in.network_log.domain.managed.ManagedConfig;
import com.whoz_in.network_log.domain.managed.collector.LogProcess;
import com.whoz_in.network_log.domain.managed.parser.LogParser;
import com.whoz_in.network_log.domain.managed.repository.LogRepository;
import com.whoz_in.network_log.domain.managed.ManagedLog;
import com.whoz_in.network_log.infra.managed.mdns.LogDTO;
import com.whoz_in.network_log.infra.managed.mdns.ManagedConfig;
import com.whoz_in.network_log.infra.managed.mdns.collector.LogProcess;
import com.whoz_in.network_log.infra.managed.mdns.parser.LogParser;
import com.whoz_in.network_log.persistence.ManagedLogDAO;
import com.whoz_in.network_log.persistence.ManagedLog;
import jakarta.annotation.PostConstruct;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Objects;
import java.util.Set;
Expand All @@ -25,15 +24,15 @@ public class MulticastDNSLogManager implements LogManager {
// TODO: 올바른 wifi에 연결 됐는지 확인 해야 함
// TODO: 모니터 모드인지 확인 해야 함

private final LogRepository logRepository;
private final ManagedLogDAO managedLogDAO;
private final LogParser logParser;
private final Set<LogDTO> logs = Collections.newSetFromMap(new ConcurrentHashMap<>()); // 동시성에 최적화된 Set
private final ManagedConfig config;

public MulticastDNSLogManager(LogRepository logRepository,
public MulticastDNSLogManager(ManagedLogDAO managedLogDAO,
LogParser logParser,
ManagedConfig config) {
this.logRepository = logRepository;
this.managedLogDAO = managedLogDAO;
this.logParser = logParser;
this.config = config;
}
Expand Down Expand Up @@ -74,7 +73,7 @@ private void saveLogs() {
System.out.println("[managed] 저장할 로그 개수 : " + this.logs.size());
Set<ManagedLog> entities = this.logs.stream().map(ManagedLog::create).collect(Collectors.toSet());

logRepository.bulkInsert(entities);
managedLogDAO.bulkInsert(entities);
this.logs.clear();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.whoz_in.network_log.domain.managed.parser;
package com.whoz_in.network_log.infra.managed.mdns.parser;

import com.whoz_in.network_log.domain.managed.LogDTO;
import java.util.HashMap;
import java.util.Map;
import lombok.extern.java.Log;
import com.whoz_in.network_log.infra.managed.mdns.LogDTO;
import org.springframework.stereotype.Component;

// TODO: 테스트하기
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.whoz_in.network_log.infra.managed.mdns.parser;

import com.whoz_in.network_log.infra.managed.mdns.LogDTO;

public interface LogParser {

LogDTO parse(String log);

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.whoz_in.network_log.domain.monitor;
package com.whoz_in.network_log.infra.monitor;

import java.io.IOException;
import org.springframework.beans.factory.annotation.Value;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.whoz_in.network_log.domain.monitor;
package com.whoz_in.network_log.infra.monitor;

import com.whoz_in.network_log.persistence.MonitorLogDAO;
import jakarta.annotation.PostConstruct;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashSet;
import java.util.Set;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -41,7 +44,8 @@ private void processLogs() {

@Scheduled(fixedRate = 10000)
public void saveLogs(){
System.out.println("[monitor] 저장할 mac 개수: " + macs.size());
System.out.println("[monitor] 저장할 mac 개수: " + macs.size() + " - " +
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
repo.upsertAll(macs);
macs.clear();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.whoz_in.network_log.domain.managed;
package com.whoz_in.network_log.persistence;

import com.whoz_in.network_log.common.BaseEntity;
import com.whoz_in.network_log.infra.managed.mdns.LogDTO;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import jakarta.persistence.EmbeddedId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
package com.whoz_in.network_log.domain.managed.adaptor;
package com.whoz_in.network_log.persistence;

import com.whoz_in.network_log.domain.managed.LogDTO;
import com.whoz_in.network_log.domain.managed.repository.LogJpaRepository;
import com.whoz_in.network_log.domain.managed.repository.LogRepository;
import com.whoz_in.network_log.domain.managed.ManagedLog;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
Expand All @@ -20,24 +14,17 @@
@Component
@RequiredArgsConstructor
@Slf4j
public class LogAdaptor implements LogRepository {

private final LogJpaRepository logJpaRepository;
public class ManagedLogDAO {

private final JdbcTemplate jdbcTemplate;
private final ManagedLogRepository managedLogRepository;

@Override
public void saveAll(Collection<ManagedLog> logs) {
logJpaRepository.saveAll(logs);
}
private final JdbcTemplate jdbcTemplate;

@Override
public ManagedLog findByIp(String ip) {
return logJpaRepository.findByIp(ip)
return managedLogRepository.findByIp(ip)
.orElseThrow(() -> new RuntimeException(String.format("IP 존재하지 않음 : %s", ip)));
}

@Override
public void bulkInsert(Collection<ManagedLog> logs) {
// TODO: Bulk Insert 구현
if(logs.size() > 0) {
Expand Down Expand Up @@ -79,13 +66,7 @@ public int getBatchSize() {
});
}

@Override
public void save(ManagedLog log) {
logJpaRepository.save(log);
}

@Override
public List<ManagedLog> findAllByIp(String ip) {
return logJpaRepository.findAllByIp(ip);
return managedLogRepository.findAllByIp(ip);
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.whoz_in.network_log.domain.managed.repository;
package com.whoz_in.network_log.persistence;

import com.whoz_in.network_log.domain.managed.ManagedLog;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface LogJpaRepository extends JpaRepository<ManagedLog, String> {
public interface ManagedLogRepository extends JpaRepository<ManagedLog, String> {

@Query("SELECT log FROM ManagedLog log WHERE log.logId.ip=:ip ORDER BY log.updatedDate DESC LIMIT 1")
Optional<ManagedLog> findByIp(@Param("ip") String ip);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.whoz_in.network_log.domain.monitor;
package com.whoz_in.network_log.persistence;


import com.whoz_in.network_log.common.BaseEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.whoz_in.network_log.domain.monitor;
package com.whoz_in.network_log.persistence;

import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
Expand All @@ -14,7 +14,7 @@ public class MonitorLogDAO {

@Modifying
@Transactional
void upsertAll(Set<String> macs) {
public void upsertAll(Set<String> 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)));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.whoz_in.network_log.application.log;

import com.whoz_in.network_log.domain.managed.parser.DefaultLogParser;
import com.whoz_in.network_log.infra.managed.mdns.parser.DefaultLogParser;
import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
Expand Down

0 comments on commit 48279c5

Please sign in to comment.