Package clips.doctor.profcheckup.dialogs

Source Code of clips.doctor.profcheckup.dialogs.doublet

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

import clips.doctor.profcheckup.*;
import clips.delegate.contract.PolisData;
import clips.delegate.directory.complex.DirectoryDangerItem;
import clips.delegate.job.DangerExamChunk;
import cli_fmw.delegate.utils.TimeLocal;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.ErrorValue;
import cli_fmw.utils.Log;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.swing.event.TableModelEvent;
import javax.swing.table.AbstractTableModel;
import framework.utils.DateTimeUtils;


    /**
     * Класс для сопоставлени клиента и параметра отмечен/неотмечен
     * @author petr
     */
    class ChoosenClient {

        public ChoosenClient(PolisData polis, DangerExamChunk danger) {
            this.polisData = polis;
            this.danger = danger;
            this.select = false;
//            this.blocked = false;
        }

        PolisData polisData;
        DangerExamChunk danger;
        boolean select;//выбран (тока что)
//        boolean blocked;//уже есть в списке
    }

    /**
     * дуплет
     * @author petr
     */
    class doublet{
        public int first;
        public int last;
    }
       
/**
*
* @author petr
*/
public class TableModelClientsChoose extends AbstractTableModel {
   
    public static final int CL_ADDED = 0;//отмечен/неотмечен
    public static final int CL_CLIENT = 1;//клиент
    public static final int CL_DANGER = 2;//опасный фактор
    public static final int CL_LAST_EXAM = 3;//дата последнего осмотра
    public static final int COLUMN_COUNT = 4;

    private ArrayList<ChoosenClient> checkList;//список
   
    /**
     * Create table model with data about members and dangers
     * @param selectedMembers already selected contmem and danger can`t be null
     * @param dangerContmemMap
     */
    public TableModelClientsChoose(Map<PolisData, Set<DangerExamChunk>> contmemDangerMap) throws ClipsException {
        checkList = new ArrayList<ChoosenClient>();
        Set<PolisData> it = contmemDangerMap.keySet();
        for (PolisData cmd : it) {
            Set<DangerExamChunk> it1 = contmemDangerMap.get(cmd);
            for (DangerExamChunk dec : it1) {
                ChoosenClient cc = new ChoosenClient(cmd, dec);
                checkList.add(cc);
            }
        }
    }

    @Override
    public Class<?> getColumnClass(int col) {
        if (col == CL_ADDED) {
            return Boolean.class;
        }
        return super.getColumnClass(col);
    }

    @Override
    public String getColumnName(int col) {
        switch(col){
            case CL_ADDED: return "Добавить";
            case CL_CLIENT: return "Сотрудник";
            case CL_DANGER: return "Опасный фактор";
            case CL_LAST_EXAM: return "Последний осмотр";
            default: Log.printlnAnsPos("не сработал switch-case: TableModelClientsChoose, getColumnName(), column: " + col);
        }
        return null;
    }

    @Override
    public boolean isCellEditable(int row, int col) {
        if (col == CL_ADDED) {
            return true;
        } else {
            return false;
        }
    }
   
    @Override
    public void setValueAt(Object obj, int row, int col) {
        if (col == CL_ADDED) {//ставим-снимаем галочку в первой колонке
            checkList.get(row).select = !checkList.get(row).select;
        }
    }

    @Override
    public int getRowCount() {
        int count = checkList.size();
        return count;
    }

    @Override
    public int getColumnCount() {
        return COLUMN_COUNT;
    }

    @Override
    public Object getValueAt(int row, int col) {
        try {
            switch (col) {
                case CL_ADDED:
                    return checkList.get(row).select;
                case CL_CLIENT:
                    return checkList.get(row).polisData.getClient().toString();
                case CL_DANGER:
                    return checkList.get(row).danger.getDanger();
                case CL_LAST_EXAM:
                    return framework.utils.Converter.dateToString(checkList.get(row).danger.getLastExam());
                default:
                    Log.printlnAnsPos("не сработал switch-case: TableModelClientsChoose, getValueAt(), row: " +
                            row + " col: " + col);
            }
            return null;           
        } catch (ClipsException ex) {
            return new ErrorValue(ex);
        }
    }
   
    /**
     * Вернет отношение числа дней прошедших с последнего осмотра к длине
     * периода осмотров по данному фактору
     * Если даты нет - 1
     * Еслт период 0 - 1
     * @param row строка
     * @return отношение
     * @throws cli_fmw.main.ClipsException
     */
    public double  coeffFromLastExam(int row) throws ClipsException{
        ChoosenClient cc = checkList.get(row);
        Date lastExam = cc.danger.getLastExam();
        if (lastExam == null){
            return 1;
        }
        double frequency = cc.danger.getDanger().getFrequency();
        if (frequency == 0){
            return 1;
        }
        double daysBetween = DateTimeUtils.daysBetween(lastExam, TimeLocal.getCurrentTime().getTime());
        return daysBetween/frequency;
    }
   
    /**
     * Возвращает отмеченных клиентов
     * @return
     */
    public Map<PolisData, Set<DirectoryDangerItem>> getSelectedValues() throws ClipsException{
        Map<PolisData, Set<DirectoryDangerItem>> res =
                new HashMap<PolisData, Set<DirectoryDangerItem>>();
        for (ChoosenClient cc : checkList) {
            if (cc.select){
                PolisData cmd = cc.polisData;
                if (res.get(cmd) == null){
                    res.put(cmd, new HashSet<DirectoryDangerItem>());
                }
                res.get(cmd).add(cc.danger.getDanger());
            }
        }
        return res;
    }
   
    public void Invert(){
        System.out.println("SELECTION INVERT");
        for (ChoosenClient cc : checkList) {
            cc.select = !cc.select;
        }
        fireTableChanged(new TableModelEvent(this));
    }
   
}
TOP

Related Classes of clips.doctor.profcheckup.dialogs.doublet

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.