com.clustercontrol.jobmanagement.viewer.JobTableTreeLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.clustercontrol.jobmanagement.viewer.JobTableTreeLabelProvider.java

Source

/*
    
Copyright (C) 2006 NTT DATA Corporation
    
This program is free software; you can redistribute it and/or
Modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, version 2.
    
This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.  See the GNU General Public License for more details.
    
 */

package com.clustercontrol.jobmanagement.viewer;

import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;

import com.clustercontrol.bean.CheckBoxImageConstant;
import com.clustercontrol.bean.DayOfWeekConstant;
import com.clustercontrol.bean.EndStatusImageConstant;
import com.clustercontrol.bean.EndStatusMessage;
import com.clustercontrol.bean.FacilityImageConstant;
import com.clustercontrol.bean.JobImageConstant;
import com.clustercontrol.bean.PriorityMessage;
import com.clustercontrol.bean.ProcessMessage;
import com.clustercontrol.bean.ScheduleConstant;
import com.clustercontrol.bean.StatusMessage;
import com.clustercontrol.bean.TableColumnInfo;
import com.clustercontrol.bean.ValidMessage;
import com.clustercontrol.bean.YesNoMessage;
import com.clustercontrol.jobmanagement.JobMessage;
import com.clustercontrol.jobmanagement.action.GetJobDetailTableDefine;
import com.clustercontrol.jobmanagement.bean.DecisionObjectMessage;
import com.clustercontrol.jobmanagement.bean.JobParamTypeMessage;
import com.clustercontrol.jobmanagement.bean.JudgmentObjectMessage;
import com.clustercontrol.jobmanagement.bean.ScheduleOnOffImageConstant;
import com.clustercontrol.jobmanagement.bean.StatusImageConstant;
import com.clustercontrol.jobmanagement.util.TimeToANYhourConverter;
import com.clustercontrol.monitor.bean.ConfirmMessage;
import com.clustercontrol.notify.util.NotifyTypeUtil;
import com.clustercontrol.repository.bean.FacilityConstant;
import com.clustercontrol.util.HinemosMessage;
import com.clustercontrol.util.Messages;
import com.clustercontrol.util.TimeStringConverter;
import com.clustercontrol.util.TimezoneUtil;
import com.clustercontrol.viewer.ICommonTableLabelProvider;
import com.clustercontrol.ws.common.Schedule;
import com.clustercontrol.ws.jobmanagement.JobTreeItem;

/**
 * CommonTableViewer?LabelProvider<BR>
 * 
 * @version 1.0.0
 * @since 1.0.0
 */
public class JobTableTreeLabelProvider extends LabelProvider implements ICommonTableLabelProvider {
    private JobTableTreeViewer m_viewer;

    /**
     * 
     * 
     * ?
     * 
     * @param viewer
     * @since 1.0.0
     */
    public JobTableTreeLabelProvider(JobTableTreeViewer viewer) {
        m_viewer = viewer;
    }

    private Object getValue(JobTreeItem item, int columnIndex) {

        Object value = null;
        if (columnIndex == GetJobDetailTableDefine.TREE) {
            value = "";
        } else if (columnIndex == GetJobDetailTableDefine.STATUS) {
            value = item.getDetail().getStatus();
        } else if (columnIndex == GetJobDetailTableDefine.END_STATUS) {
            value = item.getDetail().getEndStatus();
        } else if (columnIndex == GetJobDetailTableDefine.END_VALUE) {
            value = item.getDetail().getEndValue();
        } else if (columnIndex == GetJobDetailTableDefine.JOB_ID) {
            value = item.getData().getId();
        } else if (columnIndex == GetJobDetailTableDefine.JOB_NAME) {
            value = item.getData().getName();
        } else if (columnIndex == GetJobDetailTableDefine.JOBUNIT_ID) {
            value = item.getData().getJobunitId();
        } else if (columnIndex == GetJobDetailTableDefine.JOB_TYPE) {
            value = item.getData().getType();
        } else if (columnIndex == GetJobDetailTableDefine.FACILITY_ID) {
            value = item.getDetail().getFacilityId();
        } else if (columnIndex == GetJobDetailTableDefine.SCOPE) {
            value = HinemosMessage.replace(item.getDetail().getScope());
        } else if (columnIndex == GetJobDetailTableDefine.WAIT_RULE_TIME) {
            value = item.getDetail().getWaitRuleTime();
        } else if (columnIndex == GetJobDetailTableDefine.START_RERUN_TIME) {
            if (item.getDetail().getStartDate() != null) {
                value = new Date(item.getDetail().getStartDate());
            } else {
                value = "";
            }
        } else if (columnIndex == GetJobDetailTableDefine.END_SUSPEND_TIME) {
            if (item.getDetail().getEndDate() != null) {
                value = new Date(item.getDetail().getEndDate());
            } else {
                value = "";
            }
        } else if (columnIndex == GetJobDetailTableDefine.SESSION_TIME) {
            value = TimeToANYhourConverter.toDiffTime(item.getDetail().getStartDate(),
                    item.getDetail().getEndDate());
        } else {
            value = "";
        }
        return value;
    }

    /**
     * ??
     * 
     * @since 1.0.0
     * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
     *      int)
     */
    @Override
    public String getColumnText(Object element, int columnIndex) {
        ArrayList<TableColumnInfo> tableColumnList = m_viewer.getTableColumnList();

        JobTreeItem item = (JobTreeItem) element;
        Object value = getValue(item, columnIndex);

        TableColumnInfo tableColumn = tableColumnList.get(columnIndex);

        if (value == null) {
            return "";
        }

        if (tableColumn.getType() == TableColumnInfo.JOB) {
            //????
            return JobMessage.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.STATE) {
            //????
            return StatusMessage.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.PRIORITY) {
            //??????
            return PriorityMessage.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.VALID) {
            //?/???
            return ValidMessage.typeToString(((Boolean) value).booleanValue());
        } else if (tableColumn.getType() == TableColumnInfo.JUDGMENT_OBJECT) {
            //????
            return JudgmentObjectMessage.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.NOTIFY_TYPE) {
            //????
            return NotifyTypeUtil.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.WAIT_RULE_VALUE) {
            //?????
            Class<?> itemClass = value.getClass();

            if (itemClass == Date.class) {
                //?0??24(??48)??
                return TimeStringConverter.formatTime((Date) value);
            } else if (itemClass == Long.class) {
                //?0??24(??48)??
                return TimeStringConverter.formatTime(new Date(((Long) value).longValue()));
            } else if (itemClass == String.class) {
                return String.valueOf(value);
            } else if (itemClass.getSuperclass() == Number.class) {
                return ((Number) value).toString();
            }
        } else if (tableColumn.getType() == TableColumnInfo.SCHEDULE) {
            //????
            Schedule schedule = (Schedule) value;

            String scheduleString = null;
            //????
            if (schedule.getType() == ScheduleConstant.TYPE_DAY) {
                if (schedule.getMonth() != null) {
                    scheduleString = schedule.getMonth() + "/" + schedule.getDay() + " " + schedule.getHour() + ":"
                            + schedule.getMinute();
                } else if (schedule.getDay() != null) {
                    scheduleString = schedule.getDay() + "'" + Messages.getString("monthday") + "'"
                            + schedule.getHour() + ":" + schedule.getMinute();
                } else if (schedule.getHour() != null) {
                    scheduleString = schedule.getHour() + ":" + schedule.getMinute();
                } else if (schedule.getMinute() != null) {
                    scheduleString = schedule.getMinute() + "'" + Messages.getString("minute") + "'";
                }
            } else {
                scheduleString = DayOfWeekConstant.typeToString(schedule.getWeek()) + " " + schedule.getHour() + ":"
                        + schedule.getMinute();
            }
            return scheduleString;
        } else if (tableColumn.getType() == TableColumnInfo.CONFIRM) {
            //??/????
            return ConfirmMessage.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.WAIT_RULE) {
            //??????
            return YesNoMessage.typeToString(((Boolean) value).booleanValue());
        } else if (tableColumn.getType() == TableColumnInfo.PROCESS) {
            //?????
            return ProcessMessage.typeToString(((Boolean) value).booleanValue());
        } else if (tableColumn.getType() == TableColumnInfo.END_STATUS) {
            //????
            return EndStatusMessage.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.CHECKBOX) {
            //?????
            return "";
        } else if (tableColumn.getType() == TableColumnInfo.DAY_OF_WEEK) {
            //????
            return DayOfWeekConstant.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.SCHEDULE_ON_OFF) {
            //????
            return "";
        } else if (tableColumn.getType() == TableColumnInfo.JOB_PARAM_TYPE) {
            //????
            return JobParamTypeMessage.typeToString(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.DECISION_CONDITION) {
            //?????
            return DecisionObjectMessage.typeToString(((Number) value).intValue());
        } else {
            //???
            Class<?> itemClass = value.getClass();

            if (itemClass == String.class) {
                return String.valueOf(value);
            } else if (itemClass == Date.class) {
                return TimezoneUtil.getSimpleDateFormat().format((Date) value);
            } else if (itemClass == Time.class) {
                SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
                formatter.setTimeZone(TimezoneUtil.getTimeZone());
                return formatter.format((Time) value);
            } else if (itemClass.getSuperclass() == Number.class) {
                return ((Number) value).toString();
            }
        }
        return "";
    }

    /**
     * ()??
     * 
     * @since 1.0.0
     * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
     *      int)
     */
    @Override
    public Image getColumnImage(Object element, int columnIndex) {
        ArrayList<TableColumnInfo> tableColumnList = m_viewer.getTableColumnList();

        JobTreeItem item = (JobTreeItem) element;
        Object value = getValue(item, columnIndex);

        TableColumnInfo tableColumn = tableColumnList.get(columnIndex);

        if (value == null || value.equals("")) {
            return null;
        }

        if (tableColumn.getType() == TableColumnInfo.JOB) {
            //????
            return JobImageConstant.typeToImage(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.FACILITY) {
            //????
            Pattern p = Pattern.compile(".*>");
            Matcher m = p.matcher((String) value);
            if (m.matches()) {
                return FacilityImageConstant.typeToImage(FacilityConstant.TYPE_SCOPE, true);
            } else {
                return FacilityImageConstant.typeToImage(FacilityConstant.TYPE_NODE, true);
            }
        } else if (tableColumn.getType() == TableColumnInfo.STATE) {
            //????
            return StatusImageConstant.typeToImage(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.END_STATUS) {
            //????
            return EndStatusImageConstant.typeToImage(((Number) value).intValue());
        } else if (tableColumn.getType() == TableColumnInfo.CHECKBOX) {
            //?????
            return CheckBoxImageConstant.typeToImage(((Boolean) value).booleanValue());
        } else if (tableColumn.getType() == TableColumnInfo.SCHEDULE_ON_OFF) {
            //????
            return ScheduleOnOffImageConstant.dateToImage(((Date) value));
        }

        return null;
    }

    /**
     * ??
     * 
     * @since 1.0.0
     * @see com.clustercontrol.viewer.ICommonTableLabelProvider#getColumnColor(java.lang.Object,
     *      int)
     */
    @Override
    public Color getColumnColor(Object element, int columnIndex) {
        return null;
    }
}