LiquidityEntryDao.javaPackage: org.projectforge.plugins.liquidityplanning
Classes: LiquidityEntryDao
Extends: BaseDao
Methods (3): buildStatistics, select, newInstance
Imports: 10 packages
package org.projectforge.plugins.liquidityplanning;
import org.projectforge.business.fibu.AmountType;
import org.projectforge.business.fibu.PaymentStatus;
import org.projectforge.framework.persistence.api.BaseDao;
import org.projectforge.framework.persistence.api.BaseSearchFilter;
import org.projectforge.framework.persistence.api.QueryFilter;
import org.projectforge.framework.time.PFDay;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
/**
* @author Kai Reinhard (k.reinhard@micromata.de)
*/
@Service
public class LiquidityEntryDao extends BaseDao<LiquidityEntryDO> {
public LiquidityEntryDao() {
super(LiquidityEntryDO.class);
userRightId = LiquidityplanningPluginUserRightId.PLUGIN_LIQUIDITY_PLANNING;
}
public LiquidityEntriesStatistics buildStatistics(final List<LiquidityEntryDO> list) {
final LiquidityEntriesStatistics stats = new LiquidityEntriesStatistics();
if (list == null) {
return stats;
}
for (final LiquidityEntryDO entry : list) {
stats.add(entry);
}
return stats;
}
@Override
public List<LiquidityEntryDO> select(final BaseSearchFilter filter) {
final LiquidityFilter myFilter;
if (filter instanceof LiquidityFilter) {
myFilter = (LiquidityFilter) filter;
} else {
myFilter = new LiquidityFilter(filter);
}
final QueryFilter queryFilter = new QueryFilter(myFilter);
final List<LiquidityEntryDO> list = select(queryFilter);
if (myFilter.getPaymentStatus() == PaymentStatus.ALL
&& myFilter.getAmountType() == AmountType.ALL
&& myFilter.getNextDays() <= 0
|| myFilter.getDeleted()) {
return list;
}
final List<LiquidityEntryDO> result = new ArrayList<>();
final PFDay baseDate = PFDay.fromOrNow(myFilter.getBaseDate());
for (final LiquidityEntryDO entry : list) {
if (myFilter.getPaymentStatus() == PaymentStatus.PAID && !entry.getPaid()) {
continue;
}
if (myFilter.getPaymentStatus() == PaymentStatus.UNPAID && entry.getPaid()) {
continue;
}
if (myFilter.getNextDays() > 0) {
LocalDate dateOfPayment = entry.getDateOfPayment();
if (dateOfPayment == null) {
dateOfPayment = baseDate.getLocalDate();
}
if (dateOfPayment.isBefore(baseDate.getLocalDate())) {
// Entry is before today:
if (myFilter.getPaymentStatus() == PaymentStatus.PAID || entry.getPaid()) {
// Ignore entries of the past if they were paid. Also ignore unpaid entries of the past if the user wants to filter only paid
// entries.
continue;
}
} else {
if (baseDate.daysBetween(entry.getDateOfPayment()) > myFilter.getNextDays()) {
continue;
}
}
}
result.add(entry);
}
return result;
}
@Override
public LiquidityEntryDO newInstance() {
return new LiquidityEntryDO();
}
}
868d6abb7 2025 -> 2026 63081666f Source file headers: 2024-> 2025. b71b5073d Migration stuff in progress... (all tests of all packages: OK). 1b50060c3 BaseDao: renamed: get -> find, save -> insert, getList -> select, load -> select 5bafe7941 @Repository -> @Service. @Transactional-Annotations removed.