Package beans.cec

Source Code of beans.cec.CommitteeBean

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package beans.cec;

import framework.beans.EntityDetails;
import framework.beans.FacadeBean;
import framework.beans.security.BeanRights;
import beans.cec.entity.Committee;
import beans.cec.entity.CommitteeDetails;
import beans.cec.entity.CommitteeDirection;
import beans.cec.entity.CommitteeDirectionDetails;
import beans.cec.entity.CommitteeMember;
import beans.cec.entity.CommitteeMemberDetails;
import beans.cec.entity.CommitteeResolution;
import beans.cec.entity.CommitteeResolutionDetails;
import beans.cec.entity.Inability;
import beans.cec.entity.InabilityDetails;
import beans.directory.mkb10.entity.Mkb10;
import beans.directory.simple.entities.CommitteeResolutionType;
import beans.doctor.direction.Direction;
import beans.user.collaborator.entities.Collaborator;
import java.util.ArrayList;
import java.util.Collection;
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.beans.ModificationInfo;
import framework.security.RightChecker;
import framework.security.UserRight;
import java.util.Date;

/**
* Бин контролирующий работу КЭК
* Security - Ok.
* @author axe
*/
@Stateful(mappedName="clips-beans/CommitteeBean")
public class CommitteeBean extends FacadeBean<Committee>
        implements CommitteeBeanRemote {
   
    public static final UserRight RIGHT_CREATION = UserRightsSet.WRITE_CEC;

    public CommitteeBean() {
        super(Committee.class);
    }
   
    @Override
    protected void initBeanRights() {
        int [] r = new int [4];
        r[COMMAND_READ] = RightPresence(UserRightsSet.READ_CEC.id);
        r[COMMAND_CREATE] = RightPresence(RIGHT_CREATION.id);
       
        int cmr = RightPresence(UserRightsSet.WRITE_CEC.id);
        r[COMMAND_MODIFY] = cmr;
        r[COMMAND_REMOVE] = cmr;
       
        rights = new BeanRights(r);
    }
   
    /**
     * Обновляет данные сущности.
     * @param details новые детали сущности
     * @return идентификатор сущности
     * @throws ClipsServerException если делается попытка изменения "задним" числом
     * @security дата в деталях не должна быть прошедшей
     */
    @Override
    protected void onUpdate(Committee entity, EntityDetails details,
            AuditDoc auditDoc, List<AuditDoc> auditDocList) throws ClipsServerException {
        CommitteeDetails d = (CommitteeDetails) details;
       
        checkIsNotInThePast(d.date);
        entity.setDate(d.date);
    }
   
    /**
     * Удаляет сущность из базы данных
     * @throws ClipsServerException удаление возможно только при отсутствии
     * связанныхз данных по* комиссии - решений, направлений на комиссию,
     * направлений на МСЭК, иначе создается исключение
     */
    @Override
    protected void onRemove(Committee entity, List<AuditDoc> audit) throws ClipsServerException {
        Field f[] = { new Field("committee", entity) };
        Field f2[] = { new Field("direction.committee", entity) };
       
        if(getEntityCount(CommitteeMember.class, f) > 0
                || getEntityCount(CommitteeDirection.class, f) > 0
                || getEntityCount(CommitteeResolution.class, f2) > 0) {
            throw new EDataIntegrity("Сначала удалите всех членов комиссии, все решения и направления "
                    + "на МСЭК, сделанные в рамках данной комиссии");
        }
    }
   
    /**
     * Возвращает список членов комиссии
     * @return список услуг договора
     * @throws ClipsServerException сущность должна быть сохранена в базу
     * @security требуется право READ_CEC
     */
    @Override
    public List<CommitteeMemberDetails> getCommitteeMemberList() throws ClipsServerException {
        checkCommandAccessibility(COMMAND_READ);
        checkEntityExist();
        return loadChildDetailsList(CommitteeMember.class, "committee");
    }   
   
     /**
     * Добавляет или обновляет члена комиссии. Если details.id = 0 сущность создается,
     * иначе обновляется существующая с заданным идентификатором.
     * @param details данные
     * @return идентификатор сущности
     * @throws ClipsServerException сущность должна быть сохранена в базу
     * @security требуется право WRITE_CEC
     */
    @Override
    public ModificationInfo setCommitteeMember(CommitteeMemberDetails details) throws ClipsServerException {
        checkCommandAccessibility(COMMAND_MODIFY);
        Committee entity = getExistentEntity();
       
        Collaborator coll = findEntity(Collaborator.class, details.collaboratorID);
    coll.checkNotFired();
       
        CommitteeMember member = null;
        AuditDoc<CommitteeMember> auditDoc;
        if(details.id != 0) {
            member = findEntity(CommitteeMember.class, details.id);
            auditDoc = new AuditDoc<CommitteeMember>(member, getCollaborator());
            checkTheSame(member.getCommittee());
        } else {
            member = new CommitteeMember();
            auditDoc = new AuditDoc<CommitteeMember>(member, getCollaborator());
            member.setCommittee(entity);
        }     
        member.setCollaborator(coll);
        int id = saveEntity(member);
        auditDoc.check(member);
        return new ModificationInfo(id, persistAudit(auditDoc));
    }
   
    /**
     * Удаляет члена комиссии.
     * @param id идентификатор члена
     * @throws ClipsServerException сущность должна быть сохранена в базу
     */
    @Override
    public ModificationInfo removeCommitteeMember(int idthrows ClipsServerException {
        checkEntityExist();
        checkCommandAccessibility(COMMAND_REMOVE);
        CommitteeMember member = findEntity(CommitteeMember.class, id);
        AuditDoc<CommitteeMember> auditDoc = new AuditDoc<CommitteeMember>(member, getCollaborator());
        checkTheSame(member.getCommittee());
        removeEntity(member);
        auditDoc.check(null);
        return new ModificationInfo(persistAudit(auditDoc));
    }   
   
    /**
     * Возвращает список направлений комиссии
     * @return список услуг договора
     * @throws ClipsServerException сущность должна быть сохранена в базу
     */
    @Override
    public List<CommitteeDirectionDetails> getCommitteeDirectionList() throws ClipsServerException {
        checkCommandAccessibility(COMMAND_READ);
        Committee entity = getExistentEntity();
       
        Collection<CommitteeDirection> list = findEntityList(CommitteeDirection.class, "committee", entity);
        List<CommitteeDirectionDetails> res = new ArrayList<CommitteeDirectionDetails>();
        Iterator<CommitteeDirection> i = list.iterator();
        while(i.hasNext()) {
            CommitteeDirection j = i.next();
            res.add(j.getDetails((RightChecker) this));
        }
        return res;         
    }   
   

     /**
     * Добавляет или обновляет направление комиссии. Если details.id = 0 сущность создается,
     * иначе обновляется существующая с заданным идентификатором.
     * @param details данные
     * @return идентификатор сущности
     * @throws ClipsServerException сущность должна быть сохранена в базу    
     */
    @Override
    public ModificationInfo setCommitteeDirection(CommitteeDirectionDetails details) throws ClipsServerException {
        checkCommandAccessibility(COMMAND_MODIFY);
        Committee entity = getExistentEntity();
       
        CommitteeDirection direct = null;
        AuditDoc<CommitteeDirection> auditDoc;
        if(details.id != 0) {
            direct = findEntity(CommitteeDirection.class, details.id);
            auditDoc = new AuditDoc<CommitteeDirection>(direct, getCollaborator());
            checkTheSame(direct.getCommittee());
        } else {
            direct = new CommitteeDirection();
            auditDoc = new AuditDoc<CommitteeDirection>(direct, getCollaborator());
            direct.setCommittee(entity);
        }  
        direct.setDirection(findEntity(Direction.class, details.directionID));
        int id = saveEntity(direct);
        auditDoc.check(direct);
        return new ModificationInfo(id, persistAudit(auditDoc));
    }
   
    /**
     * Удаляет направление комиссии.
     * @param id идентификатор члена
     * @throws ClipsServerException сущность должна быть сохранена в базу
     */
    @Override
    public ModificationInfo removeCommitteeDirection(int idthrows ClipsServerException {
        checkCommandAccessibility(COMMAND_REMOVE);
        checkEntityExist();
       
        CommitteeDirection direct = findEntity(CommitteeDirection.class, id);
        checkTheSame(direct.getCommittee());
        ArrayList<AuditDoc> auditDocList = new ArrayList<AuditDoc>();
       
        deleteEntityList2(Inability.class, new Field[]{
                new Field("committeeResolution.direction", direct)
            }, auditDocList);
                       
        deleteEntityList2(CommitteeResolution.class, new Field[]{
                new Field("direction", direct)
            }, auditDocList);
        AuditDoc<CommitteeDirection> auditDoc = new AuditDoc<CommitteeDirection>(direct, getCollaborator());
        removeEntity(direct);
        auditDoc.check(null);
        auditDocList.add(auditDoc);
        return new ModificationInfo(id, persistAudit(auditDocList));
    }
   
    /**
     * Возвращает список решений КЭК
     * @return список услуг договора
     * @throws ClipsServerException сущность должна быть сохранена в базу
     */
    @Override
    public List<CommitteeResolutionDetails> getCommitteeResolutionList() throws ClipsServerException {
        checkCommandAccessibility(COMMAND_READ);
        Committee entity = getExistentEntity();
       
        Collection<CommitteeResolution> list = findEntityList(CommitteeResolution.class, "direction.committee", entity);
        List<CommitteeResolutionDetails> res = new ArrayList<CommitteeResolutionDetails>();
        Iterator<CommitteeResolution> i = list.iterator();
        while(i.hasNext()) {
            CommitteeResolution j = i.next();
            res.add(j.getDetails((RightChecker) this));
        }
        return res;         
    }       
   
     /**
     * Добавляет или обновляет решение КЭК. Если details.id = 0 сущность создается,
     * иначе обновляется существующая с заданным идентификатором.
     * @param details данные
     * @return идентификатор сущности
     * @throws ClipsServerException сущность должна быть сохранена в базу
     */
    @Override
    public ModificationInfo setCommitteeResolution(CommitteeResolutionDetails details) throws ClipsServerException {
        checkCommandAccessibility(COMMAND_MODIFY);
        checkEntityExist();

        CommitteeResolution resolution = null;
        AuditDoc<CommitteeResolution> auditDoc;
        if(details.id != 0) {
            resolution = findEntity(CommitteeResolution.class, details.id);
            auditDoc = new AuditDoc<CommitteeResolution>(resolution, getCollaborator());
            checkTheSame(resolution.getDirection().getCommittee());
        } else {
            resolution = new CommitteeResolution();
            auditDoc = new AuditDoc<CommitteeResolution>(resolution, getCollaborator());
            CommitteeDirection comDir = findEntity(CommitteeDirection.class, details.directionID);
            resolution.setDirection(comDir);                       
        }            
       
        resolution.setType(findEntity(CommitteeResolutionType.class, details.typeID));
        resolution.setCollaborator(findEntity(Collaborator.class, details.collaboratorID));
        resolution.setDescription(details.description);
        resolution.setMkb10(details.mkb10 != 0 ? findEntity(Mkb10.class, details.mkb10) : null);
        resolution.setRendered(details.rendered);
        int id = saveEntity(resolution);
        return new ModificationInfo(id, persistAudit(auditDoc));
    }
   
    /**
     * Удаляет решение КЭК.
     * @param id идентификатор члена
     * @throws ClipsServerException сущность должна быть сохранена в базу
     */
    @Override
    public ModificationInfo removeCommitteeResolution(int id) throws ClipsServerException {
        checkCommandAccessibility(COMMAND_REMOVE);
        checkEntityExist();
       
        CommitteeResolution resolution = findEntity(CommitteeResolution.class, id);
        checkTheSame(resolution.getDirection().getCommittee());
        ArrayList<AuditDoc> auditDocList = new ArrayList<AuditDoc>();
       
        deleteEntityList2(Inability.class, new Field[]{
                new Field("committeeResolution", resolution)              
            }, auditDocList);

        AuditDoc<CommitteeResolution> auditDoc = new AuditDoc<CommitteeResolution>(resolution, getCollaborator());
        removeEntity(resolution);
        auditDoc.check(resolution);
        auditDocList.add(auditDoc);
        return new ModificationInfo(id, persistAudit(auditDocList));

    }   
   
    /**
     * Возвращает список направлений на МСЭК
     * @return список услуг договора
     */
    @Override
    public List<InabilityDetails> getCommitteeInabilityList() throws ClipsServerException {
        checkCommandAccessibility(COMMAND_READ);
        Committee entity = getExistentEntity();
       
        List<Inability> list = findEntityList(Inability.class, "committeeResolution.direction.committee", entity);
        List<InabilityDetails> res = new ArrayList<InabilityDetails>();
        Iterator i = list.iterator();
        while(i.hasNext()) {
            Inability j = (Inability) i.next();
            res.add(j.getDetails((RightChecker) this));
        }
        return res;         
    }       
   
     /**
     * Добавляет или обновляет инвалидность. Если details.id = 0 сущность создается,
     * иначе обновляется существующая с заданным идентификатором.
     * @param details данные
     * @return идентификатор сущности
     * @throws ClipsServerException сущность должна быть сохранена в базу
     */
    @Override
    public ModificationInfo setCommitteeInability(InabilityDetails details) throws ClipsServerException {
        checkCommandAccessibility(COMMAND_MODIFY);
        checkEntityExist();
       
        Inability inability = null;
        AuditDoc<Inability> auditDoc;
        if(details.id != 0) {
            inability = findEntity(Inability.class, details.id);
            auditDoc = new AuditDoc<Inability>(inability, getCollaborator());
            checkTheSame(inability.getCommitteeResolution().getDirection().getCommittee());
        } else {
            inability = new Inability();
            auditDoc = new AuditDoc<Inability>(inability, getCollaborator());
            inability.setCommitteeResolution(findEntity(CommitteeResolution.class, details.committeeResolutionID));
        }            
           
        inability.setDate(details.date);
        inability.setAnswerDate(details.dateAnswer);
        inability.setDesc(details.desc);
        inability.setLevelIn(details.levelIn);
        inability.setLevelOut(details.levelOut);
        int id = saveEntity(inability);
        auditDoc.check(inability);
        return new ModificationInfo(id, persistAudit(auditDoc));
    }    
   
    /**
     * Удаляет инвалидность.
     * @param id идентификатор члена
     * @throws ClipsServerException сущность должна быть сохранена в базу
     */
    @Override
    public ModificationInfo removeCommitteeInability(int id) throws ClipsServerException {
        checkCommandAccessibility(COMMAND_REMOVE);
        checkEntityExist();

        Inability inability = findEntity(Inability.class, id);
        AuditDoc<Inability> auditDoc = new AuditDoc<Inability>(inability, getCollaborator());
        checkTheSame(inability.getCommitteeResolution().getDirection().getCommittee());
        manager.remove(inability);
        auditDoc.check(null);
        return new ModificationInfo(persistAudit(auditDoc));
    }
}
TOP

Related Classes of beans.cec.CommitteeBean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.