/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans.directory.district;
import beans.UserRightsSet;
import beans.directory.district.entity.District;
import beans.directory.district.entity.DistrictDetails;
import beans.directory.lpu.entity.Lpu;
import beans.user.client.entity.Client;
import framework.beans.directory.DirectoryBean;
import framework.generic.ClipsServerException;
import framework.generic.EDataIntegrity;
import framework.security.UserRight;
import javax.ejb.Stateful;
/**
*
* @author petr
*/
@Stateful(mappedName="clips-beans/DirectoryDistrictBean")
public class DirectoryDistrictBean extends DirectoryBean<District, DistrictDetails> implements DirectoryDistrictBeanRemote {
public DirectoryDistrictBean() {
super(District.class, "Терапевтические участки");
}
@Override
protected UserRight getRightForCreateDirectoryItem() {
return UserRightsSet.WRITE_CLINIC_ADMIN_DIRECTORY;
}
@Override
protected UserRight getRightForWriteToDirectory() {
return UserRightsSet.WRITE_CLINIC_ADMIN_DIRECTORY;
}
@Override
protected void set(District entity, DistrictDetails details) throws ClipsServerException {
District district = entity;
DistrictDetails d = details;
district.setTitle(d.title);
district.setLpu(findEntity(Lpu.class, details.lpu));
}
/**
* Проверка данных при удалении типа справки
* Справок данного типа в базе быть не должно
* @param entity
* @throws ClipsServerException есть справки данного типа в базе
*/
@Override
protected void onRemove(District entity) throws ClipsServerException {
Field f[] = { new Field("district", entity) };
if(getEntityCount(Client.class, f) > 0) {
throw new EDataIntegrity("В базе есть пациенты, приписанные к данному участку, удаление невозможно");
}
}
/**
* Проверка данных при создании нового типа справки
* Данные не должны быть пустыми
* @param details детали новой сущности
* @throws ClipsServerException
*/
@Override
protected void onAppend(DistrictDetails details) throws ClipsServerException {
check(details);
}
/**
* Проверка данных при редактировании справки
* Данные не должны быть пустыми
* @param entity сущность типа
* @param details новые детали сущности
* @throws ClipsServerException
*/
@Override
protected void onUpdate(District entity, DistrictDetails details) throws ClipsServerException {
check(details);
}
/**
* проверка полей на валидность
* @param details
* @throws generic.ClipsServerException
*/
private void check(DistrictDetails details) throws ClipsServerException {
DistrictDetails d = details;
if (d.lpu == 0){
throw new EDataIntegrity("Не задана поликлиника");
}
}
}