package nc.vo.wa.grade;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import nc.vo.jcom.util.Convertor;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pub.ValidationException;
import nc.vo.pub.lang.UFDouble;

/**
 * 薪资标准设置值VO
 * @author: xuhw
 * @date: 2009-11-24 下午04:59:07
 * @since: eHR V6.0
 * @走查人:
 * @走查日期:
 * @修改人:
 * @修改日期:
 */
public class CrtVO extends CircularlyAccessibleValueObject
{
	private static final long serialVersionUID = -5623682472588249521L;
	List<Object> levs = new ArrayList<Object>();

	/**
	 * CrtVO 构造子注解。
	 */
	public CrtVO()
	{
		super();
	}

	public void add(Object obj)
	{
		levs.add(obj);
	}

	/**
	 * 取得属性名
	 */
	public String[] getAttributeNames()
	{
		String[] names = null;
		if (levs.size() == 0)
		{
			// 应该是种错误的情况
		}
		else
		{
			names = new String[levs.size() + 1];
		}
		names[0] = WaCriterionVO.PRMLVNAME;
		for (int i = 1; i < names.length; i++)
		{
			names[i] = ((WaCriterionVO) levs.get(1)).getPk_wa_seclv();
		}
		return names;
	}

	/**
	 * 取得属性值
	 */
	public Object getAttributeValue(String attributeName)
	{
		Object returnValue = "";
		if (attributeName.equals(WaCriterionVO.PRMLVNAME))
		{
			returnValue = ((WaCriterionVO) levs.get(0)).getPrmlvName();
		}
		else
		{
			// 多级 非宽带 非多档
			if (attributeName.equals("criterionvalue"))
			{
				for (int i = 0; i < levs.size(); i++)
				{
					returnValue = ((WaCriterionVO) levs.get(i)).getCriterionvalue();
				}
			}
			// 多级 宽带 非多档
			else if (attributeName.startsWith("pran_"))
			{
				for (int i = 0; i < levs.size(); i++)
				{
					if (attributeName.equals("pran_down_criterionvalue"))
					{
						returnValue = ((WaCriterionVO) levs.get(i)).getMin_value();
						break;
					}
					else if (attributeName.equals("pran_basic_criterionvalue"))
					{
						returnValue = ((WaCriterionVO) levs.get(i)).getCriterionvalue();
						break;
					}
					else if (attributeName.equals("pran_up_criterionvalue"))
					{
						returnValue = ((WaCriterionVO) levs.get(i)).getMax_value();
						break;
					}
				}
			}
			//多级 多档 非宽带
			else if (attributeName.startsWith("prec_"))
			{
				for (int i = 0; i < levs.size(); i++)
				{
					if (attributeName.equals("prec_" + ((WaCriterionVO) levs.get(i)).getPk_wa_seclv()))
					{
						returnValue = ((WaCriterionVO) levs.get(i)).getCriterionvalue();
						break;
					}
				}
			}
			// 多级 多档 宽带
			else
			{
				for (int i = 0; i < levs.size(); i++)
				{
					if (attributeName.equals("precran_down_" + ((WaCriterionVO) levs.get(i)).getPk_wa_seclv()))
					{
						returnValue = ((WaCriterionVO) levs.get(i)).getMin_value();
						break;
					}
					else if (attributeName.equals("precran_basic_" + ((WaCriterionVO) levs.get(i)).getPk_wa_seclv()))
					{
						returnValue = ((WaCriterionVO) levs.get(i)).getCriterionvalue();
						break;
					}
					else if (attributeName.equals("precran_up_" + ((WaCriterionVO) levs.get(i)).getPk_wa_seclv()))
					{
						returnValue = ((WaCriterionVO) levs.get(i)).getMax_value();
						break;
					}
				}
			}
		}
		return returnValue;
	}

	/**
	 * 获得动态数据
	 */
	public static WaCriterionVO[] getData(CrtVO[] crts)
	{
		if (crts == null || crts.length < 1)
		{
			return null;
		}
		Vector<Object> v = new Vector<Object>();
		for (int i = 0; i < crts.length; i++)
		{
			for (int j = 0; j < crts[i].getVecData().size(); j++)
			{
				v.addElement(crts[i].getVecData().get(j));
			}
		}
		if (v != null && v.size() > 0)
		{
			return ((WaCriterionVO[]) Convertor.convertVectorToArray(v));
		}
		return null;
	}

	public String getEntityName()
	{
		return null;
	}

	public List<Object> getVecData()
	{
		return levs;
	}

	/**
	 * 设置属性数据
	 */
	public void setAttributeValue(String name, Object value)
	{
		// 多级 非宽带 非多档
		if (name.equals("criterionvalue"))
		{
			for (int i = 0; i < levs.size(); i++)
			{
				((WaCriterionVO) levs.get(i)).setCriterionvalue(new UFDouble(value.toString()));
			}
		}
		// 多级 宽带 非多档
		else if (name.startsWith("pran_"))
		{
			for (int i = 0; i < levs.size(); i++)
			{
				if (name.equals("pran_down_criterionvalue"))
				{
					((WaCriterionVO) levs.get(i)).setMin_value(new UFDouble(value.toString()));
					break;
				}
				else if (name.equals("pran_basic_criterionvalue"))
				{
					((WaCriterionVO) levs.get(i)).setCriterionvalue(new UFDouble(value.toString()));
					break;
				}
				else if (name.equals("pran_up_criterionvalue"))
				{
					((WaCriterionVO) levs.get(i)).setMax_value(new UFDouble(value.toString()));
					break;
				}
			}
		}
		//多级 多档 非宽带
		else if (name.startsWith("prec_"))
		{
			for (int i = 0; i < levs.size(); i++)
			{
				if (name.equals("prec_" + ((WaCriterionVO) levs.get(i)).getPk_wa_seclv()))
				{
					((WaCriterionVO) levs.get(i)).setCriterionvalue(new UFDouble(value.toString()));
					break;
				}
			}
		}
		// 多级 多档 宽带
		else
		{
			for (int i = 0; i < levs.size(); i++)
			{
				if (name.equals("precran_down_" + ((WaCriterionVO) levs.get(i)).getPk_wa_seclv()))
				{
					((WaCriterionVO) levs.get(i)).setMin_value(new UFDouble(value.toString()));
					break;
				}
				else if (name.equals("precran_basic_" + ((WaCriterionVO) levs.get(i)).getPk_wa_seclv()))
				{
					((WaCriterionVO) levs.get(i)).setCriterionvalue(new UFDouble(value.toString()));
					break;
				}
				else if (name.equals("precran_up_" + ((WaCriterionVO) levs.get(i)).getPk_wa_seclv()))
				{
					((WaCriterionVO) levs.get(i)).setMax_value(new UFDouble(value.toString()));
					break;
				}
			}
		}
	}

	public void validate() throws ValidationException
	{
	}
}
