/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans.directory.certificate;
import beans.directory.certificate.entity.CertificateTypeDetails;
import framework.beans.directory.DirectoryBean;
import beans.directory.certificate.entity.CertificateType;
import beans.doctor.certificate.Certificate;
import framework.beans.report.ReportDefinition;
import framework.generic.ClipsServerException;
import framework.generic.EDataIntegrity;
import framework.generic.EMoveToTrash;
import javax.ejb.Stateful;
import beans.UserRightsSet;
import framework.security.UserRight;
/**
* @security Ok.
* @author axe
* Типы справок
*/
@Stateful(mappedName="clips-beans/DirectoryCertificateTypeBean")
public class DirectoryCertificateTypeBean extends DirectoryBean<CertificateType, CertificateTypeDetails>
implements DirectoryCertificateTypeBeanRemote {
public DirectoryCertificateTypeBean() {
super(CertificateType.class, "тип справки");
}
@Override
protected UserRight getRightForCreateDirectoryItem() {
return UserRightsSet.WRITE_REGION_ADMIN_DIRECTORY;
}
@Override
protected UserRight getRightForWriteToDirectory() {
return UserRightsSet.WRITE_REGION_ADMIN_DIRECTORY;
}
@Override
protected void set(CertificateType certificateType, CertificateTypeDetails d) throws ClipsServerException {
certificateType.setTitle(d.title);
//certificateType.setDirty(details.dirty);
certificateType.setReportDefinition(findEntity(ReportDefinition.class, d.reportDefinitionID));
certificateType.setTrash(d.hidden);
}
/**
* Проверка данных при удалении типа справки
* Справок данного типа в базе быть не должно
* @param details детали новой сущности
* @throws generic.ClipsServerException есть справки данного типа в базе
*/
@Override
protected void onRemove(CertificateType entity) throws ClipsServerException {
Field f[] = { new Field("type", entity) };
if(getEntityCount(Certificate.class, f) > 0) {
throw new EMoveToTrash("В базе есть справки данного типа, удаление невозможно");
}
}
/**
* Проверка данных при создании нового типа справки
* Данные не должны быть пустыми
* @param details детали новой сущности
* @throws generic.ClipsServerException
*/
@Override
protected void onAppend(CertificateTypeDetails details) throws ClipsServerException {
check(details);
}
/**
* Проверка данных при редактировании справки
* Данные не должны быть пустыми
* @param entity сущность типа
* @param details новые детали сущности
* @throws generic.ClipsServerException
*/
@Override
protected void onUpdate(CertificateType entity, CertificateTypeDetails details) throws ClipsServerException {
check(details);
}
/**
* проверка полей на валидность
* @param details
* @throws generic.ClipsServerException
*/
private void check(CertificateTypeDetails d) throws ClipsServerException {
if (d.reportDefinitionID == 0) {
throw new EDataIntegrity("Не задан отчет, которым будет распечатываться справка");
}
}
}