KundeDao.javaPackage : org.projectforge.business.fibu
Classes : KundeDao
Étend : BaseDao
Méthodes (9) : select, hasUserSelectAccess, hasUserSelectAccess, hasAccess, hasHistoryAccess, newInstance, isNew, onInsert, doesNumberAlreadyExist
Importations : 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);
}
/**
* retourne Toujours vrai, aucun accès de sélection générique nécessaire pour les objets adresse.
*/
@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()) {
// Un chef de projet ne voit pas les clients inactifs ou supprimés.
return true;
}
}
if (throwException) {
accessChecker.checkIsUserMemberOfGroup(user, ProjectForgeGroup.FINANCE_GROUP);
log.error("Cela ne devrait pas arriver ! Une exception devrait être levée.");
}
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; // l'identifiant n'est pas nul lors de l'insertion de nouveaux clients
}
@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 En-têtes des fichiers source : 2024 -> 2025. 3785f8347 Migration en cours... 1b50060c3 BaseDao : renommé : get -> find, save -> insert, getList -> select, load -> select