Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor/컬럼명 수정 및 컨버터 추가 #78

Merged
merged 3 commits into from
May 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
package com.parkingcomestrue.parking.application.parking;

import com.parkingcomestrue.parking.application.SearchConditionMapper;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.FeeInfo;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.HolidayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.SaturdayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.WeekdayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse.ParkingResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingQueryRequest;
import com.parkingcomestrue.parking.application.parking.dto.ParkingSearchConditionRequest;
import com.parkingcomestrue.parking.application.review.ReviewService;
import com.parkingcomestrue.parking.application.review.dto.ReviewInfoResponse;
import com.parkingcomestrue.common.domain.favorite.Favorite;
import com.parkingcomestrue.common.domain.favorite.repository.FavoriteRepository;
import com.parkingcomestrue.common.domain.parking.Fee;
Expand All @@ -26,6 +14,18 @@
import com.parkingcomestrue.common.domain.parking.service.ParkingFilteringService;
import com.parkingcomestrue.common.domain.searchcondition.FeeType;
import com.parkingcomestrue.common.support.Association;
import com.parkingcomestrue.parking.application.SearchConditionMapper;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.FeeInfo;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.HolidayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.SaturdayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse.WeekdayOperatingTime;
import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingLotsResponse.ParkingResponse;
import com.parkingcomestrue.parking.application.parking.dto.ParkingQueryRequest;
import com.parkingcomestrue.parking.application.parking.dto.ParkingSearchConditionRequest;
import com.parkingcomestrue.parking.application.review.ReviewService;
import com.parkingcomestrue.parking.application.review.dto.ReviewInfoResponse;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -82,10 +82,10 @@ private List<Favorite> findMemberFavorites(Long memberId) {
private List<Parking> findParkingLotsByOrderCondition(String priority, ParkingQueryRequest parkingQueryRequest,
Location middleLocation) {
if (priority.equals(DISTANCE_ORDER_CONDITION)) {
return parkingRepository.findAroundParkingLotsOrderByDistance(middleLocation.getPoint(),
return parkingRepository.findAroundParkingLotsOrderByDistance(middleLocation.toPoint(),
parkingQueryRequest.getRadius());
}
return parkingRepository.findAroundParkingLots(middleLocation.getPoint(), parkingQueryRequest.getRadius());
return parkingRepository.findAroundParkingLots(middleLocation.toPoint(), parkingQueryRequest.getRadius());
}

private SearchingCondition toSearchingCondition(ParkingSearchConditionRequest request) {
Expand Down Expand Up @@ -166,7 +166,7 @@ private ParkingDetailInfoResponse toParkingResponse(ReviewInfoResponse reviews,
parking.getSpace().getCapacity(),
diffMinute,
parking.getBaseInformation().getTel(),
parking.getBaseInformation().getPayTypes().getDescription(),
parking.getBaseInformation().getPayTypesDescription(),
new WeekdayOperatingTime(
parking.getOperatingTime().getWeekdayBeginTime(),
parking.getOperatingTime().getWeekdayEndTime()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ private ParkingSearchConditionRequest defaultRequest() {
searchConditionMapper.getValues(OperationType.class),
searchConditionMapper.getValues(ParkingType.class),
NOT_FREE,
searchConditionMapper.getValues(PayType.class),
List.of(PayType.NO_INFO.getDescription()),
BASE_HOURS,
RECOMMEND_ORDER_CONDITION
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

import static org.junit.jupiter.api.Assertions.assertAll;

import com.parkingcomestrue.parking.application.ContainerTest;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse;
import com.parkingcomestrue.parking.application.review.dto.ReviewCreateRequest;
import com.parkingcomestrue.common.domain.member.Member;
import com.parkingcomestrue.common.domain.member.Password;
import com.parkingcomestrue.common.domain.parking.BaseInformation;
Expand All @@ -16,13 +13,16 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeInfo;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
import com.parkingcomestrue.common.domain.review.Content;
import com.parkingcomestrue.common.support.exception.DomainException;
import com.parkingcomestrue.common.support.exception.DomainExceptionInformation;
import com.parkingcomestrue.parking.application.ContainerTest;
import com.parkingcomestrue.parking.application.parking.dto.ParkingDetailInfoResponse;
import com.parkingcomestrue.parking.application.review.dto.ReviewCreateRequest;
import java.time.LocalTime;
import java.util.List;
import org.assertj.core.api.Assertions;
Expand All @@ -46,7 +46,7 @@ class ParkingServiceTest extends ContainerTest {
List<Parking> parkings = List.of(parking);
parkingService.saveAll(parkings);

Member member = new Member( "email", "하디", new Password("qwer1234"));
Member member = new Member("email", "하디", new Password("qwer1234"));
memberRepository.save(member);

ReviewCreateRequest reviewCreateRequest = new ReviewCreateRequest(
Expand All @@ -64,7 +64,7 @@ class ParkingServiceTest extends ContainerTest {
private Parking makeParking(String parkingName) {
return new Parking
(
new BaseInformation(parkingName, "010", "부산", PayTypes.DEFAULT, ParkingType.MECHANICAL,
new BaseInformation(parkingName, "010", "부산", List.of(PayType.NO_INFO), ParkingType.MECHANICAL,
OperationType.PRIVATE),
Location.of(30d, 30d),
Space.of(100, 30),
Expand All @@ -86,5 +86,4 @@ private Parking makeParking(String parkingName) {
Fee.from(50000))
);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeInfo;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
Expand Down Expand Up @@ -48,7 +48,7 @@ private BaseInformation getBaseInformation(final PusanPublicParkingResponse.Park
response.getParkingName(),
response.getTelephoneNumber(),
filterAddress(response),
PayTypes.DEFAULT,
List.of(PayType.NO_INFO),
ParkingType.find(response.getParkingTypeNM()),
OperationType.PUBLIC
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeInfo;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
Expand All @@ -33,20 +33,23 @@ public class SeoulPublicParkingAdapter {

public List<Parking> convert(SeoulPublicParkingResponse response) {
List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> rows = response.getParkingInfo().getRows();
List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> seoulCityParkingLots = calculateCapacity(filterByOperation(rows));
List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> seoulCityParkingLots = calculateCapacity(
filterByOperation(rows));

return seoulCityParkingLots.stream()
.map(this::toParking)
.toList();
}

private List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> filterByOperation(final List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> rows) {
private List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> filterByOperation(
final List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> rows) {
return rows.stream()
.filter(result -> TIMED_PARKING_RULES.contains(result.getOperationRule()))
.toList();
}

private List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> calculateCapacity(final List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> results) {
private List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> calculateCapacity(
final List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking> results) {
final Map<String, List<SeoulPublicParkingResponse.ParkingInfo.SeoulCityParking>> collect = results.stream()
.collect(Collectors.groupingBy(a -> a.getParkingCode()));

Expand Down Expand Up @@ -76,7 +79,7 @@ private BaseInformation getBaseInformation(final SeoulPublicParkingResponse.Park
response.getParkingName(),
response.getTel(),
response.getAddr(),
PayTypes.DEFAULT,
List.of(PayType.NO_INFO),
ParkingType.find(response.getParkingTypeNM()),
OperationType.PUBLIC
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.parkingcomestrue.fake;

import com.parkingcomestrue.external.parkingapi.ParkingApiService;
import com.parkingcomestrue.common.domain.parking.BaseInformation;
import com.parkingcomestrue.common.domain.parking.Fee;
import com.parkingcomestrue.common.domain.parking.FeePolicy;
Expand All @@ -10,9 +9,10 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
import com.parkingcomestrue.external.parkingapi.ParkingApiService;
import java.util.LinkedList;
import java.util.List;

Expand All @@ -34,7 +34,8 @@ public List<Parking> read() {
LinkedList<Parking> result = new LinkedList<>();
for (int i = 0; i < readSize; i++) {
Parking parking = new Parking(
new BaseInformation("not offer parking" + i, "051-000" + i, "부산시 어딘가 " + i, PayTypes.DEFAULT,
new BaseInformation("not offer parking" + i, "051-000" + i, "부산시 어딘가 " + i,
List.of(PayType.NO_INFO),
ParkingType.NO_INFO,
OperationType.PUBLIC),
Location.of("33.333" + i, "44.444" + i),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.parkingcomestrue.fake;

import com.parkingcomestrue.external.parkingapi.ParkingApiService;
import com.parkingcomestrue.common.domain.parking.BaseInformation;
import com.parkingcomestrue.common.domain.parking.Fee;
import com.parkingcomestrue.common.domain.parking.FeePolicy;
Expand All @@ -10,9 +9,10 @@
import com.parkingcomestrue.common.domain.parking.OperationType;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.domain.parking.ParkingType;
import com.parkingcomestrue.common.domain.parking.PayTypes;
import com.parkingcomestrue.common.domain.parking.PayType;
import com.parkingcomestrue.common.domain.parking.Space;
import com.parkingcomestrue.common.domain.parking.TimeUnit;
import com.parkingcomestrue.external.parkingapi.ParkingApiService;
import java.util.LinkedList;
import java.util.List;

Expand All @@ -34,7 +34,7 @@ public List<Parking> read() {
LinkedList<Parking> result = new LinkedList<>();
for (int i = 0; i < readSize; i++) {
Parking parking = new Parking(
new BaseInformation("offer parking" + i, "02-000" + i, "서울시 어딘가 " + i, PayTypes.DEFAULT,
new BaseInformation("offer parking" + i, "02-000" + i, "서울시 어딘가 " + i, List.of(PayType.NO_INFO),
ParkingType.NO_INFO,
OperationType.PUBLIC),
Location.of("11.111" + i, "22.222" + i),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
import com.parkingcomestrue.common.domain.AuditingEntity;
import com.parkingcomestrue.common.domain.member.Member;
import com.parkingcomestrue.common.domain.parking.Parking;
import com.parkingcomestrue.common.infra.converter.AssociationConverter;
import com.parkingcomestrue.common.support.Association;
import jakarta.persistence.AttributeOverride;
import jakarta.persistence.Column;
import jakarta.persistence.Embedded;
import jakarta.persistence.Convert;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
Expand All @@ -33,12 +32,10 @@ public class Favorite extends AuditingEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Embedded
@AttributeOverride(name = "id", column = @Column(name = "member_id"))
@Convert(converter = AssociationConverter.class)
private Association<Member> memberId;

@Embedded
@AttributeOverride(name = "id", column = @Column(name = "parking_id"))
@Convert(converter = AssociationConverter.class)
private Association<Parking> parkingId;

public Favorite(Association<Member> memberId, Association<Parking> parkingId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import static jakarta.persistence.EnumType.STRING;

import com.parkingcomestrue.common.infra.converter.PayTypeConverter;
import jakarta.persistence.Convert;
import jakarta.persistence.Embeddable;
import jakarta.persistence.Embedded;
import jakarta.persistence.Enumerated;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -15,20 +17,22 @@
@Embeddable
public class BaseInformation {

private static final String DELIMITER = ", ";

private String name;
private String tel;
private String address;

@Embedded
private PayTypes payTypes;
@Convert(converter = PayTypeConverter.class)
private List<PayType> payTypes;

@Enumerated(STRING)
private ParkingType parkingType;

@Enumerated(STRING)
private OperationType operationType;

public BaseInformation(String name, String tel, String address, PayTypes payTypes, ParkingType parkingType,
public BaseInformation(String name, String tel, String address, List<PayType> payTypes, ParkingType parkingType,
OperationType operationType) {
this.name = name;
this.tel = tel;
Expand All @@ -49,6 +53,24 @@ public boolean containsParkingType(List<ParkingType> parkingTypes) {
}

public boolean containsPayType(List<PayType> memberPayTypes) {
return this.payTypes.contains(memberPayTypes);
if (memberPayTypes.contains(PayType.NO_INFO)) {
return true;
}
return memberPayTypes.stream()
.anyMatch(payType -> this.payTypes.contains(payType));
}

public String getPayTypesDescription() {
return payTypes.stream()
.map(PayType::getDescription)
.sorted()
.collect(Collectors.joining(DELIMITER));
}

public String getPayTypesName() {
return payTypes.stream()
.map(PayType::name)
.sorted()
.collect(Collectors.joining(DELIMITER));
}
}
Loading
Loading