Skip to content

Commit 8d1dbed

Browse files
committed
refactor(CountryValidation): move country-related values to the corresponding class.
Addressed to #927 No functional changes.
1 parent 6409783 commit 8d1dbed

File tree

6 files changed

+55
-24
lines changed

6 files changed

+55
-24
lines changed

src/main/java/ru/mystamps/web/feature/country/AddCountryForm.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,13 @@
2828
import javax.validation.constraints.Pattern;
2929
import javax.validation.constraints.Size;
3030

31-
import static ru.mystamps.web.validation.ValidationRules.COUNTRY_NAME_EN_REGEXP;
32-
import static ru.mystamps.web.validation.ValidationRules.COUNTRY_NAME_MAX_LENGTH;
33-
import static ru.mystamps.web.validation.ValidationRules.COUNTRY_NAME_MIN_LENGTH;
34-
import static ru.mystamps.web.validation.ValidationRules.COUNTRY_NAME_NO_HYPHEN_REGEXP;
35-
import static ru.mystamps.web.validation.ValidationRules.COUNTRY_NAME_NO_REPEATING_HYPHENS_REGEXP;
36-
import static ru.mystamps.web.validation.ValidationRules.COUNTRY_NAME_RU_REGEXP;
31+
import static ru.mystamps.web.feature.country.CountryValidation.COUNTRY_NAME_EN_REGEXP;
32+
import static ru.mystamps.web.feature.country.CountryValidation.COUNTRY_NAME_MAX_LENGTH;
33+
import static ru.mystamps.web.feature.country.CountryValidation.COUNTRY_NAME_MIN_LENGTH;
34+
import static ru.mystamps.web.feature.country.CountryValidation.COUNTRY_NAME_NO_HYPHEN_REGEXP;
35+
// CheckStyle: ignore LineLength for next 1 line
36+
import static ru.mystamps.web.feature.country.CountryValidation.COUNTRY_NAME_NO_REPEATING_HYPHENS_REGEXP;
37+
import static ru.mystamps.web.feature.country.CountryValidation.COUNTRY_NAME_RU_REGEXP;
3738

3839
@Getter
3940
@Setter
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright (C) 2009-2019 Slava Semushin <[email protected]>
3+
*
4+
* This program is free software; you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation; either version 2 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with this program; if not, write to the Free Software
16+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17+
*/
18+
package ru.mystamps.web.feature.country;
19+
20+
import ru.mystamps.web.feature.country.CountryDb.Country;
21+
22+
// @todo #927 CountryValidation: remove COUNTRY_ prefix from the constants
23+
@SuppressWarnings("PMD.CommentDefaultAccessModifier")
24+
public final class CountryValidation {
25+
26+
public static final int COUNTRY_NAME_MIN_LENGTH = 3;
27+
public static final int COUNTRY_NAME_MAX_LENGTH = Country.NAME_LENGTH;
28+
public static final String COUNTRY_NAME_EN_REGEXP = "[- a-zA-Z]+";
29+
public static final String COUNTRY_NAME_RU_REGEXP = "[- а-яёА-ЯЁ]+";
30+
static final String COUNTRY_NAME_NO_HYPHEN_REGEXP = "[ \\p{L}]([- \\p{L}]+[ \\p{L}])*";
31+
@SuppressWarnings("PMD.LongVariable")
32+
static final String COUNTRY_NAME_NO_REPEATING_HYPHENS_REGEXP = "(?!.+[-]{2,}).+";
33+
34+
private CountryValidation() {
35+
}
36+
37+
}
38+

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

+5-4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import ru.mystamps.web.feature.category.CategoryService;
2626
import ru.mystamps.web.feature.category.CategoryValidation;
2727
import ru.mystamps.web.feature.country.CountryService;
28+
import ru.mystamps.web.feature.country.CountryValidation;
2829
import ru.mystamps.web.feature.participant.ParticipantService;
2930
import ru.mystamps.web.validation.ValidationRules;
3031

@@ -66,8 +67,8 @@ public class SeriesInfoExtractorServiceImpl implements SeriesInfoExtractorServic
6667
// CheckStyle: ignore LineLength for next 4 lines
6768
private static final Pattern VALID_CATEGORY_NAME_EN = Pattern.compile(CategoryValidation.CATEGORY_NAME_EN_REGEXP);
6869
private static final Pattern VALID_CATEGORY_NAME_RU = Pattern.compile(CategoryValidation.CATEGORY_NAME_RU_REGEXP);
69-
private static final Pattern VALID_COUNTRY_NAME_EN = Pattern.compile(ValidationRules.COUNTRY_NAME_EN_REGEXP);
70-
private static final Pattern VALID_COUNTRY_NAME_RU = Pattern.compile(ValidationRules.COUNTRY_NAME_RU_REGEXP);
70+
private static final Pattern VALID_COUNTRY_NAME_EN = Pattern.compile(CountryValidation.COUNTRY_NAME_EN_REGEXP);
71+
private static final Pattern VALID_COUNTRY_NAME_RU = Pattern.compile(CountryValidation.COUNTRY_NAME_RU_REGEXP);
7172

7273
// Max number of candidates that will be used in the SQL query within IN() statement.
7374
private static final long MAX_CANDIDATES_FOR_LOOKUP = 50;
@@ -437,10 +438,10 @@ private static boolean validCategoryName(String name) {
437438
}
438439

439440
private static boolean validCountryName(String name) {
440-
if (name.length() < ValidationRules.COUNTRY_NAME_MIN_LENGTH) {
441+
if (name.length() < CountryValidation.COUNTRY_NAME_MIN_LENGTH) {
441442
return false;
442443
}
443-
if (name.length() > ValidationRules.COUNTRY_NAME_MAX_LENGTH) {
444+
if (name.length() > CountryValidation.COUNTRY_NAME_MAX_LENGTH) {
444445
return false;
445446
}
446447
return VALID_COUNTRY_NAME_EN.matcher(name).matches()

src/main/java/ru/mystamps/web/validation/ValidationRules.java

-11
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,10 @@
1919

2020
import ru.mystamps.web.feature.account.AccountDb.User;
2121
import ru.mystamps.web.feature.account.AccountDb.UsersActivation;
22-
import ru.mystamps.web.feature.country.CountryDb.Country;
2322
import ru.mystamps.web.feature.series.SeriesDb.Series;
2423
import ru.mystamps.web.feature.series.importing.SeriesImportDb.SeriesImportRequest;
2524
import ru.mystamps.web.feature.series.sale.SeriesSalesDb.SeriesSales;
2625

27-
// it complains on "PMD.LongVariable"
28-
@SuppressWarnings("PMD.AvoidDuplicateLiterals")
2926
public final class ValidationRules {
3027

3128
public static final int LOGIN_MIN_LENGTH = 2;
@@ -48,14 +45,6 @@ public final class ValidationRules {
4845
public static final int ACT_KEY_LENGTH = UsersActivation.ACTIVATION_KEY_LENGTH;
4946
public static final String ACT_KEY_REGEXP = "[0-9a-z]+";
5047

51-
public static final int COUNTRY_NAME_MIN_LENGTH = 3;
52-
public static final int COUNTRY_NAME_MAX_LENGTH = Country.NAME_LENGTH;
53-
public static final String COUNTRY_NAME_EN_REGEXP = "[- a-zA-Z]+";
54-
public static final String COUNTRY_NAME_RU_REGEXP = "[- а-яёА-ЯЁ]+";
55-
public static final String COUNTRY_NAME_NO_HYPHEN_REGEXP = "[ \\p{L}]([- \\p{L}]+[ \\p{L}])*";
56-
@SuppressWarnings({ "PMD.LongVariable", "checkstyle:linelength" })
57-
public static final String COUNTRY_NAME_NO_REPEATING_HYPHENS_REGEXP = "(?!.+[-]{2,}).+";
58-
5948
public static final int MIN_STAMPS_IN_SERIES = 1;
6049
public static final int MAX_STAMPS_IN_SERIES = 50;
6150
public static final int MIN_RELEASE_YEAR = 1840;

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.slf4j.helpers.NOPLogger
2121
import ru.mystamps.web.feature.category.CategoryService
2222
import ru.mystamps.web.feature.category.CategoryValidation
2323
import ru.mystamps.web.feature.country.CountryService
24+
import ru.mystamps.web.feature.country.CountryValidation
2425
import ru.mystamps.web.feature.participant.ParticipantService
2526
import ru.mystamps.web.tests.Random
2627
import ru.mystamps.web.validation.ValidationRules
@@ -167,7 +168,7 @@ class SeriesInfoExtractorServiceImplTest extends Specification {
167168
def 'extractCountry() should filter out invalid candidates'() {
168169
given:
169170
String shortName = 'ok'
170-
String longName = 'x' * (ValidationRules.COUNTRY_NAME_MAX_LENGTH + 1)
171+
String longName = 'x' * (CountryValidation.COUNTRY_NAME_MAX_LENGTH + 1)
171172
String invalidEnName = 't3st_'
172173
String invalidRuName = 'т_е_с_т'
173174
String validEnName = 'valid'

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import ru.mystamps.web.dao.dto.Currency;
2424
import ru.mystamps.web.dao.dto.EntityWithParentDto;
2525
import ru.mystamps.web.feature.category.CategoryValidation;
26+
import ru.mystamps.web.feature.country.CountryValidation;
2627
import ru.mystamps.web.feature.participant.EntityWithIdDto;
2728
import ru.mystamps.web.feature.participant.ParticipantValidation;
2829
import ru.mystamps.web.feature.series.SeriesInfoDto;
@@ -154,8 +155,8 @@ public static String categorySlug() {
154155

155156
public static String countryName() {
156157
String name = between(
157-
ValidationRules.COUNTRY_NAME_MIN_LENGTH,
158-
ValidationRules.COUNTRY_NAME_MAX_LENGTH
158+
CountryValidation.COUNTRY_NAME_MIN_LENGTH,
159+
CountryValidation.COUNTRY_NAME_MAX_LENGTH
159160
)
160161
.with(oneOf(" -"))
161162
.english();

0 commit comments

Comments
 (0)