Skip to content

Commit

Permalink
feat: #67 음향 장비 목록 조회 API 필터 조건 추가
Browse files Browse the repository at this point in the history
Wo-ogie committed Mar 12, 2024
1 parent 6def70a commit 753678e
Showing 9 changed files with 136 additions and 74 deletions.
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@
import com.ajou.hertz.domain.instrument.dto.ElectricGuitarDto;
import com.ajou.hertz.domain.instrument.dto.request.AcousticAndClassicGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AmplifierFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AudioEquipmentFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.BassGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.CreateNewAcousticAndClassicGuitarRequest;
import com.ajou.hertz.domain.instrument.dto.request.CreateNewAmplifierRequest;
@@ -222,7 +223,7 @@ public Page<AudioEquipmentResponse> findAudioEquipmentsV1(
@Parameter(
description = "정렬 기준"
) @RequestParam InstrumentSortOption sort,
@ParameterObject @Valid @ModelAttribute InstrumentFilterConditions filterConditions
@ParameterObject @Valid @ModelAttribute AudioEquipmentFilterConditions filterConditions
) {
return instrumentQueryService
.findAudioEquipments(page, size, sort, filterConditions)
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.ajou.hertz.domain.instrument.dto.request;

import com.ajou.hertz.domain.instrument.constant.AudioEquipmentType;
import com.ajou.hertz.domain.instrument.constant.InstrumentProgressStatus;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@NoArgsConstructor(access = AccessLevel.PRIVATE)
@Setter // for @ModelAttribute
@Getter
public class AudioEquipmentFilterConditions extends InstrumentFilterConditions {

private AudioEquipmentType type;

private AudioEquipmentFilterConditions(
InstrumentProgressStatus progress,
String sido,
String sgg,
AudioEquipmentType type
) {
super(progress, sido, sgg);
this.type = type;
}
}
Original file line number Diff line number Diff line change
@@ -5,10 +5,10 @@
import com.ajou.hertz.domain.instrument.constant.InstrumentSortOption;
import com.ajou.hertz.domain.instrument.dto.request.AcousticAndClassicGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AmplifierFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AudioEquipmentFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.BassGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.EffectorFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.ElectricGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.InstrumentFilterConditions;
import com.ajou.hertz.domain.instrument.entity.AcousticAndClassicGuitar;
import com.ajou.hertz.domain.instrument.entity.Amplifier;
import com.ajou.hertz.domain.instrument.entity.AudioEquipment;
@@ -39,6 +39,6 @@ Page<Amplifier> findAmplifiers(
);

Page<AudioEquipment> findAudioEquipments(
int page, int pageSize, InstrumentSortOption sort, InstrumentFilterConditions filterConditions
int page, int pageSize, InstrumentSortOption sort, AudioEquipmentFilterConditions filterConditions
);
}
Original file line number Diff line number Diff line change
@@ -2,10 +2,10 @@

import static com.ajou.hertz.domain.instrument.entity.QAcousticAndClassicGuitar.*;
import static com.ajou.hertz.domain.instrument.entity.QAmplifier.*;
import static com.ajou.hertz.domain.instrument.entity.QAudioEquipment.*;
import static com.ajou.hertz.domain.instrument.entity.QBassGuitar.*;
import static com.ajou.hertz.domain.instrument.entity.QEffector.*;
import static com.ajou.hertz.domain.instrument.entity.QElectricGuitar.*;
import static com.ajou.hertz.domain.instrument.entity.QInstrument.*;
import static com.ajou.hertz.domain.user.entity.QUser.*;

import java.util.ArrayList;
@@ -24,6 +24,7 @@
import com.ajou.hertz.domain.instrument.constant.AmplifierBrand;
import com.ajou.hertz.domain.instrument.constant.AmplifierType;
import com.ajou.hertz.domain.instrument.constant.AmplifierUsage;
import com.ajou.hertz.domain.instrument.constant.AudioEquipmentType;
import com.ajou.hertz.domain.instrument.constant.BassGuitarBrand;
import com.ajou.hertz.domain.instrument.constant.BassGuitarPickUp;
import com.ajou.hertz.domain.instrument.constant.BassGuitarPreAmplifier;
@@ -36,10 +37,10 @@
import com.ajou.hertz.domain.instrument.constant.InstrumentSortOption;
import com.ajou.hertz.domain.instrument.dto.request.AcousticAndClassicGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AmplifierFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AudioEquipmentFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.BassGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.EffectorFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.ElectricGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.InstrumentFilterConditions;
import com.ajou.hertz.domain.instrument.entity.AcousticAndClassicGuitar;
import com.ajou.hertz.domain.instrument.entity.Amplifier;
import com.ajou.hertz.domain.instrument.entity.AudioEquipment;
@@ -228,39 +229,26 @@ public Page<AudioEquipment> findAudioEquipments(
int page,
int pageSize,
InstrumentSortOption sort,
InstrumentFilterConditions filterConditions
) {
return findInstrumentsByClassType(AudioEquipment.class, page, pageSize, sort, filterConditions);
}

private <T extends Instrument> Page<T> findInstrumentsByClassType(
Class<T> classType,
int page,
int pageSize,
InstrumentSortOption sort,
InstrumentFilterConditions filterConditions
AudioEquipmentFilterConditions filterConditions
) {
PageRequest pageable = PageRequest.of(page, pageSize, sort.toSort());

List<Predicate> conditions = new ArrayList<>();
conditions.add(instrument.instanceOf(classType));
List<Predicate> conditions =
new ArrayList<>(convertAudioEquipmentFilterConditionsToPredicates(filterConditions));

List<T> content = queryFactory
.selectFrom(instrument)
.join(instrument.seller, user).fetchJoin()
List<AudioEquipment> content = queryFactory
.selectFrom(audioEquipment)
.join(audioEquipment.seller, user).fetchJoin()
.where(conditions.toArray(Predicate[]::new))
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.orderBy(convertSortToOrderSpecifiers(pageable.getSort(), createPathBuilder(instrument)))
.fetch()
.stream()
.map(classType::cast)
.toList();
.orderBy(convertSortToOrderSpecifiers(pageable.getSort(), createPathBuilder(audioEquipment)))
.fetch();

long totalCount = Optional.ofNullable(
queryFactory.select(instrument.count())
.from(instrument)
.join(instrument.seller, user)
queryFactory.select(audioEquipment.count())
.from(audioEquipment)
.join(audioEquipment.seller, user)
.where(conditions.toArray(Predicate[]::new))
.fetchOne()
).orElse(0L);
@@ -313,9 +301,9 @@ private List<Predicate> convertAcousticAndClassicGuitarFilterConditionsToPredica
AcousticAndClassicGuitarFilterConditions filterConditions
) {
List<Predicate> res = new ArrayList<>();
res.add(applyProgressStatusCondition(filterConditions.getProgress(), bassGuitar.progressStatus));
res.add(applyTradeAddressSidoCondition(filterConditions.getSido(), bassGuitar.tradeAddress.sido));
res.add(applyTradeAddressSggCondition(filterConditions.getSgg(), bassGuitar.tradeAddress.sgg));
res.add(applyProgressStatusCondition(filterConditions.getProgress(), acousticAndClassicGuitar.progressStatus));
res.add(applyTradeAddressSidoCondition(filterConditions.getSido(), acousticAndClassicGuitar.tradeAddress.sido));
res.add(applyTradeAddressSggCondition(filterConditions.getSgg(), acousticAndClassicGuitar.tradeAddress.sgg));
res.add(applyAcousticAndClassicGuitarBrandCondition(filterConditions.getBrand()));
res.add(applyAcousticAndClassicGuitarModelCondition(filterConditions.getModel()));
res.add(applyAcousticAndClassicGuitarWood(filterConditions.getWood()));
@@ -327,9 +315,9 @@ private List<Predicate> convertEffectorFilterConditionsToPredicates(
EffectorFilterConditions filterConditions
) {
List<Predicate> res = new ArrayList<>();
res.add(applyProgressStatusCondition(filterConditions.getProgress(), bassGuitar.progressStatus));
res.add(applyTradeAddressSidoCondition(filterConditions.getSido(), bassGuitar.tradeAddress.sido));
res.add(applyTradeAddressSggCondition(filterConditions.getSgg(), bassGuitar.tradeAddress.sgg));
res.add(applyProgressStatusCondition(filterConditions.getProgress(), effector.progressStatus));
res.add(applyTradeAddressSidoCondition(filterConditions.getSido(), effector.tradeAddress.sido));
res.add(applyTradeAddressSggCondition(filterConditions.getSgg(), effector.tradeAddress.sgg));
res.add(applyEffectorTypeCondition(filterConditions.getType()));
res.add(applyEffectorFeatureCondition(filterConditions.getFeature()));
return res;
@@ -339,15 +327,26 @@ private List<Predicate> convertAmplifierFilterConditionsToPredicates(
AmplifierFilterConditions filterConditions
) {
List<Predicate> res = new ArrayList<>();
res.add(applyProgressStatusCondition(filterConditions.getProgress(), bassGuitar.progressStatus));
res.add(applyTradeAddressSidoCondition(filterConditions.getSido(), bassGuitar.tradeAddress.sido));
res.add(applyTradeAddressSggCondition(filterConditions.getSgg(), bassGuitar.tradeAddress.sgg));
res.add(applyProgressStatusCondition(filterConditions.getProgress(), amplifier.progressStatus));
res.add(applyTradeAddressSidoCondition(filterConditions.getSido(), amplifier.tradeAddress.sido));
res.add(applyTradeAddressSggCondition(filterConditions.getSgg(), amplifier.tradeAddress.sgg));
res.add(applyAmplifierTypeCondition(filterConditions.getType()));
res.add(applyAmplifierBrandCondition(filterConditions.getBrand()));
res.add(applyAmplifierUsageCondition(filterConditions.getUsage()));
return res;
}

private List<Predicate> convertAudioEquipmentFilterConditionsToPredicates(
AudioEquipmentFilterConditions filterConditions
) {
List<Predicate> res = new ArrayList<>();
res.add(applyProgressStatusCondition(filterConditions.getProgress(), audioEquipment.progressStatus));
res.add(applyTradeAddressSidoCondition(filterConditions.getSido(), audioEquipment.tradeAddress.sido));
res.add(applyTradeAddressSggCondition(filterConditions.getSgg(), audioEquipment.tradeAddress.sgg));
res.add(applyAudioEquipmentTypeCondition(filterConditions.getType()));
return res;
}

private BooleanExpression applyProgressStatusCondition(
InstrumentProgressStatus progressStatus,
EnumPath<InstrumentProgressStatus> progressStatusExpression
@@ -423,6 +422,10 @@ private BooleanExpression applyAmplifierUsageCondition(AmplifierUsage usage) {
return createCondition(usage, amplifier.usage);
}

private BooleanExpression applyAudioEquipmentTypeCondition(AudioEquipmentType type) {
return createCondition(type, audioEquipment.type);
}

private <T extends Comparable<T>> BooleanExpression createCondition(T value, ComparableExpression<T> path) {
return value != null ? path.eq(value) : null;
}
Original file line number Diff line number Diff line change
@@ -15,10 +15,10 @@
import com.ajou.hertz.domain.instrument.dto.InstrumentDto;
import com.ajou.hertz.domain.instrument.dto.request.AcousticAndClassicGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AmplifierFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AudioEquipmentFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.BassGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.EffectorFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.ElectricGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.InstrumentFilterConditions;
import com.ajou.hertz.domain.instrument.repository.InstrumentRepository;

import lombok.RequiredArgsConstructor;
@@ -95,7 +95,7 @@ public Page<AudioEquipmentDto> findAudioEquipments(
int page,
int pageSize,
InstrumentSortOption sort,
InstrumentFilterConditions filterConditions
AudioEquipmentFilterConditions filterConditions
) {
return instrumentRepository
.findAudioEquipments(page, pageSize, sort, filterConditions)
Original file line number Diff line number Diff line change
@@ -37,10 +37,10 @@
import com.ajou.hertz.domain.instrument.constant.InstrumentSortOption;
import com.ajou.hertz.domain.instrument.dto.request.AcousticAndClassicGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AmplifierFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AudioEquipmentFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.BassGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.EffectorFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.ElectricGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.InstrumentFilterConditions;
import com.ajou.hertz.domain.instrument.entity.AcousticAndClassicGuitar;
import com.ajou.hertz.domain.instrument.entity.Amplifier;
import com.ajou.hertz.domain.instrument.entity.AudioEquipment;
@@ -173,7 +173,7 @@ public InstrumentRepositoryTest(
void 음향_장비_목록을_조회한다() throws Exception {
// given
InstrumentSortOption sortOption = InstrumentSortOption.CREATED_BY_ASC;
InstrumentFilterConditions filterConditions = createEmptyInstrumentFilterConditions();
AudioEquipmentFilterConditions filterConditions = createAudioEquipmentFilterConditions();
User user = userRepository.save(createUser());
List<Instrument> savedInstruments = sut.saveAll(List.of(
createElectricGuitar(user),
@@ -309,10 +309,6 @@ private AudioEquipment createAudioEquipment(User seller) throws Exception {
);
}

private InstrumentFilterConditions createEmptyInstrumentFilterConditions() throws Exception {
return ReflectionUtils.createInstrumentFilterConditions(null, null, null);
}

private ElectricGuitarFilterConditions createEmptyElectricGuitarFilterConditions() throws Exception {
return ReflectionUtils.createElectricGuitarFilterConditions(null, null, null, null, null, null);
}
@@ -333,4 +329,8 @@ private EffectorFilterConditions createEmptyEffectorFilterConditions() throws Ex
private AmplifierFilterConditions createEmptyAmplifierFilterConditions() throws Exception {
return ReflectionUtils.createAmplifierFilterConditions(null, null, null, null, null, null);
}

private AudioEquipmentFilterConditions createAudioEquipmentFilterConditions() throws Exception {
return ReflectionUtils.createAudioEquipmentFilterConditions(null, null, null, null);
}
}
Original file line number Diff line number Diff line change
@@ -58,6 +58,7 @@
import com.ajou.hertz.domain.instrument.dto.InstrumentImageDto;
import com.ajou.hertz.domain.instrument.dto.request.AcousticAndClassicGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AmplifierFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AudioEquipmentFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.BassGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.CreateNewAcousticAndClassicGuitarRequest;
import com.ajou.hertz.domain.instrument.dto.request.CreateNewAmplifierRequest;
@@ -321,7 +322,7 @@ public InstrumentControllerTest(MockMvc mvc) {
createAudioEquipmentDto(4L, userId)
));
given(instrumentQueryService.findAudioEquipments(
eq(page), eq(pageSize), eq(sortOption), any(InstrumentFilterConditions.class)
eq(page), eq(pageSize), eq(sortOption), any(AudioEquipmentFilterConditions.class)
)).willReturn(expectedResult);

// when & then
@@ -339,7 +340,7 @@ public InstrumentControllerTest(MockMvc mvc) {
.andExpect(jsonPath("$.content", hasSize(expectedResult.getNumberOfElements())));
then(instrumentQueryService)
.should()
.findAudioEquipments(eq(page), eq(pageSize), eq(sortOption), any(InstrumentFilterConditions.class));
.findAudioEquipments(eq(page), eq(pageSize), eq(sortOption), any(AudioEquipmentFilterConditions.class));
verifyEveryMocksShouldHaveNoMoreInteractions();
}

Original file line number Diff line number Diff line change
@@ -46,6 +46,7 @@
import com.ajou.hertz.domain.instrument.dto.InstrumentDto;
import com.ajou.hertz.domain.instrument.dto.request.AcousticAndClassicGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AmplifierFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AudioEquipmentFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.BassGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.EffectorFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.ElectricGuitarFilterConditions;
@@ -250,7 +251,7 @@ class InstrumentQueryServiceTest {
// given
int page = 0;
int pageSize = 10;
InstrumentFilterConditions filterConditions = createEmptyInstrumentFilterConditions();
AudioEquipmentFilterConditions filterConditions = createAudioEquipmentFilterConditions();
InstrumentSortOption sort = InstrumentSortOption.CREATED_BY_DESC;
User user = createUser();
Page<AudioEquipment> expectedResult = new PageImpl<>(List.of(
@@ -481,4 +482,13 @@ private AmplifierFilterConditions createAmplifierFilterConditions() throws Excep
AmplifierUsage.HOME
);
}

private AudioEquipmentFilterConditions createAudioEquipmentFilterConditions() throws Exception {
return ReflectionUtils.createAudioEquipmentFilterConditions(
InstrumentProgressStatus.SELLING,
"서울특별시",
"종로구",
AudioEquipmentType.AUDIO_EQUIPMENT
);
}
}
70 changes: 45 additions & 25 deletions src/test/java/com/ajou/hertz/util/ReflectionUtils.java
Original file line number Diff line number Diff line change
@@ -44,6 +44,7 @@
import com.ajou.hertz.domain.instrument.dto.InstrumentImageDto;
import com.ajou.hertz.domain.instrument.dto.request.AcousticAndClassicGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AmplifierFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.AudioEquipmentFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.BassGuitarFilterConditions;
import com.ajou.hertz.domain.instrument.dto.request.CreateNewAcousticAndClassicGuitarRequest;
import com.ajou.hertz.domain.instrument.dto.request.CreateNewAmplifierRequest;
@@ -580,11 +581,12 @@ public static CreateNewElectricGuitarRequest createElectricGuitarRequest(
Short productionYear,
GuitarColor color
) throws Exception {
Constructor<CreateNewElectricGuitarRequest> constructor = CreateNewElectricGuitarRequest.class.getDeclaredConstructor(
String.class, List.class, InstrumentProgressStatus.class, AddressRequest.class,
Short.class, Integer.class, Boolean.class, String.class, ElectricGuitarBrand.class,
ElectricGuitarModel.class, Short.class, GuitarColor.class, List.class
);
Constructor<CreateNewElectricGuitarRequest> constructor =
CreateNewElectricGuitarRequest.class.getDeclaredConstructor(
String.class, List.class, InstrumentProgressStatus.class, AddressRequest.class,
Short.class, Integer.class, Boolean.class, String.class, ElectricGuitarBrand.class,
ElectricGuitarModel.class, Short.class, GuitarColor.class, List.class
);
constructor.setAccessible(true);
return constructor.newInstance(
title, images, progressStatus, tradeAddress, qualityStatus, price, hasAnomaly, description,
@@ -634,12 +636,13 @@ public static CreateNewAcousticAndClassicGuitarRequest createAcousticAndClassicG
AcousticAndClassicGuitarWood wood,
AcousticAndClassicGuitarPickUp pickUp
) throws Exception {
Constructor<CreateNewAcousticAndClassicGuitarRequest> constructor = CreateNewAcousticAndClassicGuitarRequest.class.getDeclaredConstructor(
String.class, InstrumentProgressStatus.class, AddressRequest.class, Short.class,
Integer.class, Boolean.class, String.class, List.class, List.class,
AcousticAndClassicGuitarBrand.class, AcousticAndClassicGuitarModel.class,
AcousticAndClassicGuitarWood.class, AcousticAndClassicGuitarPickUp.class
);
Constructor<CreateNewAcousticAndClassicGuitarRequest> constructor =
CreateNewAcousticAndClassicGuitarRequest.class.getDeclaredConstructor(
String.class, InstrumentProgressStatus.class, AddressRequest.class, Short.class,
Integer.class, Boolean.class, String.class, List.class, List.class,
AcousticAndClassicGuitarBrand.class, AcousticAndClassicGuitarModel.class,
AcousticAndClassicGuitarWood.class, AcousticAndClassicGuitarPickUp.class
);
constructor.setAccessible(true);
return constructor.newInstance(
title, progressStatus, tradeAddress, qualityStatus, price, hasAnomaly, description, images, hashtags,
@@ -710,11 +713,12 @@ public static CreateNewAudioEquipmentRequest createAudioEquipmentRequest(
List<String> hashtags,
AudioEquipmentType type
) throws Exception {
Constructor<CreateNewAudioEquipmentRequest> constructor = CreateNewAudioEquipmentRequest.class.getDeclaredConstructor(
String.class, InstrumentProgressStatus.class, AddressRequest.class, Short.class,
Integer.class, Boolean.class, String.class, List.class, List.class,
AudioEquipmentType.class
);
Constructor<CreateNewAudioEquipmentRequest> constructor =
CreateNewAudioEquipmentRequest.class.getDeclaredConstructor(
String.class, InstrumentProgressStatus.class, AddressRequest.class, Short.class,
Integer.class, Boolean.class, String.class, List.class, List.class,
AudioEquipmentType.class
);
constructor.setAccessible(true);
return constructor.newInstance(
title, progressStatus, tradeAddress, qualityStatus, price, hasAnomaly, description, images, hashtags, type
@@ -741,10 +745,11 @@ public static ElectricGuitarFilterConditions createElectricGuitarFilterCondition
ElectricGuitarModel model,
GuitarColor color
) throws Exception {
Constructor<ElectricGuitarFilterConditions> constructor = ElectricGuitarFilterConditions.class.getDeclaredConstructor(
InstrumentProgressStatus.class, String.class, String.class,
ElectricGuitarBrand.class, ElectricGuitarModel.class, GuitarColor.class
);
Constructor<ElectricGuitarFilterConditions> constructor =
ElectricGuitarFilterConditions.class.getDeclaredConstructor(
InstrumentProgressStatus.class, String.class, String.class,
ElectricGuitarBrand.class, ElectricGuitarModel.class, GuitarColor.class
);
constructor.setAccessible(true);
return constructor.newInstance(progressStatus, sido, sgg, brand, model, color);
}
@@ -775,11 +780,12 @@ public static AcousticAndClassicGuitarFilterConditions createAcousticAndClassicG
AcousticAndClassicGuitarWood wood,
AcousticAndClassicGuitarPickUp pickUp
) throws Exception {
Constructor<AcousticAndClassicGuitarFilterConditions> constructor = AcousticAndClassicGuitarFilterConditions.class.getDeclaredConstructor(
InstrumentProgressStatus.class, String.class, String.class,
AcousticAndClassicGuitarBrand.class, AcousticAndClassicGuitarModel.class,
AcousticAndClassicGuitarWood.class, AcousticAndClassicGuitarPickUp.class
);
Constructor<AcousticAndClassicGuitarFilterConditions> constructor =
AcousticAndClassicGuitarFilterConditions.class.getDeclaredConstructor(
InstrumentProgressStatus.class, String.class, String.class,
AcousticAndClassicGuitarBrand.class, AcousticAndClassicGuitarModel.class,
AcousticAndClassicGuitarWood.class, AcousticAndClassicGuitarPickUp.class
);
constructor.setAccessible(true);
return constructor.newInstance(progressStatus, sido, sgg, brand, model, wood, pickUp);
}
@@ -815,6 +821,20 @@ public static AmplifierFilterConditions createAmplifierFilterConditions(
return constructor.newInstance(progressStatus, sido, sgg, type, brand, usage);
}

public static AudioEquipmentFilterConditions createAudioEquipmentFilterConditions(
InstrumentProgressStatus progressStatus,
String sido,
String sgg,
AudioEquipmentType type
) throws Exception {
Constructor<AudioEquipmentFilterConditions> constructor =
AudioEquipmentFilterConditions.class.getDeclaredConstructor(
InstrumentProgressStatus.class, String.class, String.class, AudioEquipmentType.class
);
constructor.setAccessible(true);
return constructor.newInstance(progressStatus, sido, sgg, type);
}

/**
* DTO(Response)
*/

0 comments on commit 753678e

Please sign in to comment.