EN · DE · RU · FR · ES

#413: KontoDao.java

projectforge-business/src/main/java/org/projectforge/business/fibu/KontoDao.java Typ: Java · Rolle: Datenzugriffsobjekt · Quelle: projectforge-business/src/main/java/org/projectforge/business/fibu/KontoDao.java 85 Zeilen · 49 Code · 26 Kommentare · 10 leer
Datenzugriffsobjekt für Konto-Entitäten. Erweitert BaseDao, um CRUD-Operationen, Hibernate-Search-Abfragen und Datenzugriff auf Geschäftslogik-Ebene bereitzustellen.

Codestruktur

Paket: org.projectforge.business.fibu

Klassen: KontoDao

Erweitert: BaseDao

Methoden (5): afterInsertOrModify, getKonto, newInstance, getKontoCache, onInsertOrModify

Felder (2): USER_RIGHT_ID, kontoCache

Importe: 8 Pakete

Quellcode (gekürzt)

package org.projectforge.business.fibu;

import kotlin.Pair;
import org.jetbrains.annotations.NotNull;
import org.projectforge.business.user.UserRightId;
import org.projectforge.common.i18n.UserException;
import org.projectforge.framework.access.OperationType;
import org.projectforge.framework.persistence.api.BaseDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class KontoDao extends BaseDao<KontoDO> {
    public static final UserRightId USER_RIGHT_ID = UserRightId.FIBU_ACCOUNTS;

    @Autowired
    private KontoCache kontoCache;

    public KontoDao() {
        super(KontoDO.class);
        userRightId = USER_RIGHT_ID;
    }

    @Override
    public void afterInsertOrModify(@NotNull final KontoDO obj, final OperationType operationType) {
        getKontoCache().refresh();
    }

    public KontoDO getKonto(final Integer kontonummer) {
        if (kontonummer == null) {
            return null;
        }
        return persistenceService.selectNamedSingleResult(
                KontoDO.FIND_BY_NUMMER,
                KontoDO.class,
                new Pair<>("nummer", kontonummer));
    }

    @NotNull
    @Override
    public KontoDO newInstance() {
        return new KontoDO();
    }

    /**
     * @return the kontoCache
     */
    public KontoCache getKontoCache() {
        return kontoCache;
    }

    @Override
    public void onInsertOrModify(final KontoDO obj, final OperationType operationType) {
        if (obj.getNummer() != null && obj.getNummer() > 0) {
            KontoDO existingAccount = getKonto(obj.getNummer());
            //Einfügefall
            if (existingAccount != null && (obj.getId() == null || !obj.getId().equals(existingAccount.getId()))) {
                throw new UserException("fibu.konto.validate.duplicate");
            }
        }
    }
}

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quelldatei-Header: 2024 -> 2025.
5989b32fd BaseDao: Mechanismus von onChangeLister umgestaltet.
1b50060c3 BaseDao: umbenannt: get -> find, save -> insert, getList -> select, load -> select
3aeda5ef5 Große Änderung: alle save|update|...InTrans umbenannt (InTrans entfernt). PfPesistenceContext als Parameter nicht mehr benötigt (ThreadLocal wird stattdessen verwendet). (alle Tests aller Pakete: OK).