2222
2323import java .math .BigDecimal ;
2424import java .util .ArrayList ;
25+ import java .util .HashSet ;
2526import java .util .List ;
27+ import java .util .Set ;
2628import lombok .RequiredArgsConstructor ;
2729import org .apache .fineract .client .models .AllowAttributeOverrides ;
2830import org .apache .fineract .client .models .GetLoanPaymentChannelToFundSourceMappings ;
@@ -67,6 +69,8 @@ public class LoanProductsRequestFactory {
6769 private final AccountTypeResolver accountTypeResolver ;
6870 private final CodeValueResolver codeValueResolver ;
6971
72+ private final Set <String > productShortNameMap = new HashSet <>();
73+
7074 @ Autowired
7175 private CodeHelper codeHelper ;
7276
@@ -78,9 +82,6 @@ public class LoanProductsRequestFactory {
7882 public static final String NAME_PREFIX_INTEREST_DECLINING = "LP1InterestDeclining-" ;
7983 public static final String NAME_PREFIX_INTEREST_DECLINING_RECALCULATION = "LP1InterestDecliningRecalculation-" ;
8084 public static final String NAME_PREFIX_INTEREST_RECALCULATION = "LP2InterestRecalculation-" ;
81- public static final String SHORT_NAME_PREFIX = "p" ;
82- public static final String SHORT_NAME_PREFIX_INTEREST = "i" ;
83- public static final String SHORT_NAME_PREFIX_EMI = "e" ;
8485 public static final String DATE_FORMAT = "dd MMMM yyyy" ;
8586 public static final String LOCALE_EN = "en" ;
8687 public static final String DESCRIPTION = "30 days repayment" ;
@@ -126,8 +127,8 @@ public class LoanProductsRequestFactory {
126127 public static final String CHARGE_OFF_REASONS = "ChargeOffReasons" ;
127128
128129 public PostLoanProductsRequest defaultLoanProductsRequestLP1 () {
129- String name = Utils .randomNameGenerator (NAME_PREFIX , 4 );
130- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX , 3 );
130+ String name = Utils .randomNameGenerator (NAME_PREFIX , 10 );
131+ String shortName = generateShortNameSafely ( );
131132
132133 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
133134 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -236,8 +237,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP1() {
236237 }
237238
238239 public PostLoanProductsRequest defaultLoanProductsRequestLP1InterestFlat () {
239- String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_FLAT , 4 );
240- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_INTEREST , 3 );
240+ String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_FLAT , 10 );
241+ String shortName = generateShortNameSafely ( );
241242
242243 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
243244 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -344,8 +345,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP1InterestFlat() {
344345 }
345346
346347 public PostLoanProductsRequest defaultLoanProductsRequestLP1InterestDeclining () {
347- String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_DECLINING , 4 );
348- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_INTEREST , 3 );
348+ String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_DECLINING , 10 );
349+ String shortName = generateShortNameSafely ( );
349350
350351 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
351352 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -452,8 +453,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP1InterestDeclining()
452453 }
453454
454455 public PostLoanProductsRequest defaultLoanProductsRequestLP11MonthInterestDecliningBalanceDailyRecalculationCompoundingMonthly () {
455- String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_DECLINING_RECALCULATION , 4 );
456- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_INTEREST , 3 );
456+ String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_DECLINING_RECALCULATION , 10 );
457+ String shortName = generateShortNameSafely ( );
457458
458459 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
459460 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -565,8 +566,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP11MonthInterestDeclin
565566 }
566567
567568 public PostLoanProductsRequest defaultLoanProductsRequestLP1InterestDecliningBalanceDailyRecalculationCompoundingNone () {
568- String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_DECLINING_RECALCULATION , 4 );
569- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_INTEREST , 3 );
569+ String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_DECLINING_RECALCULATION , 10 );
570+ String shortName = generateShortNameSafely ( );
570571
571572 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
572573 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -675,8 +676,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP1InterestDecliningBal
675676 }
676677
677678 public PostLoanProductsRequest defaultLoanProductsRequestLP2InterestDailyRecalculation () {
678- final String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_RECALCULATION , 4 );
679- final String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_INTEREST , 3 );
679+ final String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_RECALCULATION , 10 );
680+ final String shortName = generateShortNameSafely ( );
680681
681682 List <LoanProductChargeToGLAccountMapper > penaltyToIncomeAccountMappings = new ArrayList <>();
682683 List <LoanProductChargeToGLAccountMapper > feeToIncomeAccountMappings = new ArrayList <>();
@@ -790,8 +791,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2InterestDailyRecalcu
790791 }
791792
792793 public PostLoanProductsRequest defaultLoanProductsRequestLP2 () {
793- String name = Utils .randomNameGenerator (NAME_PREFIX_LP2 , 4 );
794- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX , 3 );
794+ String name = Utils .randomNameGenerator (NAME_PREFIX_LP2 , 10 );
795+ String shortName = generateShortNameSafely ( );
795796
796797 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
797798 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -903,8 +904,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2() {
903904 }
904905
905906 public PostLoanProductsRequest defaultLoanProductsRequestLP2InterestFlat () {
906- String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_FLAT_LP2 , 4 );
907- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_INTEREST , 3 );
907+ String name = Utils .randomNameGenerator (NAME_PREFIX_INTEREST_FLAT_LP2 , 10 );
908+ String shortName = generateShortNameSafely ( );
908909
909910 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
910911 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -1014,8 +1015,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2InterestFlat() {
10141015 }
10151016
10161017 public PostLoanProductsRequest defaultLoanProductsRequestLP2Emi () {
1017- String name = Utils .randomNameGenerator (NAME_PREFIX_LP2_EMI , 4 );
1018- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_EMI , 3 );
1018+ String name = Utils .randomNameGenerator (NAME_PREFIX_LP2_EMI , 10 );
1019+ String shortName = generateShortNameSafely ( );
10191020
10201021 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
10211022 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -1124,8 +1125,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2Emi() {
11241125 }
11251126
11261127 public PostLoanProductsRequest defaultLoanProductsRequestLP2EmiWithChargeOff () {
1127- String name = Utils .randomNameGenerator (NAME_PREFIX_LP2_EMI , 4 );
1128- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_EMI , 3 );
1128+ String name = Utils .randomNameGenerator (NAME_PREFIX_LP2_EMI , 10 );
1129+ String shortName = generateShortNameSafely ( );
11291130
11301131 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
11311132 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -1254,8 +1255,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2EmiWithChargeOff() {
12541255 }
12551256
12561257 public PostLoanProductsRequest defaultLoanProductsRequestLP2ChargeOffReasonToExpenseAccountMappings () {
1257- final String name = Utils .randomNameGenerator (NAME_PREFIX_LP2 , 4 );
1258- final String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX , 3 );
1258+ final String name = Utils .randomNameGenerator (NAME_PREFIX_LP2 , 10 );
1259+ final String shortName = generateShortNameSafely ( );
12591260
12601261 final List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
12611262 final List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -1376,8 +1377,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2ChargeOffReasonToExp
13761377 }
13771378
13781379 public PostLoanProductsRequest defaultLoanProductsRequestLP2EmiCashAccounting () {
1379- String name = Utils .randomNameGenerator (NAME_PREFIX_LP2_EMI , 4 );
1380- String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX_EMI , 3 );
1380+ String name = Utils .randomNameGenerator (NAME_PREFIX_LP2_EMI , 10 );
1381+ String shortName = generateShortNameSafely ( );
13811382
13821383 List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
13831384 List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
@@ -1503,8 +1504,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2EmiCashAccounting()
15031504 }
15041505
15051506 public PostLoanProductsRequest defaultLoanProductsRequestLP2CapitalizedIncome () {
1506- final String name = Utils .randomNameGenerator (NAME_PREFIX_LP2 , 4 );
1507- final String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX , 3 );
1507+ final String name = Utils .randomNameGenerator (NAME_PREFIX_LP2 , 10 );
1508+ final String shortName = generateShortNameSafely ( );
15081509 final List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
15091510 final List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
15101511 final List <Integer > interestRateVariationsForBorrowerCycle = new ArrayList <>();
@@ -1641,8 +1642,8 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2ChargeOffReasonToExp
16411642 }
16421643
16431644 public PostLoanProductsRequest defaultLoanProductsRequestLP2BuyDownFees () {
1644- final String name = Utils .randomNameGenerator (NAME_PREFIX_LP2 , 4 );
1645- final String shortName = Utils . randomNameGenerator ( SHORT_NAME_PREFIX , 3 );
1645+ final String name = Utils .randomNameGenerator (NAME_PREFIX_LP2 , 10 );
1646+ final String shortName = generateShortNameSafely ( );
16461647 final List <Integer > principalVariationsForBorrowerCycle = new ArrayList <>();
16471648 final List <Integer > numberOfRepaymentVariationsForBorrowerCycle = new ArrayList <>();
16481649 final List <Integer > interestRateVariationsForBorrowerCycle = new ArrayList <>();
@@ -1777,4 +1778,18 @@ public PostLoanProductsRequest defaultLoanProductsRequestLP2ChargeOffReasonToExp
17771778 return defaultLoanProductsRequestLP2BuyDownFees ()//
17781779 .chargeOffReasonToExpenseAccountMappings (chargeOffReasonToExpenseAccountMappings );//
17791780 }
1781+
1782+ public String generateShortNameSafely () {
1783+ String generatedShortName ;
1784+ int counter = 0 ;
1785+ do {
1786+ counter ++;
1787+ generatedShortName = Utils .randomNameGenerator ("" , 4 );
1788+ if (counter > 999 ) {
1789+ throw new RuntimeException ("Unable to generate unique short name" );
1790+ }
1791+ } while (productShortNameMap .contains (generatedShortName ));
1792+ productShortNameMap .add (generatedShortName );
1793+ return generatedShortName ;
1794+ }
17801795}
0 commit comments