Skip to content

Commit 04316e6

Browse files
committed
refactor(SeriesValidation): move series-related values to the corresponding class.
Addressed to #927 No functional changes.
1 parent 7544bcd commit 04316e6

File tree

14 files changed

+46
-50
lines changed

14 files changed

+46
-50
lines changed

src/main/java/ru/mystamps/web/feature/collection/AddToCollectionForm.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import javax.validation.constraints.NotNull;
2626
import java.math.BigDecimal;
2727

28-
import static ru.mystamps.web.validation.ValidationRules.MIN_STAMPS_IN_SERIES;
28+
import static ru.mystamps.web.feature.series.SeriesValidation.MIN_STAMPS_IN_SERIES;
2929

3030
// @todo #477 Add to collection: integration test for invisible quantity for a series with 1 stamp
3131
// @todo #477 Add to collection: series quantity should be specified by default

src/main/java/ru/mystamps/web/feature/series/AddSeriesForm.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@
4343
import java.math.BigDecimal;
4444

4545
import static ru.mystamps.web.feature.image.ImageValidation.MAX_IMAGE_SIZE;
46-
import static ru.mystamps.web.validation.ValidationRules.MAX_DAYS_IN_MONTH;
47-
import static ru.mystamps.web.validation.ValidationRules.MAX_MONTHS_IN_YEAR;
48-
import static ru.mystamps.web.validation.ValidationRules.MAX_SERIES_COMMENT_LENGTH;
49-
import static ru.mystamps.web.validation.ValidationRules.MAX_STAMPS_IN_SERIES;
50-
import static ru.mystamps.web.validation.ValidationRules.MIN_RELEASE_YEAR;
51-
import static ru.mystamps.web.validation.ValidationRules.MIN_STAMPS_IN_SERIES;
46+
import static ru.mystamps.web.feature.series.SeriesValidation.MAX_DAYS_IN_MONTH;
47+
import static ru.mystamps.web.feature.series.SeriesValidation.MAX_MONTHS_IN_YEAR;
48+
import static ru.mystamps.web.feature.series.SeriesValidation.MAX_SERIES_COMMENT_LENGTH;
49+
import static ru.mystamps.web.feature.series.SeriesValidation.MAX_STAMPS_IN_SERIES;
50+
import static ru.mystamps.web.feature.series.SeriesValidation.MIN_RELEASE_YEAR;
51+
import static ru.mystamps.web.feature.series.SeriesValidation.MIN_STAMPS_IN_SERIES;
5252

5353
@Getter
5454
@Setter

src/main/java/ru/mystamps/web/feature/series/SeriesController.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@
7373
import java.util.Objects;
7474

7575
import static ru.mystamps.web.util.ControllerUtils.redirectTo;
76-
import static ru.mystamps.web.validation.ValidationRules.MIN_RELEASE_YEAR;
7776

7877
@Controller
7978
@RequiredArgsConstructor
@@ -94,7 +93,7 @@ public class SeriesController {
9493
static {
9594
CURRENT_YEAR = Integer.valueOf(Year.now(ZoneOffset.UTC).getValue());
9695
YEARS = new LinkedHashMap<>();
97-
for (Integer i = CURRENT_YEAR; i >= MIN_RELEASE_YEAR; i--) {
96+
for (Integer i = CURRENT_YEAR; i >= SeriesValidation.MIN_RELEASE_YEAR; i--) {
9897
YEARS.put(i, i);
9998
}
10099
}

src/main/java/ru/mystamps/web/feature/series/SeriesDb.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@
1717
*/
1818
package ru.mystamps.web.feature.series;
1919

20-
public final class SeriesDb {
20+
@SuppressWarnings("PMD.CommentDefaultAccessModifier")
21+
final class SeriesDb {
2122

22-
public static final class Series {
23-
public static final int COMMENT_LENGTH = 255;
23+
static final class Series {
24+
static final int COMMENT_LENGTH = 255;
2425
}
2526

2627
}

src/main/java/ru/mystamps/web/validation/ValidationRules.java renamed to src/main/java/ru/mystamps/web/feature/series/SeriesValidation.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,25 @@
1515
* along with this program; if not, write to the Free Software
1616
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1717
*/
18-
package ru.mystamps.web.validation;
18+
package ru.mystamps.web.feature.series;
1919

2020
import ru.mystamps.web.feature.series.SeriesDb.Series;
2121

22-
public final class ValidationRules {
22+
@SuppressWarnings("PMD.CommentDefaultAccessModifier")
23+
public final class SeriesValidation {
2324

2425
public static final int MIN_STAMPS_IN_SERIES = 1;
2526
public static final int MAX_STAMPS_IN_SERIES = 50;
2627
public static final int MIN_RELEASE_YEAR = 1840;
27-
public static final int MAX_SERIES_COMMENT_LENGTH = Series.COMMENT_LENGTH;
2828
public static final String CATALOG_NUMBERS_REGEXP = "[1-9][0-9]{0,3}(,[1-9][0-9]{0,3})*";
2929
@SuppressWarnings({ "PMD.LongVariable", "checkstyle:linelength" })
3030
public static final String CATALOG_NUMBERS_AND_LETTERS_REGEXP = "[1-9][0-9]{0,3}[a-z]?(,[1-9][0-9]{0,3}[a-z]?)*";
31+
static final int MAX_SERIES_COMMENT_LENGTH = Series.COMMENT_LENGTH;
3132

32-
public static final int MAX_DAYS_IN_MONTH = 31;
33-
public static final int MAX_MONTHS_IN_YEAR = 12;
33+
static final int MAX_DAYS_IN_MONTH = 31;
34+
static final int MAX_MONTHS_IN_YEAR = 12;
3435

35-
private ValidationRules() {
36+
private SeriesValidation() {
3637
}
3738

3839
}

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
import javax.validation.constraints.NotNull;
3535
import java.math.BigDecimal;
3636

37-
import static ru.mystamps.web.validation.ValidationRules.MAX_STAMPS_IN_SERIES;
38-
import static ru.mystamps.web.validation.ValidationRules.MIN_RELEASE_YEAR;
39-
import static ru.mystamps.web.validation.ValidationRules.MIN_STAMPS_IN_SERIES;
37+
import static ru.mystamps.web.feature.series.SeriesValidation.MAX_STAMPS_IN_SERIES;
38+
import static ru.mystamps.web.feature.series.SeriesValidation.MIN_RELEASE_YEAR;
39+
import static ru.mystamps.web.feature.series.SeriesValidation.MIN_STAMPS_IN_SERIES;
4040

4141
@Getter
4242
@Setter

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import ru.mystamps.web.feature.country.CountryService;
2828
import ru.mystamps.web.feature.country.CountryValidation;
2929
import ru.mystamps.web.feature.participant.ParticipantService;
30-
import ru.mystamps.web.validation.ValidationRules;
30+
import ru.mystamps.web.feature.series.SeriesValidation;
3131

3232
import java.math.BigDecimal;
3333
import java.net.MalformedURLException;
@@ -232,7 +232,7 @@ public SeriesExtractedInfo extract(String pageUrl, RawParsedDataDto data) {
232232
Matcher matcher = NUMBER_OF_STAMPS_REGEXP.matcher(fragment);
233233
if (matcher.find()) {
234234
Integer quantity = Integer.valueOf(matcher.group("quantity"));
235-
if (quantity <= ValidationRules.MAX_STAMPS_IN_SERIES) {
235+
if (quantity <= SeriesValidation.MAX_STAMPS_IN_SERIES) {
236236
log.debug("Quantity is {}", quantity);
237237
return quantity;
238238
}

src/main/java/ru/mystamps/web/support/beanvalidation/CatalogNumbersValidator.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818
package ru.mystamps.web.support.beanvalidation;
1919

20-
import ru.mystamps.web.validation.ValidationRules;
20+
import ru.mystamps.web.feature.series.SeriesValidation;
2121

2222
import javax.validation.ConstraintValidator;
2323
import javax.validation.ConstraintValidatorContext;
@@ -26,10 +26,10 @@
2626
public class CatalogNumbersValidator implements ConstraintValidator<CatalogNumbers, String> {
2727

2828
private static final Pattern CATALOG_NUMBERS =
29-
Pattern.compile(ValidationRules.CATALOG_NUMBERS_REGEXP);
29+
Pattern.compile(SeriesValidation.CATALOG_NUMBERS_REGEXP);
3030

3131
private static final Pattern CATALOG_NUMBERS_WITH_LETTERS =
32-
Pattern.compile(ValidationRules.CATALOG_NUMBERS_AND_LETTERS_REGEXP);
32+
Pattern.compile(SeriesValidation.CATALOG_NUMBERS_AND_LETTERS_REGEXP);
3333

3434
private boolean allowLetters;
3535

src/main/java/ru/mystamps/web/validation/package-info.java

-4
This file was deleted.

src/main/webapp/WEB-INF/views/series/add.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,8 @@ <h3 th:text="${#strings.capitalize(add_series)}">
205205
id="quantity"
206206
class="form-control"
207207
required="required"
208-
th:min="${T(ru.mystamps.web.validation.ValidationRules).MIN_STAMPS_IN_SERIES}"
209-
th:max="${T(ru.mystamps.web.validation.ValidationRules).MAX_STAMPS_IN_SERIES}"
208+
th:min="${T(ru.mystamps.web.feature.series.SeriesValidation).MIN_STAMPS_IN_SERIES}"
209+
th:max="${T(ru.mystamps.web.feature.series.SeriesValidation).MAX_STAMPS_IN_SERIES}"
210210
min="1"
211211
max="50"
212212
th:field="*{quantity}" />

src/main/webapp/WEB-INF/views/series/import/info.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,8 @@ <h3 th:text="#{t_gathered_data}">
201201
type="number"
202202
class="form-control"
203203
required="required"
204-
th:min="${T(ru.mystamps.web.validation.ValidationRules).MIN_STAMPS_IN_SERIES}"
205-
th:max="${T(ru.mystamps.web.validation.ValidationRules).MAX_STAMPS_IN_SERIES}"
204+
th:min="${T(ru.mystamps.web.feature.series.SeriesValidation).MIN_STAMPS_IN_SERIES}"
205+
th:max="${T(ru.mystamps.web.feature.series.SeriesValidation).MAX_STAMPS_IN_SERIES}"
206206
min="1"
207207
max="50"
208208
value="3"

src/main/webapp/WEB-INF/views/series/info.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ <h5 class="text-center" th:text="#{t_similar_series}">
379379
min="1"
380380
max="7"
381381
value="7"
382-
th:min="${T(ru.mystamps.web.validation.ValidationRules).MIN_STAMPS_IN_SERIES}"
382+
th:min="${T(ru.mystamps.web.feature.series.SeriesValidation).MIN_STAMPS_IN_SERIES}"
383383
th:max="${series.quantity}"
384384
th:field="*{numberOfStamps}"
385385
/>

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

+10-11
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import ru.mystamps.web.feature.country.CountryService
2424
import ru.mystamps.web.feature.country.CountryValidation
2525
import ru.mystamps.web.feature.participant.ParticipantService
2626
import ru.mystamps.web.tests.Random
27-
import ru.mystamps.web.validation.ValidationRules
27+
import ru.mystamps.web.feature.series.SeriesValidation
2828
import spock.lang.Specification
2929
import spock.lang.Unroll
3030

@@ -34,7 +34,6 @@ import static io.qala.datagen.RandomElements.from
3434
import static io.qala.datagen.RandomShortApi.nullOrBlank
3535
import static io.qala.datagen.RandomValue.between
3636
import static ru.mystamps.web.feature.series.importing.SeriesInfoExtractorServiceImpl.MAX_SUPPORTED_RELEASE_YEAR
37-
import static ru.mystamps.web.validation.ValidationRules.MAX_STAMPS_IN_SERIES
3837

3938
@SuppressWarnings([
4039
'ClassJavadoc',
@@ -245,7 +244,7 @@ class SeriesInfoExtractorServiceImplTest extends Specification {
245244

246245
def 'extractReleaseYear() should extract year from XIX century'() {
247246
given:
248-
Integer expectedYear = between(ValidationRules.MIN_RELEASE_YEAR, 1899).integer()
247+
Integer expectedYear = between(SeriesValidation.MIN_RELEASE_YEAR, 1899).integer()
249248
and:
250249
String fragment = String.valueOf(expectedYear)
251250
when:
@@ -300,9 +299,9 @@ class SeriesInfoExtractorServiceImplTest extends Specification {
300299
def 'extractReleaseYear() should return the first year if there are many'() {
301300
given:
302301
Integer currentYear = Year.now().getValue()
303-
Integer expectedYear = between(ValidationRules.MIN_RELEASE_YEAR, currentYear).integer()
302+
Integer expectedYear = between(SeriesValidation.MIN_RELEASE_YEAR, currentYear).integer()
304303
and:
305-
Integer anotherYear = between(ValidationRules.MIN_RELEASE_YEAR, currentYear).integer()
304+
Integer anotherYear = between(SeriesValidation.MIN_RELEASE_YEAR, currentYear).integer()
306305
and:
307306
String fragment = String.format('%d %d', expectedYear, anotherYear)
308307
when:
@@ -314,12 +313,12 @@ class SeriesInfoExtractorServiceImplTest extends Specification {
314313
@SuppressWarnings('UnnecessaryGetter')
315314
def 'extractReleaseYear() should skip invalid date'() {
316315
given:
317-
Integer unsupportedYearInPast = between(0, ValidationRules.MIN_RELEASE_YEAR - 1).integer()
316+
Integer unsupportedYearInPast = between(0, SeriesValidation.MIN_RELEASE_YEAR - 1).integer()
318317
Integer unsupportedYearInFuture = between(MAX_SUPPORTED_RELEASE_YEAR + 1, Integer.MAX_VALUE).integer()
319318
Integer unsupportedYear = from(unsupportedYearInPast, unsupportedYearInFuture).sample()
320319
and:
321320
Integer currentYear = Year.now().getValue()
322-
Integer expectedYear = between(ValidationRules.MIN_RELEASE_YEAR, currentYear).integer()
321+
Integer expectedYear = between(SeriesValidation.MIN_RELEASE_YEAR, currentYear).integer()
323322
and:
324323
String fragment = String.format('%d %d', unsupportedYear, expectedYear)
325324
when:
@@ -330,7 +329,7 @@ class SeriesInfoExtractorServiceImplTest extends Specification {
330329

331330
def 'extractReleaseYear() shouldn\'t extract dates before 1840'() {
332331
given:
333-
Integer unsupportedYear = between(0, ValidationRules.MIN_RELEASE_YEAR - 1).integer()
332+
Integer unsupportedYear = between(0, SeriesValidation.MIN_RELEASE_YEAR - 1).integer()
334333
String fragment = String.valueOf(unsupportedYear)
335334
when:
336335
Integer year = service.extractReleaseYear(fragment)
@@ -377,9 +376,9 @@ class SeriesInfoExtractorServiceImplTest extends Specification {
377376
expect:
378377
service.extractQuantity(fragment) == null
379378
where:
380-
fragment | _
381-
'0 марок' | _
382-
(MAX_STAMPS_IN_SERIES + 1) + ' марок' | _
379+
fragment | _
380+
'0 марок' | _
381+
(SeriesValidation.MAX_STAMPS_IN_SERIES + 1) + ' марок' | _
383382
}
384383

385384
@Unroll

src/test/java/ru/mystamps/web/tests/Random.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
import ru.mystamps.web.feature.participant.EntityWithIdDto;
2929
import ru.mystamps.web.feature.participant.ParticipantValidation;
3030
import ru.mystamps.web.feature.series.SeriesInfoDto;
31+
import ru.mystamps.web.feature.series.SeriesValidation;
3132
import ru.mystamps.web.feature.series.importing.ImportRequestFullInfo;
3233
import ru.mystamps.web.feature.series.importing.SeriesImportDb.SeriesImportRequestStatus;
3334
import ru.mystamps.web.service.TestObjects;
3435
import ru.mystamps.web.util.SlugUtils;
35-
import ru.mystamps.web.validation.ValidationRules;
3636

3737
import java.math.BigDecimal;
3838
import java.text.ParseException;
@@ -193,15 +193,15 @@ public static String sellerName() {
193193

194194
public static Integer issueYear() {
195195
return between(
196-
ValidationRules.MIN_RELEASE_YEAR,
196+
SeriesValidation.MIN_RELEASE_YEAR,
197197
Year.now(ZoneOffset.UTC).getValue()
198198
).integer();
199199
}
200200

201201
public static Integer quantity() {
202202
return between(
203-
ValidationRules.MIN_STAMPS_IN_SERIES,
204-
ValidationRules.MAX_STAMPS_IN_SERIES
203+
SeriesValidation.MIN_STAMPS_IN_SERIES,
204+
SeriesValidation.MAX_STAMPS_IN_SERIES
205205
).integer();
206206
}
207207

0 commit comments

Comments
 (0)