Package clips.delegate.doctor.direction

Source Code of clips.delegate.doctor.direction.DirectionLocal

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package clips.delegate.doctor.direction;

import beans.directory.direction.DirectoryDirectionTypeBean;
import beans.doctor.direction.DirectionBean;
import beans.doctor.direction.DirectionBeanRemote;
import clips.delegate.client.ClientLocal;
import beans.doctor.direction.DirectionDetails;
import cli_fmw.delegate.AuditListener;
import clips.delegate.directory.complex.DirectoryDirectionType;
import clips.delegate.directory.complex.DirectoryDirectionTypeItem;
import cli_fmw.delegate.directory.complex.DirectoryLocator;
import clips.delegate.directory.complex.DirectoryMKB10;
import clips.delegate.directory.complex.DirectoryMKB10Item;
import clips.delegate.directory.filtered.DirectoryService;
import clips.delegate.directory.filtered.DirectoryServiceItem;
import clips.delegate.doctor.HasSerrenLocal;
import clips.delegate.doctor.Iconable;
import clips.delegate.DEC.DECServiceRender;
import cli_fmw.delegate.DelegateLine2;
import clips.delegate.service.SerRenLocal;
import cli_fmw.main.ClipsException;
import cli_fmw.delegate.utils.TimeLocal;
import cli_fmw.main.DelegatePrintable;
import cli_fmw.main.DirectoryItemReplacedException;
import cli_fmw.report.CombinedReportCreator;
import cli_fmw.report.FormReportCreator;
import clips.doctor.newEMC.init.generic.DelegateNodeLeaf;
import clips.delegate.directory.complex.DirectoryEnterprise;
import clips.delegate.directory.complex.DirectoryEnterpriseItem;
import clips.delegate.directory.ro.DirectoryCollaboratorItem;
import clips.delegate.directory.simple.committeeReason.DirectoryCommitteeReason;
import clips.delegate.directory.simple.committeeReason.DirectoryCommitteeReasonItem;
import clips.delegate.doctor.Signable;
import framework.utils.Converter;
import java.util.Date;
import java.util.HashMap;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import framework.utils.DateTimeUtils;

/**
* Делегат, предоставляющий доступ к одной строке таблицы direction -
* таблица направлений, а тахже подгружающий из базы данные из таблицы
* direction_type (тип направления), которые содержат тип направления,
* экранную форму и печатную форму.
* @author ViP
*/
public class DirectionLocal extends DelegateNodeLeaf<DirectionBeanRemote, DirectionDetails>
        implements Iconable, DelegatePrintable, HasSerrenLocal, Signable {

    private DECServiceRender serviceRender = new DECServiceRender(this, "информацию о б услуге, в рамках которой выписано направление", getAuditListener());
    private static ImageIcon icon = null;

    public DirectionLocal(int id, AuditListener al) throws ClipsException {
        super(id, al);
    }
   
    public DirectionLocal(int id, SerRenLocal serRen, AuditListener al) throws ClipsException {
        super(id, al);
        serviceRender.initBy(serRen);
    }

    public DirectionLocal(SerRenLocal serRen) throws ClipsException {
        super(serRen.getAuditListener());
        getDetails().date = TimeLocal.getCurrentTime().getTime();
        serviceRender.initBy(serRen);
    }

    /**
     * Инициализирует направление по деталям
     * @param details детали
     * @param serRen делегат серрен
     * @throws ClipsException
     */
    public DirectionLocal(DirectionDetails details, SerRenLocal serRen, AuditListener al) throws ClipsException {
        super(details, al);
        serviceRender.initBy(serRen);
    }

    @Override
    protected DirectionDetails getNewDetails() {
        return new DirectionDetails();
    }
   
    @Override
    public SerRenLocal getSerrenLocal() throws ClipsException {
        return serviceRender.get();
    }   
   
    public Date getDate() throws ClipsException {
        return getDetails().date;
    }

    //never use client date
    @Deprecated
    public void setDate(Date date) throws ClipsException {
        getDetails().date = date;
        fireContentStateEvent();
    }

    public DirectoryMKB10Item getMkb() throws ClipsException {
        DirectoryMKB10 dmkb = (DirectoryMKB10) DirectoryLocator.getDirectory(DirectoryMKB10.class, false);
        return dmkb.getItemFromID(getDetails().mkbID);
    }

    public void setMkb(DirectoryMKB10Item item) throws ClipsException {
        getDetails().mkbID = item.getID();
        fireContentStateEvent();
    }

    public String getDescription() throws ClipsException {
        return getDetails().description;
    }

    public void setDescription(String description) throws ClipsException {
        getDetails().description = description;
        fireContentStateEvent();
    }

    public boolean isOrdered() throws ClipsException {
        return getDetails().ordered;
    }

    public void setOrdered(boolean ordered) throws ClipsException {
        getDetails().ordered = ordered;
        fireContentStateEvent();
    }

    public DirectoryCommitteeReasonItem getCommitteeReason() throws ClipsException {
        DirectoryCommitteeReason reasons = DirectoryLocator.getDirectory(DirectoryCommitteeReason.class);
        try {
            return reasons.getItemFromID(getDetails().reasonID);
        } catch (DirectoryItemReplacedException ex) {
            reload();
            return reasons.getItemFromID(getDetails().reasonID);
        }
    }

    public void setCommitteeReason(DirectoryCommitteeReasonItem reason) throws ClipsException {
        if (reason != null) {
            getDetails().reasonID = reason.getID();
            setService(null);
        }
        else {
            getDetails().reasonID = 0;
        }
        fireContentStateEvent();
    }

    public DirectoryDirectionTypeItem getType() throws ClipsException {
        DirectoryDirectionType directionTypes = DirectoryLocator.getDirectory(DirectoryDirectionType.class, false);
        return directionTypes.getItemFromID(getDetails().typeID);
    }

    public void setType(DirectoryDirectionTypeItem type) throws ClipsException {
        if(getDetails().typeID != type.getID()) {
            getDetails().typeID = type.getID();
            fireContentStateEvent();
        }
    }
  
    @Override
    public String toString() {
        return "Направление";
    }

    /**
     * Возвращает услугу
     * @return
     * @throws cli_fmw.delegate.exception.ClipsException
     */
    public DirectoryServiceItem getService() throws ClipsException {
        DirectoryService services = (DirectoryService) DirectoryLocator.getDirectory(DirectoryService.class, false);
        return services.getItemFromID(getDetails().serviceID);
    }

    /**
     * Назаначает услугу
     * @param service
     */
    public void setService(DirectoryServiceItem service) throws ClipsException {
        if (service != null) {
            getDetails().serviceID = service.getID();
            setCommitteeReason(null);           
        }
        else {
            getDetails().serviceID = 0;
        }
        fireContentStateEvent();
    }

    @Override
    public void print(CombinedReportCreator ccreator) throws ClipsException {
        FormReportCreator creator = ccreator.createFormReporter(getClass(), 1);
        HashMap<String, Object> extraFields = new HashMap<String, Object>();
       
        String dirChoiceItem = "";
        switch (((DirectoryDirectionTypeItem) getType()).getChoice()) {
            case (DirectoryDirectionTypeBean.OBLIGATE_SERVICE) :               
                dirChoiceItem = getService().getTitle();
                break;
            case (DirectoryDirectionTypeBean.OBLIGATE_COMMITTEE) :
                dirChoiceItem = "КЭК. Причина: " + getCommitteeReason().getTitle();
                break;
        }
        extraFields.put("directionTitle", "Направление: " + getType().getTitle());       
        extraFields.put("directionDate", Converter.dateToString(getDate()));
       
        ClientLocal cl = getSerrenLocal().getDiseaseLocal().getEmcLocal().getClient();
        String clientInfo = cl.toString();
        if (cl.getBorn() != null) {
            clientInfo += ", " + Converter.dateToString(cl.getBorn());
            clientInfo += " (" + DateTimeUtils.calcAge(cl.getBorn(), TimeLocal.getCurrentTime().getTime()) + ")";
        }
        extraFields.put("clientData", clientInfo);
        extraFields.put("clientAddress", cl.getAddress().toString());
        extraFields.put("directionChoice", dirChoiceItem);
        if (getMkb() != null) {
            extraFields.put("directionMkb", getMkb().toString());
        }
        DirectoryCollaboratorItem collab = getSerrenLocal().getSerRenDirector();
        String collabStr = collab.toString();
        extraFields.put("directionCollaborator", collabStr);
        if (getDescription() != null) {
            extraFields.put("directionDesc", getDescription());
        }
        creator.createReport(null, null, extraFields.entrySet(), null);
        creator.finish();
    }
   
    @Override
    public Icon getIcon() {
        return icon;
    }

    @Override
    protected String getBeanName() {
        return DirectionBean.class.getSimpleName();
    }


    @Override
    public boolean isSignCorrect() throws ClipsException{
        //STUB
        return (getID() != -1 );
        //END STUB
    }

    @Override
    public String getSignMessage() throws ClipsException {
        if (getID() == 0) {
            return "Подпись отсутствует";
        }
        //STUB
        String coll;
        if (getSerrenLocal().getCollaboratorFunctions() != null) {
            coll = getSerrenLocal().getCollaboratorFunctions().getTitle();
        } else {
            coll = getSerrenLocal().getSerRenDirector().getTitle();
        }

        String s = "Подписано " + Converter.dateToString(getDate())
                + " - " + coll;
        if (isSignCorrect() ) {
            return s;
        } else {
            return "Подпись не соответствует данным!";
        }
        //END STUB
    }


}
TOP

Related Classes of clips.delegate.doctor.direction.DirectionLocal

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.