This is an automated email from the ASF dual-hosted git repository.
adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new fadfcd68e FINERACT-1929: Allow the length of client name to be 160
chars
fadfcd68e is described below
commit fadfcd68e2905244860341a4200e2ac57fcd609f
Author: jmarta <[email protected]>
AuthorDate: Tue Oct 10 02:45:21 2023 +0200
FINERACT-1929: Allow the length of client name to be 160 chars
---
.../fineract/portfolio/client/domain/Client.java | 49 ++++++++++------------
.../client/api/ClientsApiResourceSwagger.java | 2 +
.../portfolio/client/data/ClientDataValidator.java | 2 +-
.../db/changelog/tenant/changelog-tenant.xml | 1 +
.../tenant/parts/0127_client_name_length.xml | 29 +++++++++++++
.../fineract/integrationtests/ClientTest.java | 33 +++++++++++++++
6 files changed, 89 insertions(+), 27 deletions(-)
diff --git
a/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
index c499ecde6..ad216bdd8 100644
---
a/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
+++
b/fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
@@ -100,10 +100,10 @@ public class Client extends
AbstractAuditableWithUTCDateTimeCustom {
@Column(name = "lastname", length = 50)
private String lastname;
- @Column(name = "fullname", length = 100)
+ @Column(name = "fullname", length = 160)
private String fullname;
- @Column(name = "display_name", length = 100, nullable = false)
+ @Column(name = "display_name", length = 160, nullable = false)
private String displayName;
@Column(name = "mobile_no", length = 50, unique = true)
@@ -493,32 +493,29 @@ public class Client extends
AbstractAuditableWithUTCDateTimeCustom {
}
public void deriveDisplayName() {
-
- StringBuilder nameBuilder = new StringBuilder();
- Integer legalForm = this.getLegalForm();
- if (legalForm == null || LegalForm.fromInt(legalForm).isPerson()) {
- if (StringUtils.isNotBlank(this.firstname)) {
- nameBuilder.append(this.firstname).append(' ');
- }
-
- if (StringUtils.isNotBlank(this.middlename)) {
- nameBuilder.append(this.middlename).append(' ');
- }
-
- if (StringUtils.isNotBlank(this.lastname)) {
- nameBuilder.append(this.lastname);
- }
-
- if (StringUtils.isNotBlank(this.fullname)) {
- nameBuilder = new StringBuilder(this.fullname);
- }
- } else if (LegalForm.fromInt(legalForm).isEntity()) {
- if (StringUtils.isNotBlank(this.fullname)) {
- nameBuilder = new StringBuilder(this.fullname);
+ if (StringUtils.isNotBlank(this.fullname)) {
+ this.displayName = this.fullname;
+ } else {
+ StringBuilder nameBuilder = new StringBuilder();
+ if (legalForm == null || LegalForm.fromInt(legalForm).isPerson()) {
+ if (StringUtils.isNotBlank(this.firstname)) {
+ nameBuilder.append(this.firstname);
+ }
+ if (StringUtils.isNotBlank(this.middlename)) {
+ if (!nameBuilder.isEmpty()) {
+ nameBuilder.append(' ');
+ }
+ nameBuilder.append(this.middlename);
+ }
+ if (StringUtils.isNotBlank(this.lastname)) {
+ if (!nameBuilder.isEmpty()) {
+ nameBuilder.append(' ');
+ }
+ nameBuilder.append(this.lastname);
+ }
}
+ this.displayName = nameBuilder.toString();
}
-
- this.displayName = nameBuilder.toString();
}
public LocalDate getActivationLocalDate() {
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResourceSwagger.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResourceSwagger.java
index 017837f40..7766ef070 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResourceSwagger.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResourceSwagger.java
@@ -304,6 +304,8 @@ final class ClientsApiResourceSwagger {
public String fullname;
@Schema(example = "Client_FirstName")
public String firstname;
+ @Schema(example = "Client_MiddleName")
+ public String middlename;
@Schema(example = "123")
public String externalId;
@Schema(example = "Client_LastName")
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java
index bbbe4ee7e..f8a5b9274 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java
@@ -318,7 +318,7 @@ public final class ClientDataValidator {
private void fullnameCannotBeBlank(final JsonElement element, final
DataValidatorBuilder baseDataValidator) {
final String fullnameParam =
this.fromApiJsonHelper.extractStringNamed(ClientApiConstants.fullnameParamName,
element);
-
baseDataValidator.reset().parameter(ClientApiConstants.fullnameParamName).value(fullnameParam).notBlank().notExceedingLengthOf(100);
+
baseDataValidator.reset().parameter(ClientApiConstants.fullnameParamName).value(fullnameParam).notBlank().notExceedingLengthOf(160);
}
private boolean isIndividualNamePartParameterPassed(final JsonElement
element) {
diff --git
a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
index 849dcb903..51f316ece 100644
---
a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
+++
b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml
@@ -146,4 +146,5 @@
<include
file="parts/0124_transaction_summary_with_asset_owner_report_typo_fix_3.xml"
relativeToChangelogFile="true" />
<include
file="parts/0125_transaction_summary_with_asset_owner_report_chargeoff_reason.xml"
relativeToChangelogFile="true" />
<include
file="parts/0126_add_loan_product_installment_level_delinquency.xml"
relativeToChangelogFile="true" />
+ <include file="parts/0127_client_name_length.xml"
relativeToChangelogFile="true" />
</databaseChangeLog>
diff --git
a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0127_client_name_length.xml
b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0127_client_name_length.xml
new file mode 100644
index 000000000..c432f78d2
--- /dev/null
+++
b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0127_client_name_length.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+ <changeSet id="1" author="fineract">
+ <modifyDataType tableName="m_client" columnName="fullname"
newDataType="VARCHAR(160)" />
+ <modifyDataType tableName="m_client" columnName="display_name"
newDataType="VARCHAR(160)" />
+ </changeSet>
+</databaseChangeLog>
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientTest.java
index e5ffeab2a..96ad52d64 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientTest.java
@@ -19,7 +19,11 @@
package org.apache.fineract.integrationtests;
import static
org.apache.fineract.integrationtests.client.IntegrationTest.assertThat;
+import static
org.apache.fineract.integrationtests.common.ClientHelper.DEFAULT_DATE;
+import static
org.apache.fineract.integrationtests.common.ClientHelper.LEGALFORM_ID_PERSON;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.restassured.builder.RequestSpecBuilder;
@@ -30,8 +34,10 @@ import io.restassured.specification.ResponseSpecification;
import java.security.SecureRandom;
import java.util.HashMap;
import java.util.List;
+import java.util.UUID;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.fineract.client.models.GetClientClientIdAddressesResponse;
+import org.apache.fineract.client.models.GetClientsClientIdResponse;
import org.apache.fineract.client.models.GlobalConfigurationPropertyData;
import org.apache.fineract.client.models.PostClientClientIdAddressesRequest;
import org.apache.fineract.client.models.PostClientClientIdAddressesResponse;
@@ -263,4 +269,31 @@ public class ClientTest {
assertThat(addressResponse.getPostalCode()).isEqualTo(postalCode);
}
+ @Test
+ public void testClientName() {
+ String firstName = Utils.randomStringGenerator("FN", 48);
+ String middleName = Utils.randomStringGenerator("MN", 48);
+ String lastName = Utils.randomStringGenerator("LN", 48);
+ String fullName = firstName + ' ' + middleName + ' ' + lastName;
+
+ PostClientsRequest request = new
PostClientsRequest().officeId(1).legalFormId(LEGALFORM_ID_PERSON).firstname(firstName)
+
.middlename(middleName).lastname(lastName).externalId(UUID.randomUUID().toString()).dateFormat(Utils.DATE_FORMAT)
+ .locale("en").active(true).activationDate(DEFAULT_DATE);
+ Integer clientId = ClientHelper.createClient(requestSpec,
responseSpec, request);
+ assertNotNull(clientId);
+
+ GetClientsClientIdResponse client =
ClientHelper.getClient(requestSpec, responseSpec, clientId);
+ assertNotNull(client);
+ assertEquals(fullName, client.getDisplayName());
+
+ request = new
PostClientsRequest().officeId(1).legalFormId(LEGALFORM_ID_PERSON).fullname(fullName)
+
.externalId(UUID.randomUUID().toString()).dateFormat(Utils.DATE_FORMAT).locale("en").active(true)
+ .activationDate(DEFAULT_DATE);
+ clientId = ClientHelper.createClient(requestSpec, responseSpec,
request);
+ assertNotNull(clientId);
+
+ client = ClientHelper.getClient(requestSpec, responseSpec, clientId);
+ assertNotNull(client);
+ assertEquals(fullName, client.getDisplayName());
+ }
}