package net.sourceforge.squirrel_sql.client.session.mainpanel.overview;
import net.sourceforge.squirrel_sql.client.resources.SquirrelResources;
import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.DataScale;
import net.sourceforge.squirrel_sql.client.session.mainpanel.overview.datascale.IndexedColumnFactory;
import net.sourceforge.squirrel_sql.fw.datasetviewer.ColumnDisplayDefinition;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import java.util.ArrayList;
public enum ChartConfigMode
{
COUNT("overview.ChartConfigMode.modusCount", "overview.ChartConfigMode.modusCountAxisLabel", SquirrelResources.IImageNames.AGG_COUNT),
SUM("overview.ChartConfigMode.modusSum", "overview.ChartConfigMode.modusSumAxisLabel", SquirrelResources.IImageNames.AGG_SUM),
XY_COUNT_DISTINCT("overview.ChartConfigMode.modusCountDistinct", "overview.ChartConfigMode.modusCountDistinctAxisLabel", SquirrelResources.IImageNames.AGG_COUNT),
XY_SUM_COL("overview.ChartConfigMode.modusSum", "overview.ChartConfigMode.modusSumAxisLabelOfColumn", SquirrelResources.IImageNames.AGG_SUM);
// XY_MIN("overview.ChartConfigMode.modusMin", "overview.ChartConfigMode.modusMinAxisLabel", SquirrelResources.IImageNames.AGG_MIN),
// XY_MAX("overview.ChartConfigMode.modusMax", "overview.ChartConfigMode.modusMaxAxisLabel", SquirrelResources.IImageNames.AGG_MAX);
private final String _modusI18nKey;
private String _axisLabelI18nKey;
private final String _modusIconName;
private StringManager _s_stringMgr;
ChartConfigMode(String modusI18nKey, String axisLabelI18nKey, String modusIconName)
{
_modusI18nKey = modusI18nKey;
_axisLabelI18nKey = axisLabelI18nKey;
_modusIconName = modusIconName;
}
public static ChartConfigMode[] getAvailableValues(ColumnDisplayDefinition columnDisplayDefinition, ChartConfigPanelTabMode chartConfigPanelTabMode, StringManager s_stringMgr)
{
ArrayList<ChartConfigMode> ret = new ArrayList<ChartConfigMode>();
for (ChartConfigMode chartConfigMode : values())
{
chartConfigMode.setStringManager(s_stringMgr);
}
if (ChartConfigPanelTabMode.SINGLE_COLUMN == chartConfigPanelTabMode)
{
ret.add(COUNT);
if(IndexedColumnFactory.isSumable(columnDisplayDefinition))
{
ret.add(SUM);
}
}
else if (ChartConfigPanelTabMode.XY_CHART == chartConfigPanelTabMode)
{
ret.add(XY_COUNT_DISTINCT);
if(IndexedColumnFactory.isSumable(columnDisplayDefinition))
{
ret.add(XY_SUM_COL);
}
// if(IndexedColumnFactory.isOrderable(columnDisplayDefinition))
// {
// ret.add(XY_MIN);
// ret.add(XY_MAX);
// }
}
return ret.toArray(new ChartConfigMode[ret.size()]);
}
private void setStringManager(StringManager s_stringMgr)
{
_s_stringMgr = s_stringMgr;
}
@Override
public String toString()
{
return _s_stringMgr.getString(_modusI18nKey);
}
public String getYAxisLabel(DataScale yAxisDataScale)
{
if(null == yAxisDataScale)
{
return _s_stringMgr.getString(_axisLabelI18nKey);
}
else
{
String col = yAxisDataScale.getColumnDisplayDefinition().getTableName();
if(null != col && 0 < col.trim().length())
{
col += "." + yAxisDataScale.getColumnDisplayDefinition().getColumnName();
}
else
{
col = yAxisDataScale.getColumnDisplayDefinition().getColumnName();
}
return _s_stringMgr.getString(_axisLabelI18nKey, col);
}
}
}