/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans.profcheckup;
import framework.beans.EntityDetails;
import framework.beans.FacadeBean;
import framework.beans.security.BeanRights;
import beans.profcheckup.entity.Profcheckup;
import beans.profcheckup.entity.ProfcheckupDetails;
import beans.profcheckup.entity.ProfcheckupItem;
import beans.profcheckup.entity.ProfcheckupItemDetails;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import framework.generic.ClipsServerException;
import framework.generic.EDataIntegrity;
import javax.ejb.Stateful;
import beans.UserRightsSet;import framework.audit.AuditDoc;
import framework.security.RightChecker;
import framework.security.UserRight;
import java.util.Date;
/**
* @security - Ok.
* @author axe
*/
@Stateful(mappedName="clips-beans/ProfcheckupBean")
public class ProfcheckupBean extends FacadeBean<Profcheckup>
implements ProfcheckupBeanRemote {
public static final UserRight RIGHT_CREATION = UserRightsSet.WRITE_PROFCHECKUP;
public static int COMMAND_READ_PROFCHECKUP_ITEM = 4;
public ProfcheckupBean() {
super(Profcheckup.class);
}
@Override
protected void initBeanRights() {
int [] r = new int[5];
r[COMMAND_READ] = RightPresence(UserRightsSet.READ_PROFCHECKUP.id);
int cmr = RightPresence(UserRightsSet.WRITE_PROFCHECKUP.id);
r[COMMAND_CREATE] = cmr;
r[COMMAND_MODIFY] = cmr;
r[COMMAND_REMOVE] = cmr;
r[COMMAND_READ_PROFCHECKUP_ITEM] = RightPresence(UserRightsSet.READ_PROFCHECKUP_ITEM.id);
rights = new BeanRights(r);
}
/**
* Обновляет данные сущности.
* @param details новые детали сущности
* @throws ClipsServerException
* @return идентификатор сущности
*/
@Override
protected void onUpdate(Profcheckup entity, EntityDetails details,
AuditDoc auditDoc, List<AuditDoc> auditDocList) throws ClipsServerException{
// TODO - Можно редактировать! Но надо додумать
// throw new EDataIntegrity("Прямое редактирование профосмотров запрещено");
ProfcheckupDetails d = (ProfcheckupDetails) details;
if (d.dateFrom.after(d.dateTill)){
throw new EDataIntegrity("Время окончания профосмотра не может быть меньше времени его начала");
}
entity.setDatefrom(d.dateFrom);
entity.setDatetill(d.dateTill);
entity.setDescription(d.description);
}
@Override
protected void onRemove(Profcheckup entity, List<AuditDoc> audit) throws ClipsServerException {
//можно удалить, но только когда удалены все итемы
//вообще говоря человек удаляя профосмотр вряд ли хочет лезть и чистить всё ручками,
//проблема в том, что услуги уже назначены, и возможно оплачены
//но! транзакций по ним ещо нет! поэтому ща будем удалять каскадом
ProfcheckupItemBeanRemote pibr = getBean(ProfcheckupItemBean.class);
// ProfcheckupItemBeanRemote pibr = getBean(ProfcheckupItemBeanRemote.class, getSessionId());
List contracts = findEntityList(ProfcheckupItem.class, "profcheckup", entity);
Iterator i = contracts.iterator();
while(i.hasNext()) {
ProfcheckupItem j = (ProfcheckupItem) i.next();
pibr.initByID(j.getId(), getSessionId());
pibr.remove();
}
// throw new EDataIntegrity("Прямое редактирование профосмотров запрещено");
}
/**
* Возвращает список итемов
* @return список услуг договора
*/
@Override
public List<ProfcheckupItemDetails> getItems() throws ClipsServerException {
checkCommandAccessibility(COMMAND_READ_PROFCHECKUP_ITEM);
Profcheckup entity = getExistentEntity();
List contracts = findEntityList(ProfcheckupItem.class, "profcheckup", entity);
List<ProfcheckupItemDetails> res = new ArrayList<ProfcheckupItemDetails>();
Iterator i = contracts.iterator();
while(i.hasNext()) {
ProfcheckupItem j = (ProfcheckupItem) i.next();
res.add(j.getDetails((RightChecker) this));
}
return res;
}
}