Java tutorial
/* 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; } }