Skip to content

Commit b58096f

Browse files
author
github-actions
committed
chore: Java 스타일 수정
1 parent d1baed3 commit b58096f

File tree

7 files changed

+65
-57
lines changed

7 files changed

+65
-57
lines changed

backend/src/main/java/io/f1/backend/domain/stat/app/StatKafkaConsumer.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.f1.backend.domain.stat.app;
22

3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
35
import io.f1.backend.domain.stat.dao.StatBatchRepository;
46
import io.f1.backend.domain.stat.dto.StatChangeEvent;
57

@@ -10,8 +12,6 @@
1012
import org.springframework.stereotype.Component;
1113
import org.springframework.transaction.annotation.Transactional;
1214

13-
import com.fasterxml.jackson.databind.ObjectMapper;
14-
1515
import java.util.ArrayList;
1616
import java.util.List;
1717

@@ -27,18 +27,18 @@ public class StatKafkaConsumer {
2727
@KafkaListener(topics = "stat-changes")
2828
public void handleStatChanges(List<String> messages) {
2929
log.info("Received {} messages from Kafka", messages.size());
30-
30+
3131
try {
3232
// JSON 문자열을 StatChangeEvent 객체로 변환
3333
List<StatChangeEvent> events = new ArrayList<>();
3434
for (String message : messages) {
3535
StatChangeEvent event = objectMapper.readValue(message, StatChangeEvent.class);
3636
events.add(event);
3737
}
38-
38+
3939
log.info("Processing {} stat change events", events.size());
4040
statBatchRepository.batchUpdateStats(events);
41-
41+
4242
} catch (Exception e) {
4343
log.error("Failed to process stat change events", e);
4444
throw new RuntimeException("Failed to process stat change events", e);

backend/src/main/java/io/f1/backend/domain/stat/dao/StatBatchRepository.java

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package io.f1.backend.domain.stat.dao;
22

33
import io.f1.backend.domain.stat.dto.StatChangeEvent;
4+
45
import lombok.RequiredArgsConstructor;
56
import lombok.extern.slf4j.Slf4j;
7+
68
import org.springframework.jdbc.core.JdbcTemplate;
79
import org.springframework.stereotype.Repository;
810

@@ -21,13 +23,9 @@ public void batchUpdateStats(List<StatChangeEvent> events) {
2123
return;
2224
}
2325

24-
List<StatChangeEvent> winEvents = events.stream()
25-
.filter(StatChangeEvent::isWin)
26-
.toList();
27-
28-
List<StatChangeEvent> loseEvents = events.stream()
29-
.filter(e -> !e.isWin())
30-
.toList();
26+
List<StatChangeEvent> winEvents = events.stream().filter(StatChangeEvent::isWin).toList();
27+
28+
List<StatChangeEvent> loseEvents = events.stream().filter(e -> !e.isWin()).toList();
3129

3230
if (!winEvents.isEmpty()) {
3331
batchUpdateWinStats(winEvents);
@@ -39,46 +37,51 @@ public void batchUpdateStats(List<StatChangeEvent> events) {
3937
}
4038

4139
private void batchUpdateWinStats(List<StatChangeEvent> events) {
42-
StringBuilder sql = new StringBuilder("""
43-
UPDATE stat SET
44-
total_games = total_games + 1,
45-
winning_games = winning_games + 1,
46-
score = score + CASE user_id
47-
""");
40+
StringBuilder sql =
41+
new StringBuilder(
42+
"""
43+
UPDATE stat SET
44+
total_games = total_games + 1,
45+
winning_games = winning_games + 1,
46+
score = score + CASE user_id
47+
""");
4848

4949
for (StatChangeEvent event : events) {
5050
sql.append(String.format("WHEN %d THEN %d ", event.getUserId(), event.getDeltaScore()));
5151
}
52-
52+
5353
sql.append("END WHERE user_id IN (");
54-
sql.append(events.stream()
55-
.map(e -> String.valueOf(e.getUserId()))
56-
.collect(Collectors.joining(",")));
54+
sql.append(
55+
events.stream()
56+
.map(e -> String.valueOf(e.getUserId()))
57+
.collect(Collectors.joining(",")));
5758
sql.append(")");
5859

5960
int updatedRows = jdbcTemplate.update(sql.toString());
6061
log.debug("Batch updated {} win stats", updatedRows);
6162
}
6263

6364
private void batchUpdateLoseStats(List<StatChangeEvent> events) {
64-
StringBuilder sql = new StringBuilder("""
65-
UPDATE stat SET
66-
total_games = total_games + 1,
67-
score = score + CASE user_id
68-
""");
65+
StringBuilder sql =
66+
new StringBuilder(
67+
"""
68+
UPDATE stat SET
69+
total_games = total_games + 1,
70+
score = score + CASE user_id
71+
""");
6972

7073
for (StatChangeEvent event : events) {
7174
sql.append(String.format("WHEN %d THEN %d ", event.getUserId(), event.getDeltaScore()));
7275
}
73-
76+
7477
sql.append("END WHERE user_id IN (");
75-
sql.append(events.stream()
76-
.map(e -> String.valueOf(e.getUserId()))
77-
.collect(Collectors.joining(",")));
78+
sql.append(
79+
events.stream()
80+
.map(e -> String.valueOf(e.getUserId()))
81+
.collect(Collectors.joining(",")));
7882
sql.append(")");
7983

8084
int updatedRows = jdbcTemplate.update(sql.toString());
8185
log.debug("Batch updated {} lose stats", updatedRows);
8286
}
8387
}
84-

backend/src/main/java/io/f1/backend/domain/stat/dto/StatChangeEvent.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,12 @@
66
@Getter
77
@Builder
88
public class StatChangeEvent {
9-
9+
1010
private Long userId;
1111
private boolean win;
1212
private int deltaScore;
13-
13+
1414
public static StatChangeEvent of(Long userId, boolean win, int deltaScore) {
15-
return StatChangeEvent.builder()
16-
.userId(userId)
17-
.win(win)
18-
.deltaScore(deltaScore)
19-
.build();
15+
return StatChangeEvent.builder().userId(userId).win(win).deltaScore(deltaScore).build();
2016
}
2117
}
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.f1.backend.global.config;
22

3+
import lombok.RequiredArgsConstructor;
4+
35
import org.springframework.boot.autoconfigure.kafka.KafkaProperties;
46
import org.springframework.context.annotation.Bean;
57
import org.springframework.context.annotation.Configuration;
@@ -9,8 +11,6 @@
911
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
1012
import org.springframework.kafka.listener.ContainerProperties;
1113

12-
import lombok.RequiredArgsConstructor;
13-
1414
@EnableKafka
1515
@Configuration
1616
@RequiredArgsConstructor
@@ -20,16 +20,16 @@ public class KafkaConfig {
2020

2121
@Bean
2222
public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() {
23-
ConcurrentKafkaListenerContainerFactory<String, String> factory =
24-
new ConcurrentKafkaListenerContainerFactory<>();
23+
ConcurrentKafkaListenerContainerFactory<String, String> factory =
24+
new ConcurrentKafkaListenerContainerFactory<>();
25+
26+
ConsumerFactory<String, String> consumerFactory =
27+
new DefaultKafkaConsumerFactory<>(kafkaProperties.buildConsumerProperties());
2528

26-
ConsumerFactory<String, String> consumerFactory =
27-
new DefaultKafkaConsumerFactory<>(kafkaProperties.buildConsumerProperties());
28-
2929
factory.setConsumerFactory(consumerFactory);
3030
factory.getContainerProperties().setAckMode(ContainerProperties.AckMode.BATCH);
3131
factory.setBatchListener(true);
32-
32+
3333
return factory;
3434
}
3535
}

backend/src/main/java/io/f1/backend/global/util/kafka/KafkaProducer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package io.f1.backend.global.util.kafka;
22

3-
import org.springframework.kafka.core.KafkaTemplate;
4-
import org.springframework.stereotype.Component;
53
import com.fasterxml.jackson.core.JsonProcessingException;
64
import com.fasterxml.jackson.databind.ObjectMapper;
75

86
import lombok.RequiredArgsConstructor;
97
import lombok.extern.slf4j.Slf4j;
108

9+
import org.springframework.kafka.core.KafkaTemplate;
10+
import org.springframework.stereotype.Component;
11+
1112
@Slf4j
1213
@Component
1314
@RequiredArgsConstructor

backend/src/test/java/io/f1/backend/domain/stat/KafkaStatTest.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
import io.f1.backend.domain.user.dao.UserRepository;
1212
import io.f1.backend.global.config.KafkaTestContainerConfig;
1313
import io.f1.backend.global.util.kafka.KafkaProducer;
14+
1415
import org.awaitility.Awaitility;
1516
import org.junit.jupiter.api.DisplayName;
1617
import org.junit.jupiter.api.Test;
1718
import org.springframework.beans.factory.annotation.Autowired;
1819
import org.springframework.boot.test.context.SpringBootTest;
1920
import org.springframework.context.annotation.Import;
21+
2022
import java.time.Duration;
2123

2224
@DBRider
@@ -34,7 +36,8 @@ class KafkaStatTest {
3436
void kafkaConsumerProcessesGameResultAsynchronously() throws Exception {
3537
// given
3638
long userId = 1L;
37-
StatWithUserSummary originalStat = statJpaRepository.findStatWithUserSummary(userId).orElseThrow(AssertionError::new);
39+
StatWithUserSummary originalStat =
40+
statJpaRepository.findStatWithUserSummary(userId).orElseThrow(AssertionError::new);
3841

3942
int deltaScore = 100;
4043
StatChangeEvent event = StatChangeEvent.of(userId, true, deltaScore);
@@ -47,15 +50,20 @@ void kafkaConsumerProcessesGameResultAsynchronously() throws Exception {
4750
.until(() -> isStatUpdated(userId, originalStat.score() + deltaScore));
4851

4952
// then
50-
StatWithUserSummary updatedStat = statJpaRepository.findStatWithUserSummary(userId).orElseThrow(AssertionError::new);
53+
StatWithUserSummary updatedStat =
54+
statJpaRepository.findStatWithUserSummary(userId).orElseThrow(AssertionError::new);
5155
assertThat(updatedStat.score()).isEqualTo(originalStat.score() + deltaScore);
5256
assertThat(updatedStat.totalGames()).isEqualTo(originalStat.totalGames() + 1);
5357
assertThat(updatedStat.winningGames()).isEqualTo(originalStat.winningGames() + 1);
5458
}
5559

5660
private boolean isStatUpdated(long userId, long expectedScore) {
5761
try {
58-
return statJpaRepository.findStatWithUserSummary(userId).orElseThrow(AssertionError::new).score() == expectedScore;
62+
return statJpaRepository
63+
.findStatWithUserSummary(userId)
64+
.orElseThrow(AssertionError::new)
65+
.score()
66+
== expectedScore;
5967
} catch (Exception e) {
6068
return false;
6169
}

backend/src/test/java/io/f1/backend/global/config/KafkaTestContainerConfig.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66
import org.testcontainers.kafka.ConfluentKafkaContainer;
77
import org.testcontainers.utility.DockerImageName;
88

9-
109
@Testcontainers
1110
@TestConfiguration
1211
public class KafkaTestContainerConfig {
1312

1413
@Container
1514
public static ConfluentKafkaContainer kafkaContainer =
16-
new ConfluentKafkaContainer(
17-
DockerImageName.parse("confluentinc/cp-kafka:7.6.1"))
18-
.withExposedPorts(9092);
15+
new ConfluentKafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:7.6.1"))
16+
.withExposedPorts(9092);
1917

2018
static {
2119
kafkaContainer.start();
22-
System.setProperty("spring.kafka.bootstrap-servers", kafkaContainer.getHost() + ":" + kafkaContainer.getMappedPort(9092));
20+
System.setProperty(
21+
"spring.kafka.bootstrap-servers",
22+
kafkaContainer.getHost() + ":" + kafkaContainer.getMappedPort(9092));
2323
}
2424
}

0 commit comments

Comments
 (0)