Package clips.administrator.certificate.tagList

Source Code of clips.administrator.certificate.tagList.TableModelTagList

package clips.administrator.certificate.tagList;

import cli_fmw.main.ClipsException;
import cli_fmw.utils.ErrorValue;
import clips.delegate.doctor.certificate.tag.CertTagFactory;
import clips.delegate.doctor.certificate.tag.TagToClass;
import clips.delegate.doctor.certificate.tag.interfaces.TypeDate;
import clips.delegate.doctor.certificate.tag.interfaces.TypeMultiSelectable;
import clips.delegate.doctor.certificate.tag.interfaces.TypeSelectable;
import clips.delegate.doctor.certificate.tag.interfaces.TypeSelectableRO;
import clips.delegate.doctor.certificate.tag.interfaces.TypeSelectableEdit;
import clips.delegate.doctor.certificate.tag.interfaces.TypeTextArea;
import clips.delegate.doctor.certificate.tag.interfaces.TypeTextField;
import java.lang.reflect.Method;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

public class TableModelTagList extends AbstractTableModel {

    public static final int COL_NAME = 0;
    public static final int COL_TYPE = 1;
    public static final int COL_VALUE = 2;
    public static final int COL_DESC = 3;
    public static final int COL_COUNT = 4;
    private ArrayList<String> tagList;

    public TableModelTagList() {
        super();
        this.tagList = new ArrayList<String>(CertTagFactory.getTagSet());
    }

    @Override
    public int getRowCount() {
        return tagList.size();
    }

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

    @Override
    public String getColumnName(int col) {
        switch (col) {
            case COL_NAME:
                return "Имя тега";
            case COL_TYPE:
                return "Тип";
            case COL_VALUE:
                return "Значение";
            case COL_DESC:
                return "Описание";
            default:
                throw new IllegalArgumentException("Некорректный номер столбца : " + col);
        }
    }

    @Override
    public Object getValueAt(int row, int col) {
        switch (col) {
            case COL_NAME:
                return tagList.get(row);
            case COL_TYPE: {
                    Class classByTag = CertTagFactory.getClassByTag(tagList.get(row));
                    if (TypeDate.class.isAssignableFrom(classByTag)) {
                        return "Дата";
                    } else if (TypeMultiSelectable.class.isAssignableFrom(classByTag)) {
                        return "Множественный выбор";
                    } else if (TypeSelectableRO.class.isAssignableFrom(classByTag)) {
                        return "Одиночный выбор (не редакт.)";
                    } else if (TypeSelectableEdit.class.isAssignableFrom(classByTag)) {
                        return "Одиночный выбор cо строкой";
                    } else if (TypeSelectable.class.isAssignableFrom(classByTag)) {
                        return "Одиночный выбор";
                    } else if (TypeTextArea.class.isAssignableFrom(classByTag)) {
                        return "Текст";
                    } else if (TypeTextField.class.isAssignableFrom(classByTag)) {
                        return "Строка";
                    } else {
                        throw new IllegalArgumentException("Неизвестный тип тега :" + classByTag);
                    }
                }
            case COL_VALUE: {
                Class classByTag = CertTagFactory.getClassByTag(tagList.get(row));
                try {
                    Method method = classByTag.getMethod("getValue");
                    return method.getReturnType().getSimpleName();
                } catch (NoSuchMethodException ex) {
                    return new ErrorValue(new ClipsException("Ошибка в теге", ex));
                } catch (SecurityException ex) {
                    return new ErrorValue(new ClipsException("Ошибка в теге", ex));
                }
            }
            case COL_DESC:
                return CertTagFactory.getClassByTag(tagList.get(row)).getAnnotation(TagToClass.class).title();
            default:
                throw new IllegalArgumentException("Некорректный номер столбца : " + col);
        }
    }

    public String getTagNameAt(int row) {
        return tagList.get(row);
    }
}
TOP

Related Classes of clips.administrator.certificate.tagList.TableModelTagList

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.