package com.taobao.zeus.store; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import com.taobao.zeus.model.JobDescriptorOld; import com.taobao.zeus.model.JobStatus; /** * 内存处理模型,包含数结构,以及不同对象之间的引用关系 * @author zhoufang */ public class JobBeanOld{ private final JobDescriptorOld JobDescriptorOld; private final JobStatus jobStatus; private GroupBeanOld groupBean; private Set<JobBeanOld> dependee = new HashSet<JobBeanOld>(); private Set<JobBeanOld> depender = new HashSet<JobBeanOld>(); public JobBeanOld(JobDescriptorOld jd,JobStatus jobStatus){ this.JobDescriptorOld=jd; this.jobStatus=jobStatus; } /** * 获取任务被依赖的集合 * @return */ public Set<JobBeanOld> getDepender(){ return depender; } /** * 获取任务的依赖集合 * @return */ public Set<JobBeanOld> getDependee(){ return dependee; } /** * 获取带层次的属性 * @return */ public HierarchyProperties getHierarchyProperties(){ if(groupBean!=null){ return new HierarchyProperties(groupBean.getHierarchyProperties(), JobDescriptorOld.getProperties()); } return new HierarchyProperties(JobDescriptorOld.getProperties()); } public List<Map<String, String>> getHierarchyResources(){ List<String> existList=new ArrayList<String>(); List<Map<String, String>> local=new ArrayList<Map<String,String>>(JobDescriptorOld.getResources()); if(local==null){ local=new ArrayList<Map<String,String>>(); } for(Map<String, String> map:local){ if(map.get("name")!=null && !existList.contains(map.get("name"))){ existList.add(map.get("name")); } } if(groupBean!=null){ List<Map<String, String>> parent=groupBean.getHierarchyResources(); for(Map<String, String> map:parent){ if(map.get("name")!=null && !existList.contains(map.get("name"))){ existList.add(map.get("name")); local.add(map); } } } return local; } /** * 添加依赖的任务 * 内存操作,不做持久化处理! * @param dep */ public void addDependee(JobBeanOld dep){ if(!dependee.contains(dep)){ dependee.add(dep); } } /** * 添加被依赖的任务 * 内存操作,不做持久化处理! * @param dep */ public void addDepender(JobBeanOld dep){ if(!depender.contains(dep)){ depender.add(dep); } } /** * 获取Job所属的Group * @return */ public GroupBeanOld getGroupBean(){ return groupBean; } public JobDescriptorOld getJobDescriptor(){ return JobDescriptorOld; } public void setGroupBean(GroupBeanOld groupBean) { this.groupBean = groupBean; } public JobStatus getJobStatus() { return jobStatus; } }