check(details);
}
@Override
protected void onRemove(CheckupType entity) throws ClipsServerException {
CheckupType checkupType = entity;
Field f[] = { new Field("checkupType", checkupType) };
//проверяем, если ли связанные услуги
List serviceList = findEntityList(Service.class, f);
if(serviceList.size() > 0) {
String s = "";
for (int i = 0; i < serviceList.size(); i++) {
Service service = (Service)serviceList.get(i);
s += "\n" + service.getCodeAndTitle();
}
throw new EDataIntegrity("Удаление невозможно, с данным анализом связаны следующие услуги" + s);
}
//проверяем, есть ли связанные осмотры
Field f2[] = { new Field("checkupType", checkupType) };
if(getEntityCount(Checkup.class, f2) > 0) {
throw new EMoveToTrash("Существуют анализы и осмотры данного типа, удаление невозможно");
}
//удаляем связи с лабораториями
try {
String sql = "Select a FROM " + Laboratory.class.getSimpleName() + " a" +
", IN (a.checkupTypes) as ch WHERE ch.id = :checkupType";
Query query = manager.createQuery(sql);
query.setParameter("checkupType", checkupType.getId());
Iterator i = query.getResultList().iterator();
while(i.hasNext()) {
Laboratory lab = (Laboratory) i.next();
lab.getCheckupTypes().remove(checkupType);
manager.merge(lab);