| /** |
| * 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. |
| */ |
| package org.apache.fineract.infrastructure.core.service; |
| |
| import org.apache.commons.lang.StringUtils; |
| |
| public final class SearchParameters { |
| |
| private final String sqlSearch; |
| private final Long officeId; |
| private final String externalId; |
| private final String name; |
| private final String hierarchy; |
| private final String firstname; |
| private final String lastname; |
| private final Integer offset; |
| private final Integer limit; |
| private final String orderBy; |
| private final String sortOrder; |
| private final String accountNo; |
| private final String currencyCode; |
| |
| private final Long staffId; |
| |
| private final Long loanId; |
| |
| private final Long savingsId; |
| private final Boolean orphansOnly; |
| |
| //Provisning Entries Search Params |
| private final Long provisioningEntryId ; |
| private final Long productId ; |
| private final Long categoryId ; |
| private final boolean isSelfUser; |
| |
| public static SearchParameters from(final String sqlSearch, final Long officeId, final String externalId, final String name, |
| final String hierarchy) { |
| final Long staffId = null; |
| final String accountNo = null; |
| final Long loanId = null; |
| final Long savingsId = null; |
| final Boolean orphansOnly = false; |
| final boolean isSelfUser = false; |
| return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, null, null, null, null, staffId, |
| accountNo, loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| public static SearchParameters forClients(final String sqlSearch, final Long officeId, final String externalId, |
| final String displayName, final String firstname, final String lastname, final String hierarchy, final Integer offset, |
| final Integer limit, final String orderBy, final String sortOrder, final Boolean orphansOnly, final boolean isSelfUser) { |
| |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final Long staffId = null; |
| final String accountNo = null; |
| final Long loanId = null; |
| final Long savingsId = null; |
| |
| return new SearchParameters(sqlSearch, officeId, externalId, displayName, hierarchy, firstname, lastname, offset, maxLimitAllowed, |
| orderBy, sortOrder, staffId, accountNo, loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| public static SearchParameters forGroups(final String sqlSearch, final Long officeId, final Long staffId, final String externalId, |
| final String name, final String hierarchy, final Integer offset, final Integer limit, final String orderBy, |
| final String sortOrder, final Boolean orphansOnly) { |
| |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final String accountNo = null; |
| final Long loanId = null; |
| final Long savingsId = null; |
| final boolean isSelfUser = false; |
| |
| return new SearchParameters(sqlSearch, officeId, externalId, name, hierarchy, null, null, offset, maxLimitAllowed, orderBy, |
| sortOrder, staffId, accountNo, loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| public static SearchParameters forOffices(final String orderBy, final String sortOrder) { |
| final Boolean orphansOnly = false; |
| final boolean isSelfUser = false; |
| return new SearchParameters(null, null, null, null, null, null, null, null, null, orderBy, sortOrder, null, null, null, null, |
| orphansOnly, isSelfUser); |
| } |
| |
| public static SearchParameters forLoans(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, |
| final String orderBy, final String sortOrder, final String accountNo) { |
| |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final Long staffId = null; |
| final Long loanId = null; |
| final Long savingsId = null; |
| final Boolean orphansOnly = false; |
| final boolean isSelfUser = false; |
| |
| return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, |
| staffId, accountNo, loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| public static SearchParameters forJournalEntries(final Long officeId, final Integer offset, final Integer limit, final String orderBy, |
| final String sortOrder, final Long loanId, final Long savingsId) { |
| |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final Long staffId = null; |
| final Boolean orphansOnly = false; |
| final boolean isSelfUser = false; |
| |
| return new SearchParameters(null, officeId, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, |
| null, loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| public static SearchParameters forJournalEntries(final Long officeId, final Integer offset, final Integer limit, final String orderBy, |
| final String sortOrder, final Long loanId, final Long savingsId, final String currencyCode) { |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final Long staffId = null; |
| final Boolean orphansOnly = false; |
| |
| return new SearchParameters(null, officeId, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, |
| null, loanId, savingsId, orphansOnly, currencyCode); |
| } |
| |
| public static SearchParameters forPagination(final Integer offset, final Integer limit, final String orderBy, final String sortOrder) { |
| |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final Long staffId = null; |
| final Long loanId = null; |
| final Long savingsId = null; |
| final Boolean orphansOnly = false; |
| final boolean isSelfUser = false; |
| |
| return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, null, |
| loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| public static SearchParameters forPagination(final Integer offset, final Integer limit) { |
| |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final Long staffId = null; |
| final Long loanId = null; |
| final Long savingsId = null; |
| final Boolean orphansOnly = false; |
| final String orderBy = null; |
| final String sortOrder = null; |
| final boolean isSelfUser = false; |
| |
| return new SearchParameters(null, null, null, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, staffId, null, |
| loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| public final static SearchParameters forProvisioningEntries(final Long provisioningEntryId, final Long officeId, final Long productId, |
| final Long categoryId, final Integer offset, final Integer limit) { |
| return new SearchParameters(provisioningEntryId, officeId, productId, categoryId, offset, limit) ; |
| } |
| |
| public static SearchParameters forSavings(final String sqlSearch, final String externalId, final Integer offset, final Integer limit, |
| final String orderBy, final String sortOrder) { |
| |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final Long staffId = null; |
| final String accountNo = null; |
| final Long loanId = null; |
| final Long savingsId = null; |
| final Boolean orphansOnly = false; |
| final boolean isSelfUser = false; |
| |
| return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, |
| staffId, accountNo, loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| public static SearchParameters forAccountTransfer(final String sqlSearch, final String externalId, final Integer offset, |
| final Integer limit, final String orderBy, final String sortOrder) { |
| |
| final Integer maxLimitAllowed = getCheckedLimit(limit); |
| final Long staffId = null; |
| final String accountNo = null; |
| final Long loanId = null; |
| final Long savingsId = null; |
| final Boolean orphansOnly = false; |
| final boolean isSelfUser = false; |
| |
| return new SearchParameters(sqlSearch, null, externalId, null, null, null, null, offset, maxLimitAllowed, orderBy, sortOrder, |
| staffId, accountNo, loanId, savingsId, orphansOnly, isSelfUser); |
| } |
| |
| private SearchParameters(final String sqlSearch, final Long officeId, final String externalId, final String name, |
| final String hierarchy, final String firstname, final String lastname, final Integer offset, final Integer limit, |
| final String orderBy, final String sortOrder, final Long staffId, final String accountNo, final Long loanId, |
| final Long savingsId, final Boolean orphansOnly, boolean isSelfUser) { |
| this.sqlSearch = sqlSearch; |
| this.officeId = officeId; |
| this.externalId = externalId; |
| this.name = name; |
| this.hierarchy = hierarchy; |
| this.firstname = firstname; |
| this.lastname = lastname; |
| this.offset = offset; |
| this.limit = limit; |
| this.orderBy = orderBy; |
| this.sortOrder = sortOrder; |
| this.staffId = staffId; |
| this.accountNo = accountNo; |
| this.loanId = loanId; |
| this.savingsId = savingsId; |
| this.orphansOnly = orphansOnly; |
| this.currencyCode = null; |
| this.provisioningEntryId = null ; |
| this.productId = null ; |
| this.categoryId = null ; |
| this.isSelfUser = isSelfUser; |
| |
| } |
| |
| private SearchParameters(final Long provisioningEntryId, final Long officeId, final Long productId, final Long categoryId, |
| final Integer offset, final Integer limit) { |
| this.sqlSearch = null; |
| this.externalId = null; |
| this.name = null; |
| this.hierarchy = null; |
| this.firstname = null; |
| this.lastname = null; |
| this.orderBy = null; |
| this.sortOrder = null; |
| this.staffId = null; |
| this.accountNo = null; |
| this.loanId = null; |
| this.savingsId = null; |
| this.orphansOnly = null; |
| this.currencyCode = null; |
| this.officeId = officeId; |
| this.offset = offset; |
| this.limit = limit; |
| this.provisioningEntryId = provisioningEntryId ; |
| this.productId = productId ; |
| this.categoryId = categoryId ; |
| this.isSelfUser = false; |
| |
| } |
| |
| public SearchParameters(final String sqlSearch, final Long officeId, final String externalId, final String name, final String hierarchy, |
| final String firstname, final String lastname, final Integer offset, final Integer limit, final String orderBy, |
| final String sortOrder, final Long staffId, final String accountNo, final Long loanId, final Long savingsId, |
| final Boolean orphansOnly, final String currencyCode) { |
| this.sqlSearch = sqlSearch; |
| this.officeId = officeId; |
| this.externalId = externalId; |
| this.name = name; |
| this.hierarchy = hierarchy; |
| this.firstname = firstname; |
| this.lastname = lastname; |
| this.offset = offset; |
| this.limit = limit; |
| this.orderBy = orderBy; |
| this.sortOrder = sortOrder; |
| this.staffId = staffId; |
| this.accountNo = accountNo; |
| this.loanId = loanId; |
| this.savingsId = savingsId; |
| this.orphansOnly = orphansOnly; |
| this.currencyCode = currencyCode; |
| this.provisioningEntryId = null ; |
| this.productId = null ; |
| this.categoryId = null ; |
| this.isSelfUser = false; |
| } |
| |
| public boolean isOrderByRequested() { |
| return StringUtils.isNotBlank(this.orderBy); |
| } |
| |
| public boolean isSortOrderProvided() { |
| return StringUtils.isNotBlank(this.sortOrder); |
| } |
| |
| public static Integer getCheckedLimit(final Integer limit) { |
| |
| final Integer maxLimitAllowed = 200; |
| // default to max limit first off |
| Integer checkedLimit = maxLimitAllowed; |
| |
| if (limit != null && limit > 0) { |
| checkedLimit = limit; |
| } else if (limit != null) { |
| // unlimited case: limit provided and 0 or less |
| checkedLimit = null; |
| } |
| |
| return checkedLimit; |
| } |
| |
| public boolean isOfficeIdPassed() { |
| return this.officeId != null && this.officeId != 0; |
| } |
| |
| public boolean isCurrencyCodePassed() { |
| return this.currencyCode != null; |
| } |
| |
| public boolean isLimited() { |
| return this.limit != null && this.limit.intValue() > 0; |
| } |
| |
| public boolean isOffset() { |
| return this.offset != null; |
| } |
| |
| public boolean isScopedByOfficeHierarchy() { |
| return StringUtils.isNotBlank(this.hierarchy); |
| } |
| |
| public String getSqlSearch() { |
| return this.sqlSearch; |
| } |
| |
| public Long getOfficeId() { |
| return this.officeId; |
| } |
| |
| public String getCurrencyCode() { |
| return this.currencyCode; |
| } |
| |
| public String getExternalId() { |
| return this.externalId; |
| } |
| |
| public String getName() { |
| return this.name; |
| } |
| |
| public String getHierarchy() { |
| return this.hierarchy; |
| } |
| |
| public String getFirstname() { |
| return this.firstname; |
| } |
| |
| public String getLastname() { |
| return this.lastname; |
| } |
| |
| public Integer getOffset() { |
| return this.offset; |
| } |
| |
| public Integer getLimit() { |
| return this.limit; |
| } |
| |
| public String getOrderBy() { |
| return this.orderBy; |
| } |
| |
| public String getSortOrder() { |
| return this.sortOrder; |
| } |
| |
| public boolean isStaffIdPassed() { |
| return this.staffId != null && this.staffId != 0; |
| } |
| |
| public Long getStaffId() { |
| return this.staffId; |
| } |
| |
| public String getAccountNo() { |
| return this.accountNo; |
| } |
| |
| public boolean isLoanIdPassed() { |
| return this.loanId != null && this.loanId != 0; |
| } |
| |
| public boolean isSavingsIdPassed() { |
| return this.savingsId != null && this.savingsId != 0; |
| } |
| |
| public Long getLoanId() { |
| return this.loanId; |
| } |
| |
| public Long getSavingsId() { |
| return this.savingsId; |
| } |
| |
| public Boolean isOrphansOnly() { |
| if (this.orphansOnly != null) { return this.orphansOnly; } |
| return false; |
| } |
| |
| public Long getProvisioningEntryId() { |
| return this.provisioningEntryId; |
| } |
| |
| public boolean isProvisioningEntryIdPassed() { |
| return this.provisioningEntryId != null && this.provisioningEntryId != 0 ; |
| } |
| |
| public Long getProductId() { |
| return this.productId; |
| } |
| |
| public boolean isProductIdPassed() { |
| return this.productId != null && this.productId != 0 ; |
| } |
| public Long getCategoryId() { |
| return this.categoryId; |
| } |
| |
| public boolean isCategoryIdPassed() { |
| return this.categoryId != null && this.categoryId != 0 ; |
| } |
| |
| public boolean isSelfUser() { |
| return this.isSelfUser; |
| } |
| |
| } |