/******************************************************************************* * Copyright (c) 2010 Boeing. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Boeing - initial API and implementation *******************************************************************************/ package org.eclipse.osee.ats.column; import java.util.HashSet; import java.util.Set; import org.eclipse.nebula.widgets.xviewer.IXViewerValueColumn; import org.eclipse.nebula.widgets.xviewer.XViewerColumn; import org.eclipse.osee.ats.api.data.AtsArtifactTypes; import org.eclipse.osee.ats.core.client.action.ActionManager; import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact; import org.eclipse.osee.ats.core.client.util.AtsUtilCore; import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; import org.eclipse.osee.ats.util.xviewer.column.XViewerAtsColumn; import org.eclipse.osee.ats.world.WorldXViewerFactory; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Collections; import org.eclipse.osee.framework.jdk.core.util.DateUtil; import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.skynet.core.utility.Artifacts; import org.eclipse.osee.framework.ui.skynet.util.LogUtil; import org.eclipse.swt.SWT; /** * @author Donald G. Dunne */ public class DaysInCurrentStateColumn extends XViewerAtsColumn implements IXViewerValueColumn { public static DaysInCurrentStateColumn instance = new DaysInCurrentStateColumn(); public static DaysInCurrentStateColumn getInstance() { return instance; } private DaysInCurrentStateColumn() { super(WorldXViewerFactory.COLUMN_NAMESPACE + ".daysInCurrState", "Days in Current State", 40, SWT.CENTER, false, SortDataType.Float, false, null); } /** * XViewer uses copies of column definitions so originals that are registered are not corrupted. Classes extending * XViewerValueColumn MUST extend this constructor so the correct sub-class is created */ @Override public DaysInCurrentStateColumn copy() { DaysInCurrentStateColumn newXCol = new DaysInCurrentStateColumn(); super.copy(this, newXCol); return newXCol; } @Override public String getColumnText(Object element, XViewerColumn column, int columnIndex) { try { if (element instanceof AbstractWorkflowArtifact) { double timeInCurrState = ((AbstractWorkflowArtifact) element).getStateMgr().getTimeInState(); if (timeInCurrState == 0) { return "0.0"; } return AtsUtilCore.doubleToI18nString(timeInCurrState / DateUtil.MILLISECONDS_IN_A_DAY); } else if (Artifacts.isOfType(element, AtsArtifactTypes.Action)) { Set strs = new HashSet(); for (TeamWorkFlowArtifact team : ActionManager.getTeams(element)) { String str = getColumnText(team, column, columnIndex); if (Strings.isValid(str)) { strs.add(str); } } return Collections.toString(", ", strs); } } catch (OseeCoreException ex) { LogUtil.getCellExceptionString(ex); } return ""; } }