/** * Դ�������ƣ�BizUtil.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.biz.core * ����˵����$desc * ����ĵ��� * ���ߣ�sundl */ package com.hundsun.ares.studio.biz.core; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import com.hundsun.ares.studio.biz.ARESObject; import com.hundsun.ares.studio.biz.ParamType; import com.hundsun.ares.studio.biz.Parameter; import com.hundsun.ares.studio.biz.StandardObjField; import com.hundsun.ares.studio.biz.constants.IBizConstants; import com.hundsun.ares.studio.biz.constants.IBizRefType; import com.hundsun.ares.studio.core.ARESCore; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESModule; import com.hundsun.ares.studio.core.IARESModuleRoot; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.util.ARESElementUtil; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.model.metadata.StandardField; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; /** * @author sundl * */ public class BizUtil { /** * ��ȡ����������������� ����������Զ��жϲ������ͣ��Լ���ǰ��Ŀ���Ƿ�ʹ���˶����׼�ֶΣ� * ���ݲ�ͬ�����������ȷ��ֵ�� �����������õı�׼�ֶλ���󲻴��ڵ������ʱ�򣬷��ؿ��ַ����� * @param p * @param project * @return */ public static String getCName(Parameter p, IARESProject project) { ParamType pType = p.getParamType(); if (pType == ParamType.STD_FIELD) { StandardField stdField = getStdField(p.getId(), project); return stdField == null ? StringUtils.EMPTY : stdField.getChineseName(); } else if (pType == ParamType.NON_STD_FIELD) { return p.getName() == null ? StringUtils.EMPTY : p.getName(); } else if (pType == ParamType.OBJECT) { ARESObject obj = BizUtil.getObject(p, project); return obj == null ? StringUtils.EMPTY : obj.getChineseName(); } return StringUtils.EMPTY; } /** * ��ȡ���������˵���� ����������Զ��жϲ������ͣ��Լ���ǰ��Ŀ���Ƿ�ʹ���˶����׼�ֶΣ� * ���ݲ�ͬ�����������ȷ��ֵ�� �����������õı�׼�ֶλ���󲻴��ڵ������ʱ�򣬷��ؿ��ַ����� * @param p * @param project * @return */ public static String getDesc(Parameter p, IARESProject project) { ParamType pType = p.getParamType(); if (pType == ParamType.STD_FIELD) { StandardField stdField = getStdField(p.getId(), project); return stdField == null ? StringUtils.EMPTY : stdField.getDescription(); } else if (pType == ParamType.NON_STD_FIELD) { return p.getDescription() == null ? StringUtils.EMPTY : p.getDescription(); } else if (pType == ParamType.OBJECT) { ARESObject obj = BizUtil.getObject(p, project); return obj == null ? StringUtils.EMPTY : obj.getDescription(); } return StringUtils.EMPTY; } /** * ���ݶ���ȫ��(id)���Ҷ��� * @param id * @param project * @return */ public static ARESObject getObject(String id, IARESProject project) { List<String> refTypes = ObjectRefTypes.getRefTypes(); for (String refType : refTypes) { ReferenceInfo ref = ReferenceManager.getInstance().getFirstReferenceInfo(project, refType, id, true); if (ref != null) { Object refObject = ref.getObject(); if (refObject instanceof ARESObject) { return (ARESObject) ref.getObject(); } } } return null; } /** * ֱ�Ӹ��ݲ��������ȡ���Ӧ�Ķ����壬 ����Ҳ������򷵻�null * @param p * @param project * @return */ public static ARESObject getObject(Parameter p, IARESProject project) { if (p.getParamType() != ParamType.OBJECT && p.getParamType() != ParamType.PARAM_GROUP) return null; if (hasStdObjList(project)) { // ������ڶ����׼�ֶ���Դ����Ӧ���Ƕ����׼�ֶε��÷� // ���ȸ��������ҵ���Ӧ�Ķ����׼�ֶεĶ��壬 // Ȼ���ٸ��ݶ����׼�ֶε���Ϣ�ҵ���Ӧ�Ķ��� String stdObjId = p.getId(); ReferenceInfo ref = ReferenceManager.getInstance().getFirstReferenceInfo(project, IBizRefType.Std_Obj, stdObjId, true); if (ref == null) return null; StandardObjField std = (StandardObjField) ref.getObject(); if (std == null) return null; String objId = std.getType(); return getObject(objId, project); } else { String objId = p.getType(); return getObject(objId, project); } } public static StandardField getStdField(String id, IARESProject project) { ReferenceInfo ref = ReferenceManager.getInstance().getFirstReferenceInfo(project, IMetadataRefType.StdField, id, true); return (StandardField) (ref == null ? null : ref.getObject()); } public static boolean hasCRESNature(IProject project) { if (project == null) return false; if (!project.isOpen()) return false; try { return project.hasNature("com.hundsun.ares.studio.cresnature"); } catch (CoreException e) { e.printStackTrace(); } return false; } /** * �ж���Ŀ�Ƿ��ж����׼�ֶ��б���Դ * @param project * @return */ public static boolean hasStdObjList(IARESProject project) { if (project == null || !project.isOpen()) { return false; } try { for (IARESModuleRoot root : project.getModuleRoots()) { IARESModule module = root.getModule(StringUtils.EMPTY); IARESResource res = module.getARESResource("stdobj.xml"); if (res != null && res.exists()) return true; } } catch (ARESModelException e) { e.printStackTrace(); } return false; } public static IARESModuleRoot getBizRoot(IARESProject project) { IFolder bizFolder = ARESElementUtil.getModuleRootFolder(project, IBizConstants.BIZ_ROOT2); if (bizFolder == null) bizFolder = ARESElementUtil.getModuleRootFolder(project, IBizConstants.BIZ_ROOT); if (bizFolder == null) { return null; } return (IARESModuleRoot) ARESCore.create(bizFolder); } }