KundeDao.javaPackage: org.projectforge.business.fibu
Classes: KundeDao
Extends: BaseDao
Methods (9): select, hasUserSelectAccess, hasUserSelectAccess, hasAccess, hasHistoryAccess, newInstance, isNew, onInsert, doesNumberAlreadyExist
Imports: 11 packages
package org.projectforge.business.fibu;
import org.jetbrains.annotations.NotNull;
import org.projectforge.business.user.ProjectForgeGroup;
import org.projectforge.common.i18n.UserException;
import org.projectforge.framework.access.OperationType;
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.persistence.api.SortProperty;
import org.projectforge.framework.persistence.user.entities.PFUserDO;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class KundeDao extends BaseDao<KundeDO> {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(KundeDao.class);
public KundeDao() {
super(KundeDO.class);
avoidNullIdCheckBeforeSave = true;
this.idProperty = "nummer";
}
@Override
public List<KundeDO> select(final BaseSearchFilter filter) {
final QueryFilter queryFilter = new QueryFilter(filter);
queryFilter.addOrder(SortProperty.asc("nummer"));
return select(queryFilter);
}
/**
* return Always true, no generic select access needed for address objects.
*/
@Override
public boolean hasUserSelectAccess(final PFUserDO user, final boolean throwException) {
return accessChecker.isUserMemberOfGroup(user, throwException, ProjectForgeGroup.FINANCE_GROUP,
ProjectForgeGroup.CONTROLLING_GROUP,
ProjectForgeGroup.PROJECT_MANAGER, ProjectForgeGroup.PROJECT_ASSISTANT);
}
@Override
public boolean hasUserSelectAccess(final PFUserDO user, final KundeDO obj, final boolean throwException) {
if (obj == null) {
return true;
}
if (accessChecker.isUserMemberOfGroup(user, ProjectForgeGroup.FINANCE_GROUP,
ProjectForgeGroup.CONTROLLING_GROUP)) {
return true;
}
if (accessChecker.isUserMemberOfGroup(user, ProjectForgeGroup.PROJECT_MANAGER,
ProjectForgeGroup.PROJECT_ASSISTANT)) {
if (obj.getStatus() != null
&& !obj.getStatus().isIn(KundeStatus.ENDED, KundeStatus.NONACTIVE, KundeStatus.NONEXISTENT)
&& !obj.getDeleted()) {
// Ein Projektleiter sieht keine nicht mehr aktiven oder gelöschten Kunden.
return true;
}
}
if (throwException) {
accessChecker.checkIsUserMemberOfGroup(user, ProjectForgeGroup.FINANCE_GROUP);
log.error("Should not occur! An exception should be thrown.");
}
return false;
}
@Override
public boolean hasAccess(final PFUserDO user, final KundeDO obj, final KundeDO oldObj,
final OperationType operationType,
final boolean throwException) {
return accessChecker.isUserMemberOfGroup(user, throwException, ProjectForgeGroup.FINANCE_GROUP);
}
@Override
public boolean hasHistoryAccess(final PFUserDO user, final boolean throwException) {
return accessChecker.isUserMemberOfGroup(user, throwException, ProjectForgeGroup.FINANCE_GROUP,
ProjectForgeGroup.CONTROLLING_GROUP);
}
@Override
public KundeDO newInstance() {
return new KundeDO();
}
@Override
public boolean isNew(@NotNull KundeDO obj) {
return obj.getCreated() == null; // id isn't null while inserting new customers
}
@Override
public void onInsert(KundeDO obj) {
if (doesNumberAlreadyExist(obj)) {
obj.setCreated(null);
throw new UserException("fibu.kunde.validation.existingCustomerNr");
}
}
public boolean doesNumberAlreadyExist(final KundeDO customer) {
if (customer == null || customer.getNummer() == null) {
return false;
}
KundeDO existingCustomer = find(customer.getNummer(), false);
return existingCustomer != null;
}
}
868d6abb7 2025 -> 2026 88be16404 BaseDao/KundeDao.isNew(data) 63081666f Source file headers: 2024-> 2025. 3785f8347 Migration stuff in progress... 1b50060c3 BaseDao: renamed: get -> find, save -> insert, getList -> select, load -> select