19
19
20
20
import java .util .Collections ;
21
21
import java .util .HashMap ;
22
+ import java .util .List ;
22
23
import java .util .Map ;
23
- import java .util .Optional ;
24
24
25
25
import org .apache .commons .lang3 .Validate ;
26
26
27
27
import org .springframework .beans .factory .annotation .Value ;
28
- import org .springframework .dao .EmptyResultDataAccessException ;
29
28
import org .springframework .jdbc .core .namedparam .MapSqlParameterSource ;
30
29
import org .springframework .jdbc .core .namedparam .NamedParameterJdbcTemplate ;
31
30
import org .springframework .jdbc .support .GeneratedKeyHolder ;
39
38
import ru .mystamps .web .service .dto .SitemapInfoDto ;
40
39
41
40
// TODO: move stamps related methods to separate interface (#88)
42
- @ SuppressWarnings ({ "PMD.AvoidDuplicateLiterals" , "PMD.TooManyMethods" })
41
+ @ SuppressWarnings ({
42
+ "PMD.AvoidDuplicateLiterals" ,
43
+ "PMD.TooManyMethods" ,
44
+ "PMD.TooManyFields" ,
45
+ "PMD.LongVariable"
46
+ })
43
47
@ RequiredArgsConstructor
44
48
public class JdbcSeriesDaoImpl implements JdbcSeriesDao {
45
49
@@ -54,6 +58,9 @@ public class JdbcSeriesDaoImpl implements JdbcSeriesDao {
54
58
@ Value ("${series.find_last_added}" )
55
59
private String findLastAddedSeriesSql ;
56
60
61
+ @ Value ("${series.find_by_ids}" )
62
+ private String findByIdsSql ;
63
+
57
64
@ Value ("${series.find_by_category_id}" )
58
65
private String findByCategoryIdSql ;
59
66
@@ -75,17 +82,17 @@ public class JdbcSeriesDaoImpl implements JdbcSeriesDao {
75
82
@ Value ("${series.count_stamps_of_collection}" )
76
83
private String countStampsOfCollectionSql ;
77
84
78
- @ Value ("${series.find_series_id_by_michel_number }" )
79
- private String findSeriesIdByMichelNumberSql ;
85
+ @ Value ("${series.find_series_ids_by_michel_number }" )
86
+ private String findSeriesIdsByMichelNumberSql ;
80
87
81
- @ Value ("${series.find_series_id_by_scott_number }" )
82
- private String findSeriesIdByScottNumberSql ;
88
+ @ Value ("${series.find_series_ids_by_scott_number }" )
89
+ private String findSeriesIdsByScottNumberSql ;
83
90
84
- @ Value ("${series.find_series_id_by_yvert_number }" )
85
- private String findSeriesIdByYvertNumberSql ;
91
+ @ Value ("${series.find_series_ids_by_yvert_number }" )
92
+ private String findSeriesIdsByYvertNumberSql ;
86
93
87
- @ Value ("${series.find_series_id_by_gibbons_number }" )
88
- private String findSeriesIdByGibbonsNumberSql ;
94
+ @ Value ("${series.find_series_ids_by_gibbons_number }" )
95
+ private String findSeriesIdsByGibbonsNumberSql ;
89
96
90
97
@ Override
91
98
public Integer add (AddSeriesDbDto series ) {
@@ -146,6 +153,18 @@ public Iterable<SeriesInfoDto> findLastAdded(int quantity, String lang) {
146
153
return jdbcTemplate .query (findLastAddedSeriesSql , params , RowMappers ::forSeriesInfoDto );
147
154
}
148
155
156
+ /**
157
+ * @author Sergey Chechenev
158
+ */
159
+ @ Override
160
+ public List <SeriesInfoDto > findByIdsAsSeriesInfo (List <Integer > seriesIds , String lang ) {
161
+ Map <String , Object > params = new HashMap <>();
162
+ params .put ("series_ids" , seriesIds );
163
+ params .put ("lang" , lang );
164
+
165
+ return jdbcTemplate .query (findByIdsSql , params , RowMappers ::forSeriesInfoDto );
166
+ }
167
+
149
168
@ Override
150
169
public Iterable <SeriesInfoDto > findByCategoryIdAsSeriesInfo (Integer categoryId , String lang ) {
151
170
Map <String , Object > params = new HashMap <>();
@@ -211,63 +230,39 @@ public long countStampsOfCollection(Integer collectionId) {
211
230
}
212
231
213
232
@ Override
214
- public Optional <Integer > findSeriesIdByMichelNumberCode (String michelNumber ) {
215
- try {
216
- Integer seriesId = jdbcTemplate .queryForObject (
217
- findSeriesIdByMichelNumberSql ,
218
- Collections .singletonMap ("michel_number" , michelNumber ),
219
- Integer .class
220
- );
221
- return Optional .of (seriesId );
222
-
223
- } catch (EmptyResultDataAccessException ignored ) {
224
- return Optional .empty ();
225
- }
233
+ public List <Integer > findSeriesIdsByMichelNumberCode (String michelNumber ) {
234
+ return jdbcTemplate .queryForList (
235
+ findSeriesIdsByMichelNumberSql ,
236
+ Collections .singletonMap ("michel_number" , michelNumber ),
237
+ Integer .class
238
+ );
226
239
}
227
240
228
241
@ Override
229
- public Optional <Integer > findSeriesIdByScottNumberCode (String scottNumber ) {
230
- try {
231
- Integer seriesId = jdbcTemplate .queryForObject (
232
- findSeriesIdByScottNumberSql ,
233
- Collections .singletonMap ("scott_number" , scottNumber ),
234
- Integer .class
235
- );
236
- return Optional .of (seriesId );
237
-
238
- } catch (EmptyResultDataAccessException ignored ) {
239
- return Optional .empty ();
240
- }
242
+ public List <Integer > findSeriesIdsByScottNumberCode (String scottNumber ) {
243
+ return jdbcTemplate .queryForList (
244
+ findSeriesIdsByScottNumberSql ,
245
+ Collections .singletonMap ("scott_number" , scottNumber ),
246
+ Integer .class
247
+ );
241
248
}
242
249
243
250
@ Override
244
- public Optional <Integer > findSeriesIdByYvertNumberCode (String yvertNumber ) {
245
- try {
246
- Integer seriesId = jdbcTemplate .queryForObject (
247
- findSeriesIdByYvertNumberSql ,
248
- Collections .singletonMap ("yvert_number" , yvertNumber ),
249
- Integer .class
250
- );
251
- return Optional .of (seriesId );
252
-
253
- } catch (EmptyResultDataAccessException ignored ) {
254
- return Optional .empty ();
255
- }
251
+ public List <Integer > findSeriesIdsByYvertNumberCode (String yvertNumber ) {
252
+ return jdbcTemplate .queryForList (
253
+ findSeriesIdsByYvertNumberSql ,
254
+ Collections .singletonMap ("yvert_number" , yvertNumber ),
255
+ Integer .class
256
+ );
256
257
}
257
258
258
259
@ Override
259
- public Optional <Integer > findSeriesIdByGibbonsNumberCode (String gibbonsNumber ) {
260
- try {
261
- Integer seriesId = jdbcTemplate .queryForObject (
262
- findSeriesIdByGibbonsNumberSql ,
263
- Collections .singletonMap ("gibbons_number" , gibbonsNumber ),
264
- Integer .class
265
- );
266
- return Optional .of (seriesId );
267
-
268
- } catch (EmptyResultDataAccessException ignored ) {
269
- return Optional .empty ();
270
- }
260
+ public List <Integer > findSeriesIdsByGibbonsNumberCode (String gibbonsNumber ) {
261
+ return jdbcTemplate .queryForList (
262
+ findSeriesIdsByGibbonsNumberSql ,
263
+ Collections .singletonMap ("gibbons_number" , gibbonsNumber ),
264
+ Integer .class
265
+ );
271
266
}
272
267
273
268
}
0 commit comments