Skip to content

Commit 96eefce

Browse files
committed
SeriesServiceImpl: extract Price.valueOf() method.
No functional changes.
1 parent c711d7b commit 96eefce

File tree

2 files changed

+16
-52
lines changed

2 files changed

+16
-52
lines changed

src/main/java/ru/mystamps/web/entity/Price.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import javax.persistence.Enumerated;
2727
import javax.persistence.EnumType;
2828

29+
import org.apache.commons.lang3.Validate;
30+
2931
import lombok.AllArgsConstructor;
3032
import lombok.Getter;
3133
import lombok.NoArgsConstructor;
@@ -49,6 +51,16 @@ public class Price {
4951
@Column(length = MAX_CURRENCY_LEGNTH)
5052
private Currency currency;
5153

54+
public static Price valueOf(Double price, Currency currency) {
55+
if (price == null) {
56+
return null;
57+
}
58+
59+
Validate.isTrue(currency != null, "Currency must be non null when price is specified");
60+
61+
return new Price(price, currency);
62+
}
63+
5264
@Override
5365
public String toString() {
5466
// TODO(performance): specify initial capacity explicitly

src/main/java/ru/mystamps/web/service/SeriesServiceImpl.java

Lines changed: 4 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,16 @@ public Series add(AddSeriesDto dto, User user, boolean userCanAddComments) {
7777
series.setPerforated(dto.getPerforated());
7878

7979
setMichelNumbersIfProvided(dto, series);
80-
setMichelPriceIfProvided(dto, series);
80+
series.setMichelPrice(Price.valueOf(dto.getMichelPrice(), dto.getMichelCurrency()));
8181

8282
setScottNumbersIfProvided(dto, series);
83-
setScottPriceIfProvided(dto, series);
83+
series.setScottPrice(Price.valueOf(dto.getScottPrice(), dto.getScottCurrency()));
8484

8585
setYvertNumbersIfProvided(dto, series);
86-
setYvertPriceIfProvided(dto, series);
86+
series.setYvertPrice(Price.valueOf(dto.getYvertPrice(), dto.getYvertCurrency()));
8787

8888
setGibbonsNumbersIfProvided(dto, series);
89-
setGibbonsPriceIfProvided(dto, series);
89+
series.setGibbonsPrice(Price.valueOf(dto.getGibbonsPrice(), dto.getGibbonsCurrency()));
9090

9191
String imageUrl = imageService.save(dto.getImage());
9292
Validate.validState(imageUrl != null, "Image url must be non null");
@@ -204,18 +204,6 @@ private static void setMichelNumbersIfProvided(AddSeriesDto dto, Series series)
204204
}
205205
}
206206

207-
private static void setMichelPriceIfProvided(AddSeriesDto dto, Series series) {
208-
if (dto.getMichelPrice() == null) {
209-
return;
210-
}
211-
212-
Validate.isTrue(
213-
dto.getMichelCurrency() != null,
214-
"Michel currency must be non null when price is specified"
215-
);
216-
series.setMichelPrice(new Price(dto.getMichelPrice(), dto.getMichelCurrency()));
217-
}
218-
219207
private static void setScottNumbersIfProvided(AddSeriesDto dto, Series series) {
220208
Set<ScottCatalog> scottNumbers =
221209
CatalogUtils.fromString(dto.getScottNumbers(), ScottCatalog.class);
@@ -224,18 +212,6 @@ private static void setScottNumbersIfProvided(AddSeriesDto dto, Series series) {
224212
}
225213
}
226214

227-
private static void setScottPriceIfProvided(AddSeriesDto dto, Series series) {
228-
if (dto.getScottPrice() == null) {
229-
return;
230-
}
231-
232-
Validate.isTrue(
233-
dto.getScottCurrency() != null,
234-
"Scott currency must be non null when price is specified"
235-
);
236-
series.setScottPrice(new Price(dto.getScottPrice(), dto.getScottCurrency()));
237-
}
238-
239215
private static void setYvertNumbersIfProvided(AddSeriesDto dto, Series series) {
240216
Set<YvertCatalog> yvertNumbers =
241217
CatalogUtils.fromString(dto.getYvertNumbers(), YvertCatalog.class);
@@ -244,18 +220,6 @@ private static void setYvertNumbersIfProvided(AddSeriesDto dto, Series series) {
244220
}
245221
}
246222

247-
private static void setYvertPriceIfProvided(AddSeriesDto dto, Series series) {
248-
if (dto.getYvertPrice() == null) {
249-
return;
250-
}
251-
252-
Validate.isTrue(
253-
dto.getYvertCurrency() != null,
254-
"Yvert currency must be non null when price is specified"
255-
);
256-
series.setYvertPrice(new Price(dto.getYvertPrice(), dto.getYvertCurrency()));
257-
}
258-
259223
private static void setGibbonsNumbersIfProvided(AddSeriesDto dto, Series series) {
260224
Set<GibbonsCatalog> gibbonsNumbers =
261225
CatalogUtils.fromString(dto.getGibbonsNumbers(), GibbonsCatalog.class);
@@ -264,16 +228,4 @@ private static void setGibbonsNumbersIfProvided(AddSeriesDto dto, Series series)
264228
}
265229
}
266230

267-
private static void setGibbonsPriceIfProvided(AddSeriesDto dto, Series series) {
268-
if (dto.getGibbonsPrice() == null) {
269-
return;
270-
}
271-
272-
Validate.isTrue(
273-
dto.getGibbonsCurrency() != null,
274-
"Gibbons currency must be non null when price is specified"
275-
);
276-
series.setGibbonsPrice(new Price(dto.getGibbonsPrice(), dto.getGibbonsCurrency()));
277-
}
278-
279231
}

0 commit comments

Comments
 (0)