/**
* Դ�������ƣ�ResGroup.java
* �������Ȩ���������ӹɷ�����˾ ��Ȩ����
* ϵͳ���ƣ�ARES Studio
* ģ�����ƣ�com.hundsun.ares.studio.core
* ����˵����$desc
* ����ĵ���
* ���ߣ�sundl
*/
package com.hundsun.ares.studio.core.model;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import com.hundsun.ares.studio.core.IARESModule;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.registry.ARESResRegistry;
import com.hundsun.ares.studio.core.util.ARESElementUtil;
/**
* ��Դ���飬 ������һ������Դ���з���ĸ��
* @author sundl
*/
public class ResGroup {
private static Logger logger = Logger.getLogger(ResGroup.class);
/**
* ��������
*/
private String name;
/**
* ������ģ��
*/
private IARESModule module;
/**
* ������ʾ����Դ�����¼��������,����һ������ID
*/
private String cateId;
public static Set<ResGroup> getGroups(IARESModule module) {
IARESResource[] resources = module.getARESResources();
return getGroups(resources);
}
public static Set<ResGroup> getGroups(IARESResource[] resources) {
IARESModule module = null;
if (resources.length > 0) {
module = resources[0].getModule();
}
Set<ResGroup> groups = new HashSet<ResGroup>();
for (IARESResource res : resources) {
String groupName = ARESElementUtil.getGroup(res);
if (StringUtils.isNotEmpty(groupName)) {
groups.add(new ResGroup(groupName, module));
}
}
return groups;
}
public static List<IARESResource> getNoGroupResources(IARESModule module) {
IARESResource[] resources = module.getARESResources();
return getNoGroupResources(resources);
}
public static List<IARESResource> getNoGroupResources(IARESResource[] resources) {
List<IARESResource> noGroupResources = new ArrayList<IARESResource>();
for (IARESResource res : resources) {
String groupName = ARESElementUtil.getGroup(res);
if (StringUtils.isEmpty(groupName)) {
noGroupResources.add(res);
}
}
return noGroupResources;
}
public static List<IARESResource> getResourcesOfGroup(IARESResource[] resources, String group) {
List<IARESResource> result = new ArrayList<IARESResource>();
for (IARESResource res : resources) {
if (StringUtils.equals(group, ARESElementUtil.getGroup(res))) {
result.add(res);
}
}
return result;
}
public ResGroup(String name, IARESModule module) {
super();
this.name = name;
this.module = module;
}
/**
* @param name
* @param module
* @param resType
*/
public ResGroup(String name, IARESModule module, String resType) {
super();
this.name = name;
this.module = module;
this.cateId = resType;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IARESModule getModule() {
return module;
}
public void setModule(IARESModule module) {
this.module = module;
}
public String getCateId() {
return cateId;
}
public void setCateId(String resType) {
this.cateId = resType;
}
/**
* ���ط����µ���Դ�� Ŀǰ��ʵ����ÿ�μ��㣬���������������Կ��ǻ��棬���ǻ�����ôˢ�º��ͷ��Ǹ����⡣
* @return
*/
public IARESResource[] getResources() {
IARESResource[] resources = module.getARESResources();
if (cateId != null) {
ARESResRegistry reg = ARESResRegistry.getInstance();
String[] types = reg.getRestypes(cateId);
resources = getModule().getARESResources(types);
}
return getResourcesOfGroup(resources, name).toArray(new IARESResource[0]);
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((module == null) ? 0 : module.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((cateId == null) ? 0 : cateId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ResGroup other = (ResGroup) obj;
if (module == null) {
if (other.module != null)
return false;
} else if (!module.equals(other.module))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (cateId == null) {
if (other.cateId != null)
return false;
} else if (!cateId.equals(other.cateId))
return false;
return true;
}
}