EN · DE · RU · FR · ES

#157 : LiquidityEntryDao.java

plugins/org.projectforge.plugins.liquidityplanning/src/main/java/org/projectforge/plugins/liquidityplanning/LiquidityEntryDao.java Type : Java · Rôle : Objet d'accès aux données · Source : plugins/org.projectforge.plugins.liquidityplanning/src/main/java/org/projectforge/plugins/liquidityplanning/LiquidityEntryDao.java 111 lignes · 76 code · 28 commentaires · 7 vides
Objet d'accès aux données pour les entités LiquidityEntry. Étend BaseDao pour fournir des opérations CRUD, des requêtes Hibernate Search et un accès aux données au niveau de la logique métier.

Structure du code

Paquetage : org.projectforge.plugins.liquidityplanning

Classes : LiquidityEntryDao

Étend : BaseDao

Méthodes (3) : buildStatistics, select, newInstance

Importations : 10 paquetages

Code source (abrégé)

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())) {
          // Entrée antérieure à aujourd'hui :
          if (myFilter.getPaymentStatus() == PaymentStatus.PAID || entry.getPaid()) {
            // Ignorer les entrées passées si elles ont été payées. Ignorer également les entrées passées impayées si l'utilisateur souhaite filtrer uniquement les entrées payées.
            continue;
          }
        } else {
          if (baseDate.daysBetween(entry.getDateOfPayment()) > myFilter.getNextDays()) {
            continue;
          }
        }
      }
      result.add(entry);
    }
    return result;
  }

  @Override
  public LiquidityEntryDO newInstance() {
    return new LiquidityEntryDO();
  }
}

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 2024 -> 2025.
b71b5073d Travaux de migration en cours... (tous les tests de tous les paquetages : OK).
1b50060c3 BaseDao : renommé : get -> find, save -> insert, getList -> select, load -> select
5bafe7941 @Repository -> @Service. Annotations @Transactional supprimées.