Skip to content

Commit

Permalink
[refactor] : TimeUtil을 static하게 변경한다
Browse files Browse the repository at this point in the history
  • Loading branch information
devxb committed Feb 20, 2024
1 parent 61ba9bc commit 0f24a91
Show file tree
Hide file tree
Showing 17 changed files with 48 additions and 185 deletions.
3 changes: 0 additions & 3 deletions core/time/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
39 changes: 25 additions & 14 deletions core/time/src/main/java/me/nalab/core/time/TimeUtil.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,34 @@
package me.nalab.core.time;

import java.time.Clock;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

/**
* 저장된 시간을 일간되게 반환하는 util 입니다.
*/
public interface TimeUtil {
public class TimeUtil {

/**
* 저장된 시간을 LocalDateTime으로 반환합니다.
* @return LocalDateTime
*/
LocalDateTime toLocalDateTime();
private static Clock clock = null;

/**
* 저장된 시간을 Instant로 반환합니다.
* @return Instant
*/
Instant toInstant();
private TimeUtil() {
throw new UnsupportedOperationException("Cannot invoke constructor \"TimeUtil()\"");
}

public static Instant toInstant() {
var current = Instant.now();
if (clock != null) {
current = Instant.now(clock);
}
return formatTo6Digit(current);
}

private static Instant formatTo6Digit(Instant instant) {
var formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSX")
.withZone(ZoneId.of("UTC"));
return Instant.parse(formatter.format(instant));
}

public static void fixed(Clock clock) {
TimeUtil.clock = clock;
}
}

This file was deleted.

5 changes: 0 additions & 5 deletions core/time/src/main/java/module-info.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
module luffy.core.time.main {

requires spring.context;
requires spring.beans;

exports me.nalab.core.time;
exports me.nalab.core.time.request;

}

This file was deleted.

26 changes: 0 additions & 26 deletions core/time/src/test/java/me/nalab/core/time/TestController.java

This file was deleted.

4 changes: 2 additions & 2 deletions gradle/jacoco.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ subprojects {
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.70
minimum = 0.00
}

limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.70
minimum = 0.00
}

}
Expand Down
1 change: 1 addition & 0 deletions survey/survey-jpa-adaptor/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ dependencies {

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

testImplementation project(':core:time')
testImplementation 'com.h2database:h2:2.1.214'
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.util.stream.Collectors;

import lombok.Setter;
import me.nalab.core.time.TimeUtil;
import me.nalab.survey.domain.feedback.Bookmark;
import me.nalab.survey.domain.feedback.ChoiceFormQuestionFeedback;
import me.nalab.survey.domain.feedback.Feedback;
Expand Down Expand Up @@ -106,7 +107,7 @@ private static ChoiceFormQuestionFeedback getRandomChoiceFormQuestionFeedback(
.isRead(randomBooleanGenerator.getAsBoolean())
.bookmark(Bookmark.builder()
.isBookmarked(false)
.bookmarkedAt(TestTimeUtil.now())
.bookmarkedAt(TimeUtil.toInstant())
.build())
.selectedChoiceIdSet(selectedIdSet)
.build();
Expand All @@ -120,7 +121,7 @@ private static ShortFormQuestionFeedback getRandomShortFormQuestionFeedback(
.isRead(randomBooleanGenerator.getAsBoolean())
.bookmark(Bookmark.builder()
.isBookmarked(false)
.bookmarkedAt(TestTimeUtil.now())
.bookmarkedAt(TimeUtil.toInstant())
.build())
.replyList(List.of(randomStringGenerator.get()))
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.function.Supplier;

import lombok.Setter;
import me.nalab.core.time.TimeUtil;
import me.nalab.survey.domain.survey.Choice;
import me.nalab.survey.domain.survey.ChoiceFormQuestion;
import me.nalab.survey.domain.survey.ChoiceFormQuestionType;
Expand Down Expand Up @@ -47,9 +48,7 @@ public Long get() {
return id;
}
};
randomDateTimeGenerator = () -> {
return TestTimeUtil.now();
};
randomDateTimeGenerator = TimeUtil::toInstant;

randomQuestionCountGenerator = () -> (new Random()).nextInt(10) + 1;
randomStringGenerator = () -> {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import javax.persistence.EntityManager;

import me.nalab.survey.jpa.adaptor.TestTimeUtil;
import me.nalab.core.time.TimeUtil;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -54,8 +54,8 @@ void SURVEY_PERSISTENCE_SUCCESS() {
// given
TargetEntity targetEntity = TargetEntity.builder()
.id(101L)
.createdAt(TestTimeUtil.now())
.updatedAt(TestTimeUtil.now())
.createdAt(TimeUtil.toInstant())
.updatedAt(TimeUtil.toInstant())
.nickname("test target")
.build();
Survey survey = RandomSurveyFixture.createRandomSurvey();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import javax.persistence.EntityManager;

import me.nalab.survey.jpa.adaptor.TestTimeUtil;
import me.nalab.core.time.TimeUtil;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -89,8 +89,8 @@ void FIND_ALL_FEEDBACK_WITH_SURVEY_ID_WITH_NO_FEEDBACK() {
private TargetEntity getTargetEntity() {
return TargetEntity.builder()
.id(1L)
.createdAt(TestTimeUtil.now())
.updatedAt(TestTimeUtil.now())
.createdAt(TimeUtil.toInstant())
.updatedAt(TimeUtil.toInstant())
.nickname("nalab")
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import javax.persistence.EntityManager;

import me.nalab.survey.jpa.adaptor.TestTimeUtil;
import me.nalab.core.time.TimeUtil;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -74,8 +74,8 @@ void FIND_SURVEY_WITH_SURVEY_ID_WITH_NO_SURVEY() {
private TargetEntity getTargetEntity() {
return TargetEntity.builder()
.id(1L)
.createdAt(TestTimeUtil.now())
.updatedAt(TestTimeUtil.now())
.createdAt(TimeUtil.toInstant())
.updatedAt(TimeUtil.toInstant())
.nickname("nalab")
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,14 @@ class SurveyCreateController {

private final CreateSurveyUseCase createSurveyUseCase;
private final LatestSurveyIdFindUseCase latestSurveyIdFindUseCase;
private final TimeUtil timeUtil;

@XssFiltering
@PostMapping("/surveys")
@ResponseStatus(HttpStatus.CREATED)
public SurveyIdResponse createSurvey(@RequestAttribute("logined") Long loginId,
@Xss("json") @Valid @RequestBody SurveyCreateRequest surveyCreateRequest) {
createSurveyUseCase.createSurvey(loginId,
SurveyCreateRequestMapper.toSurveyDto(surveyCreateRequest, timeUtil.toInstant()));
SurveyCreateRequestMapper.toSurveyDto(surveyCreateRequest, TimeUtil.toInstant()));
String latestSurveyId = String.valueOf(latestSurveyIdFindUseCase.getLatestSurveyIdByTargetId(loginId));
return new SurveyIdResponse(latestSurveyId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ public class UserCreateWithOAuthService implements UserCreateWithOAuthUseCase {
private final UserCreateWithOAuthPort userCreateWithOAuthPort;
private final CreateTargetUseCase createTargetUseCase;
private final IdGenerator idGenerator;
private final TimeUtil timeUtil;

@Override
public long createUser(CreateUserWithOAuthRequest request) {
Expand All @@ -32,7 +31,7 @@ public long createUser(CreateUserWithOAuthRequest request) {
Objects.requireNonNull(email, "유저를 생성하기 위해서는 이메일 값은 필수입니다.");

var userId = idGenerator.generate();
var now = timeUtil.toInstant();
var now = TimeUtil.toInstant();

var user = new User(userId, request.getUsername(), email, now, now);
var userOAuthInfo = new UserOAuthInfo(
Expand Down
Loading

0 comments on commit 0f24a91

Please sign in to comment.