EN · DE · RU · FR · ES

#413: KontoDao.java

projectforge-business/src/main/java/org/projectforge/business/fibu/KontoDao.java Тип: Java · Роль: Объект доступа к данным · Источник: projectforge-business/src/main/java/org/projectforge/business/fibu/KontoDao.java 85 строк · 49 кода · 26 комментариев · 10 пустых
Объект доступа к данным для сущностей Konto. Расширяет BaseDao, предоставляя CRUD-операции, запросы Hibernate Search и доступ к данным на уровне бизнес-логики.

Структура кода

Пакет: org.projectforge.business.fibu

Классы: KontoDao

Расширяет: BaseDao

Методы (5): afterInsertOrModify, getKonto, newInstance, getKontoCache, onInsertOrModify

Поля (2): USER_RIGHT_ID, kontoCache

Импорты: 8 пакетов

Исходный код (сокращённый)

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());
            // Случай вставки
            if (existingAccount != null && (obj.getId() == null || !obj.getId().equals(existingAccount.getId()))) {
                throw new UserException("fibu.konto.validate.duplicate");
            }
        }
    }
}

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024->2025.
5989b32fd BaseDao: рефакторинг механизма onChangeListener.
1b50060c3 BaseDao: переименовано: get -> find, save -> insert, getList -> select, load -> select
3aeda5ef5 Большое изменение: все save|update|...InTrans переименованы (InTrans удалён). PfPesistenceContext больше не требуется в качестве параметра (вместо него используется ThreadLocal). (все тесты всех пакетов: OK).