/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.biz.util; import java.util.List; 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.core.IARESProject; import com.hundsun.ares.studio.core.IARESResource; /** * @author liaogc * */ public class ParamGroupUtil { /** * �ݹ���������(������������Ϊ��׼�ֶεIJ����Լ�����IJ���) * @param gruopParam * @param retParameter * @param isInParameter * @param project */ public static void parserParamGroup( Parameter gruopParam,List<Parameter> retParameter,int callDepth,IARESProject project){ if(project==null){ return; } String path = gruopParam.getType(); try { IARESResource objectRes = project.findResource(path, "object"); ARESObject aresObject = objectRes.getInfo(ARESObject.class); List<Parameter> properties = aresObject.getProperties(); for(Parameter parameter:properties){ if (parameter.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE) {// ����Dz�������ݹ���� if(callDepth<=5){ parserParamGroup(parameter, retParameter,callDepth+1, project); } } else if (parameter.getParamType().getValue() == ParamType.OBJECT_VALUE) { retParameter.add(parameter); } else if (parameter.getParamType().getValue() == ParamType.STD_FIELD_VALUE) { retParameter.add(parameter); } } } catch (Exception e) { e.printStackTrace(); } } /** * �ݹ�η��س�����������в���(�����齫չ��) * @param gruopParam * @param retParameter * @param isInParameter * @param project */ public static void parserParametersWithNoObjectParameter( Parameter gruopParam,List<Parameter> retParameter,int callDepth,IARESProject project){ if(project==null){ return; } String path = gruopParam.getType(); try { IARESResource objectRes = project.findResource(path, "object"); ARESObject aresObject = objectRes.getInfo(ARESObject.class); List<Parameter> properties = aresObject.getProperties(); for(Parameter parameter:properties){ if (parameter.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE) {// ����Dz�������ݹ���� if(callDepth<=5){ parserParametersWithNoObjectParameter(parameter, retParameter,callDepth+1, project); } } else if (parameter.getParamType().getValue() != ParamType.OBJECT_VALUE) { retParameter.add(parameter); } } } catch (Exception e) { e.printStackTrace(); } } /** * ������������������:������������в���(�����齫չ��) * @param parameters * @param retParameter * @param project */ public static void parserParametersWithNoObjectParameter( List<Parameter>parameters ,List<Parameter> retParameter,IARESProject project){ int callDepth = 1; for(Parameter parameter1:parameters){ if(parameter1.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE){ String path = parameter1.getType(); try { IARESResource objectRes = project.findResource(path, "object"); ARESObject aresObject = objectRes.getInfo(ARESObject.class); List<Parameter> properties = aresObject.getProperties(); for(Parameter parameter2:properties){ if (parameter2.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE) {// ����Dz�������ݹ���� if(callDepth<=5){ parserParametersWithNoObjectParameter(parameter2, retParameter,callDepth+1, project); } } else if (parameter2.getParamType().getValue() != ParamType.OBJECT_VALUE) { retParameter.add(parameter2); } } } catch (Exception e) { e.printStackTrace(); } }else if(parameter1.getParamType().getValue() != ParamType.OBJECT_VALUE){ retParameter.add(parameter1); } } } /** * �ж�����������Ƿ�������� * @param parameters * @param project * @return */ public static boolean isContainObjectParameter( List<Parameter>parameters ,IARESProject project){ int callDepth = 1; for(Parameter parameter1:parameters){ if(parameter1.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE){ String path = parameter1.getType(); try { IARESResource objectRes = project.findResource(path, "object"); ARESObject aresObject = objectRes.getInfo(ARESObject.class); List<Parameter> properties = aresObject.getProperties(); for(Parameter parameter2:properties){ if (parameter2.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE) {// ����Dz�������ݹ���� if(callDepth<=5){ boolean isContainObjectParameter = isContainsObjectParameter(parameter2,callDepth+1, project); if(isContainObjectParameter){ return true; } } } else if (parameter2.getParamType().getValue() == ParamType.OBJECT_VALUE) { return true; } } } catch (Exception e) { e.printStackTrace(); } }else if(parameter1.getParamType().getValue() == ParamType.OBJECT_VALUE){ return true; } } return false; } /** * �жϲ��������Ƿ�������� * @param gruopParam * @param callDepth * @param project * @return */ public static boolean isContainsObjectParameter( Parameter gruopParam,int callDepth,IARESProject project){ if(project==null){ return false; } String path = gruopParam.getType(); try { IARESResource objectRes = project.findResource(path, "object"); ARESObject aresObject = objectRes.getInfo(ARESObject.class); List<Parameter> properties = aresObject.getProperties(); for(Parameter parameter:properties){ if (parameter.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE) {// ����Dz�������ݹ���� if(callDepth<=5){ boolean isContainObjectParameter =isContainsObjectParameter(parameter,callDepth+1, project); if(isContainObjectParameter){ return true; } } } else if (parameter.getParamType().getValue() == ParamType.OBJECT_VALUE) { return true; } } } catch (Exception e) { e.printStackTrace(); } return false; } /** * ������������������ * @param parameters * @param retParameter * @param project */ public static void parserParameters( List<Parameter>parameters ,List<Parameter> retParameter,IARESProject project){ int callDepth = 1; for(Parameter parameter1:parameters){ if(parameter1.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE){ String path = parameter1.getType(); try { IARESResource objectRes = project.findResource(path, "object"); ARESObject aresObject = objectRes.getInfo(ARESObject.class); List<Parameter> properties = aresObject.getProperties(); for(Parameter parameter2:properties){ if (parameter2.getParamType().getValue() == ParamType.PARAM_GROUP_VALUE) {// ����Dz�������ݹ���� if(callDepth<=5){ parserParamGroup(parameter2, retParameter,callDepth+1, project); } } else if (parameter2.getParamType().getValue() == ParamType.OBJECT_VALUE) { retParameter.add(parameter2); } else if (parameter2.getParamType().getValue() == ParamType.STD_FIELD_VALUE) { retParameter.add(parameter2); } } } catch (Exception e) { e.printStackTrace(); } }else{ retParameter.add(parameter1); } } } }