Skip to content

Commit 9e14701

Browse files
committed
refactor(SeriesImportService.saveParsedData): modify to accept multiple image URLs
Part of #698
1 parent 57be0b6 commit 9e14701

File tree

5 files changed

+42
-18
lines changed

5 files changed

+42
-18
lines changed

src/main/java/ru/mystamps/web/feature/series/importing/RawParsedDataDto.java

-7
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,4 @@ public class RawParsedDataDto {
4040
private final String altCurrency;
4141
private final String condition;
4242

43-
// for backward compatibility
44-
public String getImageUrl() {
45-
if (imageUrls == null || imageUrls.isEmpty()) {
46-
return null;
47-
}
48-
return imageUrls.get(0);
49-
}
5043
}

src/main/java/ru/mystamps/web/feature/series/importing/SeriesImportService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Integer addSeries(
3737
ImportRequestDto findById(Integer requestId);
3838
void saveDownloadedContent(Integer requestId, String content, boolean retry);
3939
String getDownloadedContent(Integer requestId);
40-
void saveParsedData(Integer requestId, SeriesExtractedInfo seriesInfo, String imageUrl);
40+
void saveParsedData(Integer requestId, SeriesExtractedInfo seriesInfo, List<String> imageUrls);
4141
SeriesParsedDataDto getParsedData(Integer requestId, String lang);
4242
ImportRequestInfo findRequestInfo(Integer seriesId);
4343
List<ImportRequestFullInfo> findAll();

src/main/java/ru/mystamps/web/feature/series/importing/SeriesImportServiceImpl.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -174,16 +174,19 @@ public String getDownloadedContent(Integer requestId) {
174174
return seriesImportDao.findRawContentByRequestId(requestId);
175175
}
176176

177+
// CheckStyle: ignore LineLength for next 3 lines
177178
@Override
178179
@Transactional
179-
public void saveParsedData(Integer requestId, SeriesExtractedInfo seriesInfo, String imageUrl) {
180+
public void saveParsedData(Integer requestId, SeriesExtractedInfo seriesInfo, List<String> imageUrls) {
180181
Validate.isTrue(requestId != null, "Request id must be non null");
181182
Validate.isTrue(seriesInfo != null, "Series info must be non null");
183+
Validate.isTrue(imageUrls != null, "Image URLs must be non null");
182184

183185
Integer categoryId = getFirstElement(seriesInfo.getCategoryIds());
184186
Integer countryId = getFirstElement(seriesInfo.getCountryIds());
185187

186188
AddSeriesParsedDataDbDto seriesParsedData = new AddSeriesParsedDataDbDto();
189+
String imageUrl = getFirstElement(imageUrls);
187190
seriesParsedData.setImageUrl(imageUrl);
188191
Date now = new Date();
189192
seriesParsedData.setCreatedAt(now);
@@ -291,7 +294,7 @@ public List<ImportRequestFullInfo> findAll() {
291294
return seriesImportDao.findAll();
292295
}
293296

294-
private static Integer getFirstElement(List<Integer> list) {
297+
private static <T> T getFirstElement(List<T> list) {
295298
if (list.isEmpty()) {
296299
return null;
297300
}

src/main/java/ru/mystamps/web/feature/series/importing/event/DownloadingSucceededEventListener.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public void onApplicationEvent(DownloadingSucceeded event) {
104104

105105
SeriesExtractedInfo seriesInfo = extractorService.extract(event.getUrl(), data);
106106

107-
seriesImportService.saveParsedData(requestId, seriesInfo, data.getImageUrl());
107+
seriesImportService.saveParsedData(requestId, seriesInfo, data.getImageUrls());
108108
}
109109

110110
}

src/test/groovy/ru/mystamps/web/feature/series/importing/SeriesImportServiceImplTest.groovy

+35-7
Original file line numberDiff line numberDiff line change
@@ -472,26 +472,42 @@ class SeriesImportServiceImplTest extends Specification {
472472

473473
def 'saveParsedData() should throw exception when request id is null'() {
474474
when:
475-
service.saveParsedData(null, TestObjects.createEmptySeriesExtractedInfo(), Random.url())
475+
service.saveParsedData(
476+
null,
477+
TestObjects.createEmptySeriesExtractedInfo(),
478+
Collections.singletonList(Random.url())
479+
)
476480
then:
477481
IllegalArgumentException ex = thrown()
478482
ex.message == 'Request id must be non null'
479483
}
480484

481485
def 'saveParsedData() should throw exception when series info is null'() {
482486
when:
483-
service.saveParsedData(Random.id(), null, Random.url())
487+
service.saveParsedData(Random.id(), null, Collections.singletonList(Random.url()))
484488
then:
485489
IllegalArgumentException ex = thrown()
486490
ex.message == 'Series info must be non null'
487491
}
488492

493+
def 'saveParsedData() should throw exception when image urls are null'() {
494+
when:
495+
service.saveParsedData(Random.id(), TestObjects.createEmptySeriesExtractedInfo(), null)
496+
then:
497+
IllegalArgumentException ex = thrown()
498+
ex.message == 'Image URLs must be non null'
499+
}
500+
489501
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
490502
def 'saveParsedData() should publish ParsingFailed event when all series fields are empty'() {
491503
given:
492504
Integer expectedRequestId = Random.id()
493505
when:
494-
service.saveParsedData(expectedRequestId, TestObjects.createEmptySeriesExtractedInfo(), null)
506+
service.saveParsedData(
507+
expectedRequestId,
508+
TestObjects.createEmptySeriesExtractedInfo(),
509+
Collections.emptyList()
510+
)
495511
then:
496512
1 * eventPublisher.publishEvent({ ParsingFailed event ->
497513
assert event?.requestId == expectedRequestId
@@ -505,7 +521,11 @@ class SeriesImportServiceImplTest extends Specification {
505521
Integer expectedRequestId = Random.id()
506522
String expectedImageUrl = Random.url()
507523
when:
508-
service.saveParsedData(expectedRequestId, TestObjects.createSeriesExtractedInfo(), expectedImageUrl)
524+
service.saveParsedData(
525+
expectedRequestId,
526+
TestObjects.createSeriesExtractedInfo(),
527+
Collections.singletonList(expectedImageUrl)
528+
)
509529
then:
510530
1 * seriesImportDao.addParsedData(
511531
expectedRequestId,
@@ -524,7 +544,11 @@ class SeriesImportServiceImplTest extends Specification {
524544
given:
525545
Integer expectedRequestId = Random.id()
526546
when:
527-
service.saveParsedData(expectedRequestId, TestObjects.createSeriesExtractedInfo(), Random.url())
547+
service.saveParsedData(
548+
expectedRequestId,
549+
TestObjects.createSeriesExtractedInfo(),
550+
Collections.singletonList(Random.url())
551+
)
528552
then:
529553
1 * seriesSalesImportService.saveParsedData(
530554
expectedRequestId,
@@ -555,7 +579,7 @@ class SeriesImportServiceImplTest extends Specification {
555579
BigDecimal expectedPrice = expectedSeriesInfo.getPrice()
556580
String expectedCurrency = expectedSeriesInfo.getCurrency()
557581
when:
558-
service.saveParsedData(Random.id(), expectedSeriesInfo, Random.url())
582+
service.saveParsedData(Random.id(), expectedSeriesInfo, Collections.singletonList(Random.url()))
559583
then:
560584
1 * seriesImportDao.addParsedData(
561585
_ as Integer,
@@ -588,7 +612,11 @@ class SeriesImportServiceImplTest extends Specification {
588612
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
589613
def 'saveParsedData() should change request status'() {
590614
when:
591-
service.saveParsedData(Random.id(), TestObjects.createEmptySeriesExtractedInfo(), Random.url())
615+
service.saveParsedData(
616+
Random.id(),
617+
TestObjects.createEmptySeriesExtractedInfo(),
618+
Collections.singletonList(Random.url())
619+
)
592620
then:
593621
1 * seriesImportDao.changeStatus({ UpdateImportRequestStatusDbDto status ->
594622
assert DateUtils.roughlyEqual(status.date, new Date())

0 commit comments

Comments
 (0)