FINERACT-2202: Bulk import fix

This commit is contained in:
danielales2541
2025-04-22 10:55:45 +02:00
committed by Adam Saghy
parent 1b9cb5c6d5
commit d15243fb31
9 changed files with 41 additions and 40 deletions
@@ -62,7 +62,7 @@ public class ClientPersonImportHandler implements ImportHandler {
public Count process(final Workbook workbook, final String locale, final String dateFormat) { public Count process(final Workbook workbook, final String locale, final String dateFormat) {
List<ClientData> clients = readExcelFile(workbook, locale, dateFormat); List<ClientData> clients = readExcelFile(workbook, locale, dateFormat);
return importEntity(workbook, clients, dateFormat); return importEntity(workbook, clients, dateFormat, locale);
} }
public List<ClientData> readExcelFile(final Workbook workbook, final String locale, final String dateFormat) { public List<ClientData> readExcelFile(final Workbook workbook, final String locale, final String dateFormat) {
@@ -183,13 +183,13 @@ public class ClientPersonImportHandler implements ImportHandler {
} }
public Count importEntity(final Workbook workbook, final List<ClientData> clients, final String dateFormat) { public Count importEntity(final Workbook workbook, final List<ClientData> clients, final String dateFormat, String locale) {
Sheet clientSheet = workbook.getSheet(TemplatePopulateImportConstants.CLIENT_PERSON_SHEET_NAME); Sheet clientSheet = workbook.getSheet(TemplatePopulateImportConstants.CLIENT_PERSON_SHEET_NAME);
int successCount = 0; int successCount = 0;
int errorCount = 0; int errorCount = 0;
String errorMessage; String errorMessage;
GsonBuilder gsonBuilder = GoogleGsonSerializerHelper.createGsonBuilder(); GsonBuilder gsonBuilder = GoogleGsonSerializerHelper.createGsonBuilder();
gsonBuilder.registerTypeAdapter(LocalDate.class, new DateSerializer(dateFormat)); gsonBuilder.registerTypeAdapter(LocalDate.class, new DateSerializer(dateFormat, locale));
for (ClientData client : clients) { for (ClientData client : clients) {
try { try {
String payload = gsonBuilder.create().toJson(client); String payload = gsonBuilder.create().toJson(client);
@@ -124,7 +124,6 @@ public class LoanImportHandler implements ImportHandler {
if (ImportHandlerUtils.readAsLong(LoanConstants.LINK_ACCOUNT_ID, row) != null) { if (ImportHandlerUtils.readAsLong(LoanConstants.LINK_ACCOUNT_ID, row) != null) {
linkAccountId = Objects.requireNonNull(ImportHandlerUtils.readAsLong(LoanConstants.LINK_ACCOUNT_ID, row)).toString(); linkAccountId = Objects.requireNonNull(ImportHandlerUtils.readAsLong(LoanConstants.LINK_ACCOUNT_ID, row)).toString();
} }
if (disbursedDate != null) { if (disbursedDate != null) {
return DisbursementData.importInstance(disbursedDate, linkAccountId, row.getRowNum(), locale, dateFormat); return DisbursementData.importInstance(disbursedDate, linkAccountId, row.getRowNum(), locale, dateFormat);
} }
@@ -238,7 +237,6 @@ public class LoanImportHandler implements ImportHandler {
String loanRepaymentScheduleTransactionProcessorStrategy = ImportHandlerUtils.readAsString(LoanConstants.REPAYMENT_STRATEGY_COL, String loanRepaymentScheduleTransactionProcessorStrategy = ImportHandlerUtils.readAsString(LoanConstants.REPAYMENT_STRATEGY_COL,
row); row);
LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor = loanRepaymentScheduleTransactionProcessorFactory LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor = loanRepaymentScheduleTransactionProcessorFactory
.determineProcessor(loanRepaymentScheduleTransactionProcessorStrategy); .determineProcessor(loanRepaymentScheduleTransactionProcessorStrategy);
@@ -366,7 +364,7 @@ public class LoanImportHandler implements ImportHandler {
.getIdByName(workbook.getSheet(TemplatePopulateImportConstants.GROUP_SHEET_NAME), clientOrGroupName); .getIdByName(workbook.getSheet(TemplatePopulateImportConstants.GROUP_SHEET_NAME), clientOrGroupName);
return LoanAccountData.importInstanceGroup(loanTypeEnumOption, groupIdforGroupLoan, productId, loanOfficerId, return LoanAccountData.importInstanceGroup(loanTypeEnumOption, groupIdforGroupLoan, productId, loanOfficerId,
submittedOnDate, fundId, principal, numberOfRepayments, repaidEvery, repaidEveryFrequencyEnums, loanTerm, submittedOnDate, fundId, principal, numberOfRepayments, repaidEvery, repaidEveryFrequencyEnums, loanTerm,
loanTermFrequencyEnum, nominalInterestRate, amortizationEnumOption, interestMethodEnum, loanTermFrequencyEnum, nominalInterestRate, submittedOnDate, amortizationEnumOption, interestMethodEnum,
interestCalculationPeriodEnum, arrearsTolerance, repaymentStrategyCode, graceOnPrincipalPayment, interestCalculationPeriodEnum, arrearsTolerance, repaymentStrategyCode, graceOnPrincipalPayment,
graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate, firstRepaymentOnDate, row.getRowNum(), graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate, firstRepaymentOnDate, row.getRowNum(),
externalId, linkAccountId, locale, dateFormat, null); externalId, linkAccountId, locale, dateFormat, null);
@@ -349,7 +349,7 @@ public class SavingsImportHandler implements ImportHandler {
final String dateFormat) { final String dateFormat) {
if (activationDates.get(i) != null) { if (activationDates.get(i) != null) {
GsonBuilder gsonBuilder = GoogleGsonSerializerHelper.createGsonBuilder(); GsonBuilder gsonBuilder = GoogleGsonSerializerHelper.createGsonBuilder();
gsonBuilder.registerTypeAdapter(LocalDate.class, new DateSerializer(dateFormat)); gsonBuilder.registerTypeAdapter(LocalDate.class, new DateSerializer(dateFormat, activationDates.get(i).getLocale()));
String payload = gsonBuilder.create().toJson(activationDates.get(i)); String payload = gsonBuilder.create().toJson(activationDates.get(i));
final CommandWrapper commandRequest = new CommandWrapperBuilder() // final CommandWrapper commandRequest = new CommandWrapperBuilder() //
.savingsAccountActivation(savingsId)// .savingsAccountActivation(savingsId)//
@@ -364,7 +364,7 @@ public class SavingsImportHandler implements ImportHandler {
final String dateFormat) { final String dateFormat) {
if (approvalDates.get(i) != null) { if (approvalDates.get(i) != null) {
GsonBuilder gsonBuilder = GoogleGsonSerializerHelper.createGsonBuilder(); GsonBuilder gsonBuilder = GoogleGsonSerializerHelper.createGsonBuilder();
gsonBuilder.registerTypeAdapter(LocalDate.class, new DateSerializer(dateFormat)); gsonBuilder.registerTypeAdapter(LocalDate.class, new DateSerializer(dateFormat, approvalDates.get(i).getLocale()));
String payload = gsonBuilder.create().toJson(approvalDates.get(i)); String payload = gsonBuilder.create().toJson(approvalDates.get(i));
final CommandWrapper commandRequest = new CommandWrapperBuilder() // final CommandWrapper commandRequest = new CommandWrapperBuilder() //
.approveSavingsAccountApplication(savingsId)// .approveSavingsAccountApplication(savingsId)//
@@ -377,7 +377,7 @@ public class SavingsImportHandler implements ImportHandler {
private CommandProcessingResult importSavings(final List<SavingsAccountData> savings, final int i, final String dateFormat) { private CommandProcessingResult importSavings(final List<SavingsAccountData> savings, final int i, final String dateFormat) {
GsonBuilder gsonBuilder = GoogleGsonSerializerHelper.createGsonBuilder(); GsonBuilder gsonBuilder = GoogleGsonSerializerHelper.createGsonBuilder();
gsonBuilder.registerTypeAdapter(LocalDate.class, new DateSerializer(dateFormat)); gsonBuilder.registerTypeAdapter(LocalDate.class, new DateSerializer(dateFormat, savings.get(i).getLocale()));
gsonBuilder.registerTypeAdapter(EnumOptionData.class, new EnumOptionDataIdSerializer()); gsonBuilder.registerTypeAdapter(EnumOptionData.class, new EnumOptionDataIdSerializer());
JsonObject savingsJsonob = gsonBuilder.create().toJsonTree(savings.get(i)).getAsJsonObject(); JsonObject savingsJsonob = gsonBuilder.create().toJsonTree(savings.get(i)).getAsJsonObject();
savingsJsonob.remove("isDormancyTrackingActive"); savingsJsonob.remove("isDormancyTrackingActive");
@@ -115,6 +115,7 @@ public abstract class AbstractWorkbookPopulator implements WorkbookPopulator {
dateCellStyle.setDataFormat(df); dateCellStyle.setDataFormat(df);
int rowIndex = 0; int rowIndex = 0;
DateTimeFormatter outputFormat = new DateTimeFormatterBuilder().appendPattern(dateFormat).toFormatter(); DateTimeFormatter outputFormat = new DateTimeFormatterBuilder().appendPattern(dateFormat).toFormatter();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat);
try { try {
if (clients != null) { if (clients != null) {
for (ClientData client : clients) { for (ClientData client : clients) {
@@ -125,7 +126,7 @@ public abstract class AbstractWorkbookPopulator implements WorkbookPopulator {
writeString(nameCol, row, client.getDisplayName().replaceAll("[ )(] ", "_") + "(" + client.getId() + ")"); writeString(nameCol, row, client.getDisplayName().replaceAll("[ )(] ", "_") + "(" + client.getId() + ")");
if (client.getActivationDate() != null) { if (client.getActivationDate() != null) {
writeDate(activationDateCol, row, outputFormat.format(client.getActivationDate()), dateCellStyle, dateFormat); writeDate(activationDateCol, row, client.getActivationDate().format(formatter), dateCellStyle, dateFormat);
} }
if (containsClientExtId) { if (containsClientExtId) {
if (!client.getExternalId().isEmpty()) { if (!client.getExternalId().isEmpty()) {
@@ -166,10 +166,10 @@ public class LoanWorkbookPopulator extends AbstractWorkbookPopulator {
.createFormulaListConstraint("INDIRECT(CONCATENATE(\"Staff_\",$A1))"); .createFormulaListConstraint("INDIRECT(CONCATENATE(\"Staff_\",$A1))");
DataValidationConstraint submittedDateConstraint = validationHelper.createDateConstraint( DataValidationConstraint submittedDateConstraint = validationHelper.createDateConstraint(
DataValidationConstraint.OperatorType.BETWEEN, DataValidationConstraint.OperatorType.BETWEEN,
"=IF(INDIRECT(CONCATENATE(\"START_DATE_\",$E1))>VLOOKUP($C1,$AR$2:$AT$" "=IF(" + "DATEVALUE(INDIRECT(\"START_DATE_\" & $E1)) > DATEVALUE(VLOOKUP($C1, $AR$2:$AT$"
+ (clientSheetPopulator.getClientsSize() + groupSheetPopulator.getGroupsSize() + 1) + (clientSheetPopulator.getClientsSize() + groupSheetPopulator.getGroupsSize() + 1) + ", 3, FALSE)), "
+ ",3,FALSE),INDIRECT(CONCATENATE(\"START_DATE_\",$E1)),VLOOKUP($C1,$AR$2:$AT$" + "DATEVALUE(INDIRECT(\"START_DATE_\" & $E1)), " + "DATEVALUE(VLOOKUP($C1, $AR$2:$AT$"
+ (clientSheetPopulator.getClientsSize() + groupSheetPopulator.getGroupsSize() + 1) + ",3,FALSE))", + (clientSheetPopulator.getClientsSize() + groupSheetPopulator.getGroupsSize() + 1) + ", 3, FALSE)))",
"=TODAY()", dateFormat); "=TODAY()", dateFormat);
DataValidationConstraint approvalDateConstraint = validationHelper DataValidationConstraint approvalDateConstraint = validationHelper
.createDateConstraint(DataValidationConstraint.OperatorType.BETWEEN, "=$G1", "=TODAY()", dateFormat); .createDateConstraint(DataValidationConstraint.OperatorType.BETWEEN, "=$G1", "=TODAY()", dateFormat);
@@ -112,8 +112,8 @@ public class SavingsTransactionsWorkbookPopulator extends AbstractWorkbookPopula
.createExplicitListConstraint(new String[] { "Withdrawal", "Deposit" }); .createExplicitListConstraint(new String[] { "Withdrawal", "Deposit" });
DataValidationConstraint paymentTypeConstraint = validationHelper.createFormulaListConstraint("PaymentTypes"); DataValidationConstraint paymentTypeConstraint = validationHelper.createFormulaListConstraint("PaymentTypes");
DataValidationConstraint transactionDateConstraint = validationHelper.createDateConstraint( DataValidationConstraint transactionDateConstraint = validationHelper.createDateConstraint(
DataValidationConstraint.OperatorType.BETWEEN, "=VLOOKUP($C1,$Q$2:$T$" + (savingsAccounts.size() + 1) + ",4,FALSE)", DataValidationConstraint.OperatorType.BETWEEN,
"=TODAY()", dateFormat); "=DATEVALUE(VLOOKUP($C1,$Q$2:$T$" + (savingsAccounts.size() + 1) + ",4,FALSE))", "=TODAY()", dateFormat);
DataValidation officeValidation = validationHelper.createValidation(officeNameConstraint, officeNameRange); DataValidation officeValidation = validationHelper.createValidation(officeNameConstraint, officeNameRange);
DataValidation clientValidation = validationHelper.createValidation(clientNameConstraint, clientNameRange); DataValidation clientValidation = validationHelper.createValidation(clientNameConstraint, clientNameRange);
@@ -208,11 +208,13 @@ public class SavingsTransactionsWorkbookPopulator extends AbstractWorkbookPopula
if (savingsAccount.getMinRequiredOpeningBalance() != null) { if (savingsAccount.getMinRequiredOpeningBalance() != null) {
writeBigDecimal(TransactionConstants.LOOKUP_OPENING_BALANCE_COL, row, savingsAccount.getMinRequiredOpeningBalance()); writeBigDecimal(TransactionConstants.LOOKUP_OPENING_BALANCE_COL, row, savingsAccount.getMinRequiredOpeningBalance());
} }
writeDate(TransactionConstants.LOOKUP_SAVINGS_ACTIVATION_DATE_COL, row, if (savingsAccount.getActivatedOnDate() != null) {
"" + savingsAccount.getTimeline().getActivatedOnDate().getDayOfMonth() + "/" writeDate(TransactionConstants.LOOKUP_SAVINGS_ACTIVATION_DATE_COL, row,
+ savingsAccount.getTimeline().getActivatedOnDate().getMonthValue() + "/" "" + savingsAccount.getTimeline().getActivatedOnDate().getDayOfMonth() + "/"
+ savingsAccount.getTimeline().getActivatedOnDate().getYear(), + savingsAccount.getTimeline().getActivatedOnDate().getMonthValue() + "/"
dateCellStyle, dateFormat); + savingsAccount.getTimeline().getActivatedOnDate().getYear(),
dateCellStyle, dateFormat);
}
} }
} }
@@ -131,7 +131,7 @@ public class SavingsWorkbookPopulator extends AbstractWorkbookPopulator {
writeString(SavingsConstants.INTEREST_CALCULATION_COL, rowHeader, "Interest Calculated*"); writeString(SavingsConstants.INTEREST_CALCULATION_COL, rowHeader, "Interest Calculated*");
writeString(SavingsConstants.INTEREST_CALCULATION_DAYS_IN_YEAR_COL, rowHeader, "# Days in Year*"); writeString(SavingsConstants.INTEREST_CALCULATION_DAYS_IN_YEAR_COL, rowHeader, "# Days in Year*");
writeString(SavingsConstants.MIN_OPENING_BALANCE_COL, rowHeader, "Min Opening Balance"); writeString(SavingsConstants.MIN_OPENING_BALANCE_COL, rowHeader, "Min Opening Balance");
writeString(SavingsConstants.LOCKIN_PERIOD_COL, rowHeader, "Locked In For"); writeString(SavingsConstants.LOCKIN_PERIOD_COL, rowHeader, "Locked In For*");
writeString(SavingsConstants.APPLY_WITHDRAWAL_FEE_FOR_TRANSFERS, rowHeader, "Apply Withdrawal Fee For Transfers"); writeString(SavingsConstants.APPLY_WITHDRAWAL_FEE_FOR_TRANSFERS, rowHeader, "Apply Withdrawal Fee For Transfers");
writeString(SavingsConstants.LOOKUP_CLIENT_NAME_COL, rowHeader, "Client Name"); writeString(SavingsConstants.LOOKUP_CLIENT_NAME_COL, rowHeader, "Client Name");
@@ -234,8 +234,8 @@ public class SavingsWorkbookPopulator extends AbstractWorkbookPopulator {
DataValidationConstraint fieldOfficerNameConstraint = validationHelper DataValidationConstraint fieldOfficerNameConstraint = validationHelper
.createFormulaListConstraint("INDIRECT(CONCATENATE(\"Staff_\",$A1))"); .createFormulaListConstraint("INDIRECT(CONCATENATE(\"Staff_\",$A1))");
DataValidationConstraint submittedDateConstraint = validationHelper.createDateConstraint( DataValidationConstraint submittedDateConstraint = validationHelper.createDateConstraint(
DataValidationConstraint.OperatorType.BETWEEN, DataValidationConstraint.OperatorType.BETWEEN, "=DATEVALUE(VLOOKUP($C1,$AF$2:$AG$"
"=VLOOKUP($C1,$AF$2:$AG$" + (clientSheetPopulator.getClientsSize() + groupSheetPopulator.getGroupsSize() + 1) + ",2,FALSE)", + (clientSheetPopulator.getClientsSize() + groupSheetPopulator.getGroupsSize() + 1) + ",2,FALSE))",
"=TODAY()", dateFormat); "=TODAY()", dateFormat);
DataValidationConstraint approvalDateConstraint = validationHelper DataValidationConstraint approvalDateConstraint = validationHelper
.createDateConstraint(DataValidationConstraint.OperatorType.BETWEEN, "=$F1", "=TODAY()", dateFormat); .createDateConstraint(DataValidationConstraint.OperatorType.BETWEEN, "=$F1", "=TODAY()", dateFormat);
@@ -310,24 +310,25 @@ public class LoanAccountData {
public static LoanAccountData importInstanceGroup(EnumOptionData loanTypeEnumOption, Long groupIdforGroupLoan, Long productId, public static LoanAccountData importInstanceGroup(EnumOptionData loanTypeEnumOption, Long groupIdforGroupLoan, Long productId,
Long loanOfficerId, LocalDate submittedOnDate, Long fundId, BigDecimal principal, Integer numberOfRepayments, Long loanOfficerId, LocalDate submittedOnDate, Long fundId, BigDecimal principal, Integer numberOfRepayments,
Integer repaidEvery, EnumOptionData repaidEveryFrequencyEnums, Integer loanTermFrequency, Integer repaidEvery, EnumOptionData repaidEveryFrequencyEnums, Integer loanTermFrequency,
EnumOptionData loanTermFrequencyTypeEnum, BigDecimal nominalInterestRate, EnumOptionData amortizationEnumOption, EnumOptionData loanTermFrequencyTypeEnum, BigDecimal nominalInterestRate, LocalDate expectedDisbursementDate,
EnumOptionData interestMethodEnum, EnumOptionData interestCalculationPeriodEnum, BigDecimal arrearsTolerance, EnumOptionData amortizationEnumOption, EnumOptionData interestMethodEnum, EnumOptionData interestCalculationPeriodEnum,
String transactionProcessingStrategyCode, Integer graceOnPrincipalPayment, Integer graceOnInterestPayment, BigDecimal arrearsTolerance, String transactionProcessingStrategyCode, Integer graceOnPrincipalPayment,
Integer graceOnInterestCharged, LocalDate interestChargedFromDate, LocalDate repaymentsStartingFromDate, Integer rowIndex, Integer graceOnInterestPayment, Integer graceOnInterestCharged, LocalDate interestChargedFromDate,
ExternalId externalId, String linkAccountId, String locale, String dateFormat, Integer fixedLength) { LocalDate repaymentsStartingFromDate, Integer rowIndex, ExternalId externalId, String linkAccountId, String locale,
String dateFormat, Integer fixedLength) {
return new LoanAccountData().setLoanType(loanTypeEnumOption).setGroupId(groupIdforGroupLoan).setProductId(productId) return new LoanAccountData().setLoanType(loanTypeEnumOption).setGroupId(groupIdforGroupLoan).setProductId(productId)
.setLoanOfficerId(loanOfficerId).setSubmittedOnDate(submittedOnDate).setFundId(fundId).setPrincipal(principal) .setLoanOfficerId(loanOfficerId).setSubmittedOnDate(submittedOnDate).setFundId(fundId).setPrincipal(principal)
.setNumberOfRepayments(numberOfRepayments).setRepaymentEvery(repaidEvery) .setNumberOfRepayments(numberOfRepayments).setRepaymentEvery(repaidEvery)
.setRepaymentFrequencyType(repaidEveryFrequencyEnums).setLoanTermFrequency(loanTermFrequency) .setRepaymentFrequencyType(repaidEveryFrequencyEnums).setLoanTermFrequency(loanTermFrequency)
.setLoanTermFrequencyType(loanTermFrequencyTypeEnum).setInterestRatePerPeriod(nominalInterestRate) .setLoanTermFrequencyType(loanTermFrequencyTypeEnum).setInterestRatePerPeriod(nominalInterestRate)
.setAmortizationTypeOptions(List.of(amortizationEnumOption)).setInterestType(interestMethodEnum) .setAmortizationType(amortizationEnumOption).setInterestType(interestMethodEnum)
.setInterestCalculationPeriodType(interestCalculationPeriodEnum).setInArrearsTolerance(arrearsTolerance) .setExpectedDisbursementDate(expectedDisbursementDate).setInterestCalculationPeriodType(interestCalculationPeriodEnum)
.setTransactionProcessingStrategyCode(transactionProcessingStrategyCode).setGraceOnPrincipalPayment(graceOnPrincipalPayment) .setInArrearsTolerance(arrearsTolerance).setTransactionProcessingStrategyCode(transactionProcessingStrategyCode)
.setGraceOnInterestPayment(graceOnInterestPayment).setGraceOnInterestCharged(graceOnInterestCharged) .setGraceOnPrincipalPayment(graceOnPrincipalPayment).setGraceOnInterestPayment(graceOnInterestPayment)
.setInterestChargedFromDate(interestChargedFromDate).setRepaymentsStartingFromDate(repaymentsStartingFromDate) .setGraceOnInterestCharged(graceOnInterestCharged).setInterestChargedFromDate(interestChargedFromDate)
.setRowIndex(rowIndex).setExternalId(externalId).setLinkAccountId(linkAccountId).setLocale(locale).setDateFormat(dateFormat) .setRepaymentsStartingFromDate(repaymentsStartingFromDate).setRowIndex(rowIndex).setExternalId(externalId)
.setFixedLength(fixedLength); .setLinkAccountId(linkAccountId).setLocale(locale).setDateFormat(dateFormat).setFixedLength(fixedLength);
} }
public LoanAccountData withClientData(final ClientData clientData) { public LoanAccountData withClientData(final ClientData clientData) {
@@ -164,7 +164,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead
sqlBuilder.append(" join m_office o on o.id = c.office_id"); sqlBuilder.append(" join m_office o on o.id = c.office_id");
sqlBuilder.append(" where o.hierarchy like ?"); sqlBuilder.append(" where o.hierarchy like ?");
final Object[] objectArray = new Object[2]; final Object[] objectArray = new Object[3];
objectArray[0] = hierarchySearchString; objectArray[0] = hierarchySearchString;
int arrayPos = 1; int arrayPos = 1;
if (searchParameters != null) { if (searchParameters != null) {
@@ -181,9 +181,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead
arrayPos = arrayPos + 1; arrayPos = arrayPos + 1;
} }
if (searchParameters.getOfficeId() != null) { if (searchParameters.getOfficeId() != null) {
sqlBuilder.append("and c.office_id =?"); sqlBuilder.append(" and c.office_id = ?");
objectArray[arrayPos] = searchParameters.getOfficeId(); objectArray[arrayPos++] = searchParameters.getOfficeId();
arrayPos = arrayPos + 1;
} }
if (searchParameters.hasOrderBy()) { if (searchParameters.hasOrderBy()) {
sqlBuilder.append(" order by ").append(searchParameters.getOrderBy()); sqlBuilder.append(" order by ").append(searchParameters.getOrderBy());