From 641b81b3e891aca9b7ba7abb3d37d59743501a98 Mon Sep 17 00:00:00 2001 From: Stanimir Penkov Date: Wed, 31 Oct 2018 11:49:48 +0200 Subject: [PATCH 1/5] NY-4587: Add birthday field in account in DB Signed-off-by: Stanimir Penkov --- .../biz/nynja/account/models/Account.java | 23 +++++++++++++++++- .../AccountByAuthenticationProvider.java | 24 ++++++++++++++++++- .../account/models/AccountByProfileId.java | 23 +++++++++++++++++- .../account/models/AccountByUsername.java | 18 +++++++++++++- 4 files changed, 84 insertions(+), 4 deletions(-) diff --git a/src/main/java/biz/nynja/account/models/Account.java b/src/main/java/biz/nynja/account/models/Account.java index 1446b91..b6a8230 100644 --- a/src/main/java/biz/nynja/account/models/Account.java +++ b/src/main/java/biz/nynja/account/models/Account.java @@ -4,6 +4,7 @@ package biz.nynja.account.models; import java.nio.ByteBuffer; +import java.time.LocalDate; import java.util.Set; import java.util.UUID; @@ -14,6 +15,7 @@ import biz.nynja.account.grpc.AccessStatus; import biz.nynja.account.grpc.AccountDetails; import biz.nynja.account.grpc.AccountDetails.Builder; import biz.nynja.account.grpc.CreatePendingAccountRequest; +import biz.nynja.account.grpc.Date; import biz.nynja.account.grpc.Role; @Table @@ -36,6 +38,7 @@ public class Account { private Set contactsInfo; private Set roles; private String accessStatus; + private LocalDate birthday; public UUID getAccountId() { return accountId; @@ -165,6 +168,14 @@ public class Account { this.accessStatus = accessStatus; } + public LocalDate getBirthday() { + return birthday; + } + + public void setBirthday(LocalDate birthday) { + this.birthday = birthday; + } + @Override public int hashCode() { final int prime = 31; @@ -176,6 +187,7 @@ public class Account { result = prime * result + ((authenticationProvider == null) ? 0 : authenticationProvider.hashCode()); result = prime * result + ((authenticationProviderType == null) ? 0 : authenticationProviderType.hashCode()); result = prime * result + ((avatar == null) ? 0 : avatar.hashCode()); + result = prime * result + ((birthday == null) ? 0 : birthday.hashCode()); result = prime * result + ((contactsInfo == null) ? 0 : contactsInfo.hashCode()); result = prime * result + ((creationTimestamp == null) ? 0 : creationTimestamp.hashCode()); result = prime * result + ((firstName == null) ? 0 : firstName.hashCode()); @@ -232,6 +244,11 @@ public class Account { return false; } else if (!avatar.equals(other.avatar)) return false; + if (birthday == null) { + if (other.birthday != null) + return false; + } else if (!birthday.equals(other.birthday)) + return false; if (contactsInfo == null) { if (other.contactsInfo != null) return false; @@ -291,7 +308,7 @@ public class Account { .append(", username=").append(username).append(", qrCode=").append(qrCode) .append(", creationTimestamp=").append(creationTimestamp).append(", lastUpdateTimestamp=") .append(lastUpdateTimestamp).append(", contactsInfo=").append(contactsInfo).append(", roles=") - .append(roles).append(", accessStatus=").append(accessStatus).append("]"); + .append(roles).append(", accessStatus=").append(accessStatus).append(", birthday=").append(birthday).append("]"); return builder.toString(); } @@ -352,6 +369,10 @@ public class Account { builder.addContactsInfo(c.toProto()); } } + if (getBirthday() != null) { + builder.setBirthday(Date.newBuilder().setYear(getBirthday().getYear()) + .setMonth(getBirthday().getMonthValue()).setDay(getBirthday().getDayOfMonth()).build()); + } return builder.build(); diff --git a/src/main/java/biz/nynja/account/models/AccountByAuthenticationProvider.java b/src/main/java/biz/nynja/account/models/AccountByAuthenticationProvider.java index f6a58fc..8f4c071 100644 --- a/src/main/java/biz/nynja/account/models/AccountByAuthenticationProvider.java +++ b/src/main/java/biz/nynja/account/models/AccountByAuthenticationProvider.java @@ -4,11 +4,13 @@ package biz.nynja.account.models; import java.nio.ByteBuffer; +import java.time.LocalDate; import java.util.Set; import java.util.UUID; import biz.nynja.account.grpc.AccessStatus; import biz.nynja.account.grpc.AccountDetails.Builder; +import biz.nynja.account.grpc.Date; import biz.nynja.account.grpc.Role; public class AccountByAuthenticationProvider { @@ -29,6 +31,7 @@ public class AccountByAuthenticationProvider { private String qrCode; private Set roles; private String accessStatus; + private LocalDate birthday; public UUID getAccountId() { return accountId; @@ -158,6 +161,14 @@ public class AccountByAuthenticationProvider { this.accessStatus = accessStatus; } + public LocalDate getBirthday() { + return birthday; + } + + public void setBirthday(LocalDate birthday) { + this.birthday = birthday; + } + @Override public int hashCode() { final int prime = 31; @@ -169,6 +180,7 @@ public class AccountByAuthenticationProvider { result = prime * result + ((authenticationProvider == null) ? 0 : authenticationProvider.hashCode()); result = prime * result + ((authenticationProviderType == null) ? 0 : authenticationProviderType.hashCode()); result = prime * result + ((avatar == null) ? 0 : avatar.hashCode()); + result = prime * result + ((birthday == null) ? 0 : birthday.hashCode()); result = prime * result + ((contactsInfo == null) ? 0 : contactsInfo.hashCode()); result = prime * result + ((creationTimestamp == null) ? 0 : creationTimestamp.hashCode()); result = prime * result + ((firstName == null) ? 0 : firstName.hashCode()); @@ -225,6 +237,11 @@ public class AccountByAuthenticationProvider { return false; } else if (!avatar.equals(other.avatar)) return false; + if (birthday == null) { + if (other.birthday != null) + return false; + } else if (!birthday.equals(other.birthday)) + return false; if (contactsInfo == null) { if (other.contactsInfo != null) return false; @@ -284,7 +301,7 @@ public class AccountByAuthenticationProvider { .append(", username=").append(username).append(", creationTimestamp=").append(creationTimestamp) .append(", lastUpdateTimestamp=").append(lastUpdateTimestamp).append(", contactsInfo=") .append(contactsInfo).append(", qrCode=").append(qrCode).append(", roles=").append(roles) - .append(", accessStatus=").append(accessStatus).append("]"); + .append(", accessStatus=").append(accessStatus).append(", birthday=").append(birthday).append("]"); return builder.toString(); } @@ -337,6 +354,10 @@ public class AccountByAuthenticationProvider { if (getAccessStatus() != null) { builder.setAccessStatus(AccessStatus.valueOf(getAccessStatus())); } + if (getBirthday() != null) { + builder.setBirthday(Date.newBuilder().setYear(getBirthday().getYear()) + .setMonth(getBirthday().getMonthValue()).setDay(getBirthday().getDayOfMonth()).build()); + } return builder.build(); @@ -360,6 +381,7 @@ public class AccountByAuthenticationProvider { account.setQrCode(this.qrCode); account.setRoles(this.roles); account.setAccessStatus(this.accessStatus); + account.setBirthday(this.birthday); return account; } } diff --git a/src/main/java/biz/nynja/account/models/AccountByProfileId.java b/src/main/java/biz/nynja/account/models/AccountByProfileId.java index d0da520..89ff4fd 100644 --- a/src/main/java/biz/nynja/account/models/AccountByProfileId.java +++ b/src/main/java/biz/nynja/account/models/AccountByProfileId.java @@ -4,11 +4,13 @@ package biz.nynja.account.models; import java.nio.ByteBuffer; +import java.time.LocalDate; import java.util.Set; import java.util.UUID; import biz.nynja.account.grpc.AccessStatus; import biz.nynja.account.grpc.AccountDetails; +import biz.nynja.account.grpc.Date; import biz.nynja.account.grpc.AccountDetails.Builder; import biz.nynja.account.grpc.Role; @@ -30,6 +32,7 @@ public class AccountByProfileId { private String qrCode; private Set roles; private String accessStatus; + private LocalDate birthday; public UUID getAccountId() { return accountId; @@ -159,6 +162,14 @@ public class AccountByProfileId { this.accessStatus = accessStatus; } + public LocalDate getBirthday() { + return birthday; + } + + public void setBirthday(LocalDate birthday) { + this.birthday = birthday; + } + @Override public int hashCode() { final int prime = 31; @@ -170,6 +181,7 @@ public class AccountByProfileId { result = prime * result + ((authenticationProvider == null) ? 0 : authenticationProvider.hashCode()); result = prime * result + ((authenticationProviderType == null) ? 0 : authenticationProviderType.hashCode()); result = prime * result + ((avatar == null) ? 0 : avatar.hashCode()); + result = prime * result + ((birthday == null) ? 0 : birthday.hashCode()); result = prime * result + ((contactsInfo == null) ? 0 : contactsInfo.hashCode()); result = prime * result + ((creationTimestamp == null) ? 0 : creationTimestamp.hashCode()); result = prime * result + ((firstName == null) ? 0 : firstName.hashCode()); @@ -226,6 +238,11 @@ public class AccountByProfileId { return false; } else if (!avatar.equals(other.avatar)) return false; + if (birthday == null) { + if (other.birthday != null) + return false; + } else if (!birthday.equals(other.birthday)) + return false; if (contactsInfo == null) { if (other.contactsInfo != null) return false; @@ -285,7 +302,7 @@ public class AccountByProfileId { .append(", username=").append(username).append(", creationTimestamp=").append(creationTimestamp) .append(", lastUpdateTimestamp=").append(lastUpdateTimestamp).append(", contactsInfo=") .append(contactsInfo).append(", qrCode=").append(qrCode).append(", roles=").append(roles) - .append(", accessStatus=").append(accessStatus).append("]"); + .append(", accessStatus=").append(accessStatus).append(", birthday=").append(birthday).append("]"); return builder.toString(); } @@ -339,6 +356,10 @@ public class AccountByProfileId { if (getAccessStatus() != null) { builder.setAccessStatus(AccessStatus.valueOf(getAccessStatus())); } + if (getBirthday() != null) { + builder.setBirthday(Date.newBuilder().setYear(getBirthday().getYear()) + .setMonth(getBirthday().getMonthValue()).setDay(getBirthday().getDayOfMonth()).build()); + } return builder.build(); diff --git a/src/main/java/biz/nynja/account/models/AccountByUsername.java b/src/main/java/biz/nynja/account/models/AccountByUsername.java index ccc616b..601b177 100644 --- a/src/main/java/biz/nynja/account/models/AccountByUsername.java +++ b/src/main/java/biz/nynja/account/models/AccountByUsername.java @@ -4,6 +4,7 @@ package biz.nynja.account.models; import java.nio.ByteBuffer; +import java.time.LocalDate; import java.util.Set; import java.util.UUID; @@ -25,6 +26,7 @@ public class AccountByUsername { private String qrCode; private Set roles; private String accessStatus; + private LocalDate birthday; public UUID getProfileId() { return profileId; @@ -154,6 +156,14 @@ public class AccountByUsername { this.accessStatus = accessStatus; } + public LocalDate getBirthday() { + return birthday; + } + + public void setBirthday(LocalDate birthday) { + this.birthday = birthday; + } + @Override public int hashCode() { final int prime = 31; @@ -165,6 +175,7 @@ public class AccountByUsername { result = prime * result + ((authenticationProvider == null) ? 0 : authenticationProvider.hashCode()); result = prime * result + ((authenticationProviderType == null) ? 0 : authenticationProviderType.hashCode()); result = prime * result + ((avatar == null) ? 0 : avatar.hashCode()); + result = prime * result + ((birthday == null) ? 0 : birthday.hashCode()); result = prime * result + ((contactsInfo == null) ? 0 : contactsInfo.hashCode()); result = prime * result + ((creationTimestamp == null) ? 0 : creationTimestamp.hashCode()); result = prime * result + ((firstName == null) ? 0 : firstName.hashCode()); @@ -221,6 +232,11 @@ public class AccountByUsername { return false; } else if (!avatar.equals(other.avatar)) return false; + if (birthday == null) { + if (other.birthday != null) + return false; + } else if (!birthday.equals(other.birthday)) + return false; if (contactsInfo == null) { if (other.contactsInfo != null) return false; @@ -280,7 +296,7 @@ public class AccountByUsername { .append(", username=").append(username).append(", creationTimestamp=").append(creationTimestamp) .append(", lastUpdateTimestamp=").append(lastUpdateTimestamp).append(", contactsInfo=") .append(contactsInfo).append(", qrCode=").append(qrCode).append(", roles=").append(roles) - .append(", accessStatus=").append(accessStatus).append("]"); + .append(", accessStatus=").append(accessStatus).append(", birthday=").append(birthday).append("]"); return builder.toString(); } -- GitLab From 8da22fc151fc4102b6642369384bfd8e3ef2ba6d Mon Sep 17 00:00:00 2001 From: Stanimir Penkov Date: Wed, 31 Oct 2018 11:49:48 +0200 Subject: [PATCH 2/5] NY-4587: Add birthday field in account in DB Signed-off-by: Stanimir Penkov --- src/main/java/biz/nynja/account/models/Account.java | 1 + .../nynja/account/models/AccountByAuthenticationProvider.java | 1 + src/main/java/biz/nynja/account/models/AccountByProfileId.java | 2 +- src/main/java/biz/nynja/account/models/AccountByUsername.java | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/biz/nynja/account/models/Account.java b/src/main/java/biz/nynja/account/models/Account.java index b6a8230..6920d9d 100644 --- a/src/main/java/biz/nynja/account/models/Account.java +++ b/src/main/java/biz/nynja/account/models/Account.java @@ -377,4 +377,5 @@ public class Account { return builder.build(); } + } diff --git a/src/main/java/biz/nynja/account/models/AccountByAuthenticationProvider.java b/src/main/java/biz/nynja/account/models/AccountByAuthenticationProvider.java index 8f4c071..bdfa04f 100644 --- a/src/main/java/biz/nynja/account/models/AccountByAuthenticationProvider.java +++ b/src/main/java/biz/nynja/account/models/AccountByAuthenticationProvider.java @@ -384,4 +384,5 @@ public class AccountByAuthenticationProvider { account.setBirthday(this.birthday); return account; } + } diff --git a/src/main/java/biz/nynja/account/models/AccountByProfileId.java b/src/main/java/biz/nynja/account/models/AccountByProfileId.java index 89ff4fd..fe37f19 100644 --- a/src/main/java/biz/nynja/account/models/AccountByProfileId.java +++ b/src/main/java/biz/nynja/account/models/AccountByProfileId.java @@ -364,5 +364,5 @@ public class AccountByProfileId { return builder.build(); } - + } diff --git a/src/main/java/biz/nynja/account/models/AccountByUsername.java b/src/main/java/biz/nynja/account/models/AccountByUsername.java index 601b177..ebe01dc 100644 --- a/src/main/java/biz/nynja/account/models/AccountByUsername.java +++ b/src/main/java/biz/nynja/account/models/AccountByUsername.java @@ -299,5 +299,5 @@ public class AccountByUsername { .append(", accessStatus=").append(accessStatus).append(", birthday=").append(birthday).append("]"); return builder.toString(); } - + } -- GitLab From b9406460e279beebe2b53f0eeac772f6b1a2911a Mon Sep 17 00:00:00 2001 From: Stanimir Penkov Date: Wed, 31 Oct 2018 15:31:55 +0200 Subject: [PATCH 3/5] NY-4588: Add birthday field in account - update requests/endpoints - updated code to use birthday date when updating account - changed logging for errors Signed-off-by: Stanimir Penkov --- .../nynja/account/components/Validator.java | 12 ++++++++++ .../AccountRepositoryAdditionalImpl.java | 22 +++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/main/java/biz/nynja/account/components/Validator.java b/src/main/java/biz/nynja/account/components/Validator.java index d35f819..a6d9b63 100644 --- a/src/main/java/biz/nynja/account/components/Validator.java +++ b/src/main/java/biz/nynja/account/components/Validator.java @@ -7,6 +7,8 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.time.DateTimeException; +import java.time.LocalDate; import java.util.HashMap; import java.util.Optional; import java.util.regex.Matcher; @@ -327,6 +329,16 @@ public class Validator { return Cause.ACCOUNT_NAME_INVALID; } + if (request.getBirthday() != null && request.getBirthday().getYear() != 0 + && request.getBirthday().getMonth() != 0 && request.getBirthday().getDay() != 0) { + try { + LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), + request.getBirthday().getDay()); + } catch (DateTimeException e) { + return Cause.INVALID_BIRTHDAY_DATE; + } + } + return null; } diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java index d9765ca..bb8c431 100644 --- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java +++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java @@ -3,7 +3,9 @@ */ package biz.nynja.account.repositories; +import java.time.DateTimeException; import java.time.Instant; +import java.time.LocalDate; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -198,18 +200,23 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio CassandraBatchOperations batchOperations = cassandraTemplate.batchOps(); Account existingAccount = accountRepository.findByAccountId(UUID.fromString(request.getAccountId())); if (existingAccount == null) { - logger.info("Existing account with the provided id was not found."); + logger.error("Existing account with the provided id {} was not found.", request.getAccountId()); logger.debug("Existing account with the provided id {} was not found.", request.getAccountId()); return null; } Long timeUpdated = Instant.now().toEpochMilli(); WriteResult wr = null; try { - updateAccountData(batchOperations, request, existingAccount, timeUpdated); + try { + updateAccountData(batchOperations, request, existingAccount, timeUpdated); + } catch (DateTimeException e) { + logger.error("Exception with birthday date while updating account with id {}", request.getAccountId()); + return null; + } wr = batchOperations.execute(); } catch (IllegalArgumentException | IllegalStateException e) { - logger.info("Exception while updating account."); - logger.debug("Exception while updating account: {} ...", e.getMessage()); + logger.error("Exception while updating account with id {}.", request.getAccountId()); + logger.debug("Exception while updating account: {}.", e.getMessage()); return null; } @@ -318,6 +325,13 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio updatedAccount.setUsername(request.getUsername()); updatedAccount.setLastUpdateTimestamp(lastUpdateTimestamp); updatedAccount.setAccessStatus(request.getAccessStatus().toString()); + if (request.getBirthday() != null && request.getBirthday().getYear() != 0 + && request.getBirthday().getMonth() != 0 && request.getBirthday().getDay() != 0) { + updatedAccount.setBirthday(LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), + request.getBirthday().getDay())); + } else { + updatedAccount.setBirthday(null); + } batchOps.update(updatedAccount); } -- GitLab From 488f5273e2c48584f6badd7d4c59933e6483129c Mon Sep 17 00:00:00 2001 From: Stanimir Penkov Date: Wed, 31 Oct 2018 18:26:21 +0200 Subject: [PATCH 4/5] NY-4589: Add birthday field in account - update unit tests - added unit tests for birthday date Signed-off-by: Stanimir Penkov --- .../account/services/AccountServiceTests.java | 36 +++++++++++++++++++ .../java/biz/nynja/account/utils/Util.java | 3 ++ 2 files changed, 39 insertions(+) diff --git a/src/test/java/biz/nynja/account/services/AccountServiceTests.java b/src/test/java/biz/nynja/account/services/AccountServiceTests.java index 3f46386..1a3991b 100644 --- a/src/test/java/biz/nynja/account/services/AccountServiceTests.java +++ b/src/test/java/biz/nynja/account/services/AccountServiceTests.java @@ -45,6 +45,7 @@ import biz.nynja.account.grpc.ContactDetails; import biz.nynja.account.grpc.ContactType; import biz.nynja.account.grpc.CreatePendingAccountRequest; import biz.nynja.account.grpc.CreatePendingAccountResponse; +import biz.nynja.account.grpc.Date; import biz.nynja.account.grpc.DeleteAccountRequest; import biz.nynja.account.grpc.DeleteAuthenticationProviderRequest; import biz.nynja.account.grpc.DeleteContactInfoRequest; @@ -1389,4 +1390,39 @@ public class AccountServiceTests extends GrpcServerTestBase { assertTrue(String.format("Reply should contain cause '%s'", Cause.ERROR_EDITING_CONTACT_INFO), reply.getError().getCause().equals(Cause.ERROR_EDITING_CONTACT_INFO)); } + + @Test + public void testUpdateAccountValidBirthdayDate() { + final UpdateAccountRequest request = UpdateAccountRequest.newBuilder().setAccountId(Util.ACCOUNT_ID.toString()) + .setFirstName(Util.FIRST_NAME).setBirthday(Date.newBuilder().setYear(Util.BIRTHDAY.getYear()) + .setMonth(Util.BIRTHDAY.getMonthValue()).setDay(Util.BIRTHDAY.getDayOfMonth()).build()) + .build(); + given(accountRepositoryAdditional.updateAccount(request)).willReturn(updatedAccount); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + + final AccountResponse reply = accountServiceBlockingStub.updateAccount(request); + + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain birthday '%s'", Util.BIRTHDAY), + reply.getAccountDetails().getBirthday().getYear() == Util.BIRTHDAY.getYear()); + assertTrue(reply.getAccountDetails().getBirthday().getMonth() == Util.BIRTHDAY.getMonthValue()); + assertTrue(reply.getAccountDetails().getBirthday().getDay() == Util.BIRTHDAY.getDayOfMonth()); + } + + @Test + public void testUpdateAccountInvalidBirthdayDate() { + final UpdateAccountRequest request = UpdateAccountRequest.newBuilder().setAccountId(Util.ACCOUNT_ID.toString()) + .setFirstName(Util.FIRST_NAME) + .setBirthday(Date.newBuilder().setYear(1990).setMonth(9).setDay(32).build()).build(); + + final AccountServiceGrpc.AccountServiceBlockingStub accountServiceBlockingStub = AccountServiceGrpc + .newBlockingStub(Optional.ofNullable(channel).orElse(inProcChannel)); + final AccountResponse reply = accountServiceBlockingStub.updateAccount(request); + + assertNotNull("Reply should not be null", reply); + assertTrue(String.format("Reply should contain cause '%s'", Cause.INVALID_BIRTHDAY_DATE), + reply.getError().getCause().equals(Cause.INVALID_BIRTHDAY_DATE)); + } } diff --git a/src/test/java/biz/nynja/account/utils/Util.java b/src/test/java/biz/nynja/account/utils/Util.java index e540b01..08f4aa2 100644 --- a/src/test/java/biz/nynja/account/utils/Util.java +++ b/src/test/java/biz/nynja/account/utils/Util.java @@ -5,6 +5,7 @@ package biz.nynja.account.utils; import java.nio.ByteBuffer; +import java.time.LocalDate; import java.util.HashSet; import java.util.Set; import java.util.UUID; @@ -55,6 +56,7 @@ public class Util { public static final String PASSWORD = "abc123"; public static final String FIRST_NAME = "John"; public static final String LAST_NAME = "Doe"; + public static final LocalDate BIRTHDAY = LocalDate.of(1990, 9, 16); public static final String MIDDLE_NAME = "Kass"; public static final String PHONE_NUMBER = "+359887123456"; public static final String PHONE_PROVIDER = "BG:+359887123456"; @@ -174,6 +176,7 @@ public class Util { account.setUsername(USERNAME); account.setFirstName(FIRST_NAME); account.setLastName(LAST_NAME); + account.setBirthday(BIRTHDAY); account.setAccountMark(UPDATED_ACCOUNT_MARK); return account; } -- GitLab From 218c802159ec31cead6eb5015cce59d788c0fb65 Mon Sep 17 00:00:00 2001 From: Stanimir Penkov Date: Fri, 2 Nov 2018 16:17:09 +0200 Subject: [PATCH 5/5] NY-4588: Extracted additional method - extracted additional method for checking if a birthday date is set Signed-off-by: Stanimir Penkov --- src/main/java/biz/nynja/account/components/Validator.java | 8 ++++++-- .../repositories/AccountRepositoryAdditionalImpl.java | 7 +++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/biz/nynja/account/components/Validator.java b/src/main/java/biz/nynja/account/components/Validator.java index a6d9b63..a27e8a6 100644 --- a/src/main/java/biz/nynja/account/components/Validator.java +++ b/src/main/java/biz/nynja/account/components/Validator.java @@ -33,6 +33,7 @@ import biz.nynja.account.grpc.CompletePendingAccountCreationRequest; import biz.nynja.account.grpc.ContactDetails; import biz.nynja.account.grpc.ContactType; import biz.nynja.account.grpc.CreatePendingAccountRequest; +import biz.nynja.account.grpc.Date; import biz.nynja.account.grpc.DeleteAuthenticationProviderRequest; import biz.nynja.account.grpc.DeleteContactInfoRequest; import biz.nynja.account.grpc.ErrorResponse.Cause; @@ -306,6 +307,10 @@ public class Validator { return null; } + public boolean validateBirthdayIsSet(Date birthday) { + return (birthday != null && birthday.getYear() != 0 && birthday.getMonth() != 0 && birthday.getDay() != 0); + } + public Cause validateUpdateAccountRequest(UpdateAccountRequest request) { if (request.getUsername() != null && !request.getUsername().trim().isEmpty() @@ -329,8 +334,7 @@ public class Validator { return Cause.ACCOUNT_NAME_INVALID; } - if (request.getBirthday() != null && request.getBirthday().getYear() != 0 - && request.getBirthday().getMonth() != 0 && request.getBirthday().getDay() != 0) { + if (validateBirthdayIsSet(request.getBirthday())) { try { LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), request.getBirthday().getDay()); diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java index bb8c431..643a88d 100644 --- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java +++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java @@ -29,6 +29,7 @@ import com.datastax.driver.core.Session; import biz.nynja.account.components.AccountServiceHelper; import biz.nynja.account.components.StatementsPool; +import biz.nynja.account.components.Validator; import biz.nynja.account.grpc.CompletePendingAccountCreationRequest; import biz.nynja.account.grpc.UpdateAccountRequest; import biz.nynja.account.grpc.UpdateProfileRequest; @@ -84,6 +85,9 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio @Autowired private AccountServiceHelper accountServiceHelper; + @Autowired + private Validator validator; + @Autowired private Session session; @@ -325,8 +329,7 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio updatedAccount.setUsername(request.getUsername()); updatedAccount.setLastUpdateTimestamp(lastUpdateTimestamp); updatedAccount.setAccessStatus(request.getAccessStatus().toString()); - if (request.getBirthday() != null && request.getBirthday().getYear() != 0 - && request.getBirthday().getMonth() != 0 && request.getBirthday().getDay() != 0) { + if (validator.validateBirthdayIsSet(request.getBirthday())) { updatedAccount.setBirthday(LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), request.getBirthday().getDay())); } else { -- GitLab