Skip to content

Commit e22d101

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

File tree

7 files changed

+68
-42
lines changed

7 files changed

+68
-42
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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.account;
19+
20+
import ru.mystamps.web.feature.account.AccountDb.User;
21+
import ru.mystamps.web.feature.account.AccountDb.UsersActivation;
22+
23+
@SuppressWarnings("PMD.CommentDefaultAccessModifier")
24+
public final class AccountValidation {
25+
26+
public static final int LOGIN_MIN_LENGTH = 2;
27+
public static final int LOGIN_MAX_LENGTH = User.LOGIN_LENGTH;
28+
static final String LOGIN_REGEXP = "[-_\\.a-zA-Z0-9]+";
29+
@SuppressWarnings("PMD.LongVariable")
30+
static final String LOGIN_NO_REPEATING_CHARS_REGEXP = "(?!.+[-_.]{2,}).+";
31+
32+
static final int NAME_MAX_LENGTH = User.NAME_LENGTH;
33+
static final String NAME_REGEXP = "[- \\p{L}]+";
34+
static final String NAME_NO_HYPHEN_REGEXP = "[ \\p{L}]([- \\p{L}]+[ \\p{L}])*";
35+
36+
static final int PASSWORD_MIN_LENGTH = 4;
37+
// We limit max length because bcrypt has a maximum password length.
38+
// See also: http://www.mscharhag.com/software-development/bcrypt-maximum-password-length
39+
static final int PASSWORD_MAX_LENGTH = 72;
40+
41+
static final int EMAIL_MAX_LENGTH = UsersActivation.EMAIL_LENGTH;
42+
43+
static final int ACT_KEY_LENGTH = UsersActivation.ACTIVATION_KEY_LENGTH;
44+
static final String ACT_KEY_REGEXP = "[0-9a-z]+";
45+
46+
private AccountValidation() {
47+
}
48+
49+
}
50+

src/main/java/ru/mystamps/web/feature/account/ActivateAccountForm.java

+12-13
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.hibernate.validator.constraints.NotEmpty;
2323
import ru.mystamps.web.support.beanvalidation.FieldsMatch;
2424
import ru.mystamps.web.support.beanvalidation.FieldsMismatch;
25-
import ru.mystamps.web.validation.ValidationRules;
2625

2726
import javax.validation.GroupSequence;
2827
import javax.validation.constraints.Pattern;
@@ -47,24 +46,24 @@ public class ActivateAccountForm implements ActivateAccountDto {
4746
@NotEmpty(groups = Login1Checks.class)
4847
@Size.List({
4948
@Size(
50-
min = ValidationRules.LOGIN_MIN_LENGTH,
49+
min = AccountValidation.LOGIN_MIN_LENGTH,
5150
message = "{value.too-short}",
5251
groups = Login2Checks.class
5352
),
5453
@Size(
55-
max = ValidationRules.LOGIN_MAX_LENGTH,
54+
max = AccountValidation.LOGIN_MAX_LENGTH,
5655
message = "{value.too-long}",
5756
groups = Login2Checks.class
5857
)
5958
})
6059
@Pattern.List({
6160
@Pattern(
62-
regexp = ValidationRules.LOGIN_REGEXP,
61+
regexp = AccountValidation.LOGIN_REGEXP,
6362
message = "{login.invalid}",
6463
groups = Login3Checks.class
6564
),
6665
@Pattern(
67-
regexp = ValidationRules.LOGIN_NO_REPEATING_CHARS_REGEXP,
66+
regexp = AccountValidation.LOGIN_NO_REPEATING_CHARS_REGEXP,
6867
message = "{login.repetition_chars}",
6968
groups = Login4Checks.class
7069
)
@@ -73,18 +72,18 @@ public class ActivateAccountForm implements ActivateAccountDto {
7372
private String login;
7473

7574
@Size(
76-
max = ValidationRules.NAME_MAX_LENGTH,
75+
max = AccountValidation.NAME_MAX_LENGTH,
7776
message = "{value.too-long}",
7877
groups = Name1Checks.class
7978
)
8079
@Pattern.List({
8180
@Pattern(
82-
regexp = ValidationRules.NAME_REGEXP,
81+
regexp = AccountValidation.NAME_REGEXP,
8382
message = "{name.invalid}",
8483
groups = Name2Checks.class
8584
),
8685
@Pattern(
87-
regexp = ValidationRules.NAME_NO_HYPHEN_REGEXP,
86+
regexp = AccountValidation.NAME_NO_HYPHEN_REGEXP,
8887
message = "{value.hyphen}",
8988
groups = Name3Checks.class
9089
)
@@ -94,12 +93,12 @@ public class ActivateAccountForm implements ActivateAccountDto {
9493
@NotEmpty(groups = Password1Checks.class)
9594
@Size.List({
9695
@Size(
97-
min = ValidationRules.PASSWORD_MIN_LENGTH,
96+
min = AccountValidation.PASSWORD_MIN_LENGTH,
9897
message = "{value.too-short}",
9998
groups = Password2Checks.class
10099
),
101100
@Size(
102-
max = ValidationRules.PASSWORD_MAX_LENGTH,
101+
max = AccountValidation.PASSWORD_MAX_LENGTH,
103102
message = "{value.too-long}",
104103
groups = Password2Checks.class
105104
)
@@ -111,13 +110,13 @@ public class ActivateAccountForm implements ActivateAccountDto {
111110

112111
@NotEmpty(groups = ActKey1Checks.class)
113112
@Size(
114-
min = ValidationRules.ACT_KEY_LENGTH,
115-
max = ValidationRules.ACT_KEY_LENGTH,
113+
min = AccountValidation.ACT_KEY_LENGTH,
114+
max = AccountValidation.ACT_KEY_LENGTH,
116115
message = "{value.invalid-length}",
117116
groups = ActKey2Checks.class
118117
)
119118
@Pattern(
120-
regexp = ValidationRules.ACT_KEY_REGEXP,
119+
regexp = AccountValidation.ACT_KEY_REGEXP,
121120
message = "{key.invalid}",
122121
groups = ActKey3Checks.class
123122
)

src/main/java/ru/mystamps/web/feature/account/RegisterAccountForm.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import javax.validation.GroupSequence;
2727
import javax.validation.constraints.Size;
2828

29-
import static ru.mystamps.web.validation.ValidationRules.EMAIL_MAX_LENGTH;
29+
import static ru.mystamps.web.feature.account.AccountValidation.EMAIL_MAX_LENGTH;
3030

3131
@Getter
3232
@Setter

src/main/java/ru/mystamps/web/feature/account/UsersActivationServiceImpl.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import ru.mystamps.web.feature.site.MailService;
2727
import ru.mystamps.web.support.togglz.Features;
2828
import ru.mystamps.web.util.LocaleUtils;
29-
import ru.mystamps.web.validation.ValidationRules;
3029

3130
import java.util.Date;
3231
import java.util.List;
@@ -110,7 +109,7 @@ public long countCreatedSince(Date date) {
110109
* in 10 characters length
111110
**/
112111
private static String generateActivationKey() {
113-
int actKeyLength = ValidationRules.ACT_KEY_LENGTH;
112+
int actKeyLength = AccountValidation.ACT_KEY_LENGTH;
114113
return RandomStringUtils.randomAlphanumeric(actKeyLength).toLowerCase(Locale.ENGLISH);
115114
}
116115

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

-22
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,12 @@
1717
*/
1818
package ru.mystamps.web.validation;
1919

20-
import ru.mystamps.web.feature.account.AccountDb.User;
21-
import ru.mystamps.web.feature.account.AccountDb.UsersActivation;
2220
import ru.mystamps.web.feature.series.SeriesDb.Series;
2321
import ru.mystamps.web.feature.series.importing.SeriesImportDb.SeriesImportRequest;
2422
import ru.mystamps.web.feature.series.sale.SeriesSalesDb.SeriesSales;
2523

2624
public final class ValidationRules {
2725

28-
public static final int LOGIN_MIN_LENGTH = 2;
29-
public static final int LOGIN_MAX_LENGTH = User.LOGIN_LENGTH;
30-
public static final String LOGIN_REGEXP = "[-_\\.a-zA-Z0-9]+";
31-
@SuppressWarnings("PMD.LongVariable")
32-
public static final String LOGIN_NO_REPEATING_CHARS_REGEXP = "(?!.+[-_.]{2,}).+";
33-
34-
public static final int NAME_MAX_LENGTH = User.NAME_LENGTH;
35-
public static final String NAME_REGEXP = "[- \\p{L}]+";
36-
public static final String NAME_NO_HYPHEN_REGEXP = "[ \\p{L}]([- \\p{L}]+[ \\p{L}])*";
37-
38-
public static final int PASSWORD_MIN_LENGTH = 4;
39-
// We limit max length because bcrypt has a maximum password length.
40-
// See also: http://www.mscharhag.com/software-development/bcrypt-maximum-password-length
41-
public static final int PASSWORD_MAX_LENGTH = 72;
42-
43-
public static final int EMAIL_MAX_LENGTH = UsersActivation.EMAIL_LENGTH;
44-
45-
public static final int ACT_KEY_LENGTH = UsersActivation.ACTIVATION_KEY_LENGTH;
46-
public static final String ACT_KEY_REGEXP = "[0-9a-z]+";
47-
4826
public static final int MIN_STAMPS_IN_SERIES = 1;
4927
public static final int MAX_STAMPS_IN_SERIES = 50;
5028
public static final int MIN_RELEASE_YEAR = 1840;

src/test/groovy/ru/mystamps/web/feature/account/UsersActivationServiceImplTest.groovy

+1-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import org.slf4j.helpers.NOPLogger
2121
import ru.mystamps.web.feature.site.MailService
2222
import ru.mystamps.web.service.TestObjects
2323
import ru.mystamps.web.tests.DateUtils
24-
import ru.mystamps.web.validation.ValidationRules
2524
import spock.lang.Specification
2625
import spock.lang.Unroll
2726

@@ -68,7 +67,7 @@ class UsersActivationServiceImplTest extends Specification {
6867
service.add(registrationForm, ANY_LOCALE)
6968
then:
7069
1 * usersActivationDao.add({ AddUsersActivationDbDto activation ->
71-
assert activation?.activationKey?.length() == ValidationRules.ACT_KEY_LENGTH
70+
assert activation?.activationKey?.length() == AccountValidation.ACT_KEY_LENGTH
7271
assert activation?.activationKey ==~ /^[\p{Lower}\p{Digit}]+$/
7372
return true
7473
})

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.commons.lang3.StringUtils;
2323
import ru.mystamps.web.dao.dto.Currency;
2424
import ru.mystamps.web.dao.dto.EntityWithParentDto;
25+
import ru.mystamps.web.feature.account.AccountValidation;
2526
import ru.mystamps.web.feature.category.CategoryValidation;
2627
import ru.mystamps.web.feature.country.CountryValidation;
2728
import ru.mystamps.web.feature.participant.EntityWithIdDto;
@@ -96,8 +97,8 @@ public static BigDecimal price() {
9697

9798
public static String login() {
9899
String login = between(
99-
ValidationRules.LOGIN_MIN_LENGTH,
100-
ValidationRules.LOGIN_MAX_LENGTH
100+
AccountValidation.LOGIN_MIN_LENGTH,
101+
AccountValidation.LOGIN_MAX_LENGTH
101102
)
102103
.with(multipleOf(" -_"))
103104
.alphanumeric();

0 commit comments

Comments
 (0)