  /***************************************************************\
  *     The skeleton of this class is generated by an automatic *
  * code generator for NC product. It is based on Velocity.     *
  \***************************************************************/

package nc.vo.wa.grade;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;

import nc.hr.utils.ResHelper;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pub.SuperVO;
import nc.vo.pub.VOStatus;
import nc.vo.trade.pub.HYBillVO;
import nc.vo.trade.pub.IExAggVO;


/**
 *
 * 该类是用于多子表的聚合VO
 *
 * 创建日期:2009-11-23 10:07:43
 * @author
 * @version NCPrj ??
 */
@SuppressWarnings("serial")
@nc.vo.annotation.AggVoInfo(parentVO = "nc.vo.wa.grade.WaGradeVO")
public class AggWaGradeVO extends HYBillVO implements IExAggVO{


	//用于装载多子表数据的HashMap
	private HashMap hmChildVOs = new HashMap();


	/**
	 * 返回多个子表的编码
	 * 必须与单据模版的页签编码对应
	 * 创建日期：2009-11-23 10:07:43
	 * @return String[]
	 */
	public String[] getTableCodes(){

		return new String[]{
		 		 		   		"wa_prmlv",
		   		 		   		"wa_seclv",
		   		 		   		"wa_psnhi"
		   		    };

	}


	/**
	 * 返回多个子表的中文名称
	 * 创建日期：2009-11-23 10:07:43
	 * @return String[]
	 */
	public String[] getTableNames(){

		return new String[]{
                                           ResHelper.getString("common","UC000-0003382")/*@res "薪资级别"*/,
                                            ResHelper.getString("common","UC000-0003381")/*@res "薪资档别"*/,
                                            ResHelper.getString("60130paystd","060130paystd0217")/*@res "薪资标准员工信息属性"*/,
                         };
	}


	/**
	 * 取得所有子表的所有VO对象
	 * 创建日期：2009-11-23 10:07:43
	 * @return CircularlyAccessibleValueObject[]
	 */
	public CircularlyAccessibleValueObject[] getAllChildrenVO(){

		ArrayList al = new ArrayList();
		for(int i = 0; i < getTableCodes().length; i++){
			CircularlyAccessibleValueObject[] cvos
			        = getTableVO(getTableCodes()[i]);
			if(cvos != null)
				al.addAll(Arrays.asList(cvos));
		}

		return (SuperVO[]) al.toArray(new SuperVO[0]);
	}


	/**
	 * 返回每个子表的VO数组
	 * 创建日期：2009-11-23 10:07:43
	 * @return CircularlyAccessibleValueObject[]
	 */
	public CircularlyAccessibleValueObject[] getTableVO(String tableCode){

		return (CircularlyAccessibleValueObject[])
		            hmChildVOs.get(tableCode);
	}


	/**
	 *
	 * 创建日期：2009-11-23 10:07:43
	 * @param SuperVO item
	 * @param String id
	 */
	public void setParentId(SuperVO item,String id){}

	/**
	 * 为特定子表设置VO数据
	 * 创建日期：2009-11-23 10:07:43
	 * @param String tableCode
	 * @para CircularlyAccessibleValueObject[] vos
	 */
	public void setTableVO(String tableCode,CircularlyAccessibleValueObject[] vos){

		hmChildVOs.put(tableCode,vos);
	}

	/**
	 * 缺省的页签编码
	 * 创建日期：2009-11-23 10:07:43
	 * @return String
	 */
	public String getDefaultTableCode(){

		return getTableCodes()[0];
	}

	/**
	 *
	 * 创建日期：2009-11-23 10:07:43
	 * @param String tableCode
	 * @param String parentId
	 * @return SuperVO[]
	 */
	public SuperVO[] getChildVOsByParentId(String tableCode,String parentId){

		return null;
	}


	/**
	 *
	 * 创建日期：2009-11-23 10:07:43
	 * @return HashMap
	 */
	public HashMap getHmEditingVOs() throws Exception{

		return null;
	}

	/**
	 *
	 * 创建日期:2009-11-23 10:07:43
	 * @param SuperVO item
	 * @return String
	 */
	public String getParentId(SuperVO item){

		return null;
	}
	
	/**
	 * 此处插入方法说明。 创建日期：(01-3-20 17:32:28)
	 * 
	 * @return nc.vo.pub.ValueObject
	 */
	public WaGradeVO getParentVO() {
		return (WaGradeVO) super.getParentVO();
	}
	
	@Override
	public AggWaGradeVO clone() {

		WaGradeVO newParentvo = (WaGradeVO) this.getParentVO().clone();
		newParentvo.setStatus(VOStatus.NEW);
		newParentvo.setPk_wa_grd(null);
		newParentvo.setCode(null);
		newParentvo.setName(null);
		newParentvo.setName2(null);
		newParentvo.setName3(null);
		//把审计信息清空
		newParentvo.setCreator(null);
		newParentvo.setCreationtime(null);
		newParentvo.setModifier(null);
		newParentvo.setModifiedtime(null);
		
		AggWaGradeVO newaggVO = new AggWaGradeVO();
		newaggVO.setParentVO(newParentvo);

		//处理子VO
		WaPrmlvVO[] waPrmlvVOArr = this.getTableVO(IWaGradeCommonDef.WA_PRMLV) == null ? null : (WaPrmlvVO[]) this.getTableVO(IWaGradeCommonDef.WA_PRMLV);
		if (waPrmlvVOArr != null && waPrmlvVOArr.length > 0) {
			WaPrmlvVO[] arr = new WaPrmlvVO[waPrmlvVOArr.length];
			WaPrmlvVO temp = null;
			for (int i = 0; i < waPrmlvVOArr.length; i++) {
				temp = (WaPrmlvVO)waPrmlvVOArr[i].clone();
				temp.setPk_wa_prmlv(null);
				temp.setPk_wa_grd(null);
				temp.setTs(null);
				temp.setStatus(VOStatus.NEW);
				arr[i] = temp;
			}
			newaggVO.setTableVO(IWaGradeCommonDef.WA_PRMLV, arr);
		}
		WaSeclvVO[] waSeclvVOArr = this.getTableVO(IWaGradeCommonDef.WA_SECLV) == null ? null : (WaSeclvVO[]) this.getTableVO(IWaGradeCommonDef.WA_SECLV);
		if (waSeclvVOArr != null && waSeclvVOArr.length > 0) {
			WaSeclvVO[] arr = new WaSeclvVO[waSeclvVOArr.length];
			WaSeclvVO temp = null;
			for (int i = 0; i < waSeclvVOArr.length; i++) {
				temp = (WaSeclvVO)waSeclvVOArr[i].clone();
				temp.setPk_wa_seclv(null);
				temp.setPk_wa_grd(null);
				temp.setTs(null);
				temp.setStatus(VOStatus.NEW);
				arr[i] = temp;
			}
			newaggVO.setTableVO(IWaGradeCommonDef.WA_SECLV, arr);
		}
		WaPsnhiVO[] waPsnhiVOArr = this.getTableVO(IWaGradeCommonDef.WA_PSNHI) == null ? null : (WaPsnhiVO[]) this.getTableVO(IWaGradeCommonDef.WA_PSNHI);
		if (waPsnhiVOArr != null && waPsnhiVOArr.length > 0) {
			WaPsnhiVO[] arr = new WaPsnhiVO[waPsnhiVOArr.length];
			WaPsnhiVO temp = null;
			for (int i = 0; i < waPsnhiVOArr.length; i++) {
				temp = (WaPsnhiVO)waPsnhiVOArr[i].clone();
				temp.setPk_wa_psnhi(null);
				temp.setPk_wa_grd(null);
				temp.setStatus(VOStatus.NEW);
				arr[i] = temp;
			}
			newaggVO.setTableVO(IWaGradeCommonDef.WA_PSNHI, arr);
		}
		return newaggVO;
	}
	
}