private String getDescription(MetadataItem mdItem) { // 标准字段提示具体的说明信息 TASK #8602 输入输出中标准字段参数,能显示具体的说明信息 if (mdItem instanceof StandardField) { StandardField field = (StandardField) mdItem; StringBuffer text = new StringBuffer(); String dictTypeStr = field.getDictionaryType(); if (StringUtils.isNotBlank(dictTypeStr)) { ReferenceInfo dictReferenceInfo = ReferenceManager.getInstance() .getFirstReferenceInfo(project, IMetadataRefType.Dict, dictTypeStr, true); if (dictReferenceInfo != null) { DictionaryType objDictionaryType = (DictionaryType) dictReferenceInfo.getObject(); if (objDictionaryType != null) { for (DictionaryItem item : objDictionaryType.getItems()) { String value = StringUtils.defaultString(item.getValue()); String chineseName = StringUtils.defaultString(item.getChineseName()); text.append(objDictionaryType.getName()); text.append(":"); text.append(objDictionaryType.getChineseName()); text.append("-"); text.append(value); text.append(":"); text.append(chineseName); text.append("\r\n"); } } } } if (StringUtils.isNotBlank(text.toString()) && StringUtils.isNotBlank(field.getDescription())) { text.append("\r\n"); text.append(field.getDescription()); } String desc = StringUtils.defaultString( StringUtils.defaultIfBlank(text.toString(), field.getDescription())); if (StringUtils.isNotBlank(desc)) { return desc; } } return null; }
/* (non-Javadoc) * @see com.hundsun.ares.studio.reference.IReferenceInfoProvider#getReferenceInfos(com.hundsun.ares.studio.core.IARESResource, java.util.Map) */ @Override public List<ReferenceInfo> getReferenceInfos( IARESResource resource, Map<Object, Object> context) { List<ReferenceInfo> infoList = new ArrayList<ReferenceInfo>(); ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setRefName(resource.getFullyQualifiedName()); info.setRefType(ResourceTypeMapping.getInstance().getReferenceType(resource.getType())); info.setRefNamespace(StringUtils.EMPTY); info.setResource(resource); info.setObjectProvider(ARESResourceObjectProvider.INSTANCE); infoList.add(info); return infoList; }
@Override public List<ReferenceInfo> getReferenceInfos( IARESResource resource, Map<Object, Object> context) { List<ReferenceInfo> infoList = new ArrayList<ReferenceInfo>(); BasicResourceInfo basicInfo = null; try { basicInfo = resource.getInfo(BasicResourceInfo.class); } catch (ARESModelException e) { e.printStackTrace(); } if (basicInfo != null) { ReferenceInfo cnameRefInfo = ReferenceFactory.eINSTANCE.createReferenceInfo(); cnameRefInfo.setResource(resource); cnameRefInfo.setRefName(basicInfo.getChineseName()); cnameRefInfo.setRefType( ResourceTypeMapping.getInstance().getReferenceType(resource.getType())); cnameRefInfo.setRefNamespace(resource.getBundle().getId()); cnameRefInfo.setObjectProvider(ARESResourceObjectProvider.INSTANCE); infoList.add(cnameRefInfo); } return infoList; }
@Override public String getText(Object element) { Parameter p = (Parameter) getOwner(element); EStructuralFeature feature = getEStructuralFeature(element); if (feature.getEType().equals(EcorePackage.Literals.EBOOLEAN) || feature.getEType().equals(EcorePackage.Literals.EBOOLEAN_OBJECT)) { return StringUtils.EMPTY; } // 不同参数类型分开处理 switch (p.getParamType()) { case NON_STD_FIELD: // 非标准字段参数的真实类型也不可编辑,显示对应的业务数据类型的设置的语言的值(在项目属性中设置) if (feature.equals(BizPackage.Literals.PARAMETER__REAL_TYPE)) { String bizType = p.getType(); if (StringUtils.isEmpty(bizType)) break; ReferenceInfo ref = ReferenceManager.getInstance() .getFirstReferenceInfo(project, IMetadataRefType.BizType, bizType, true); if (ref != null) { BusinessDataType bizDataType = (BusinessDataType) ref.getObject(); if (bizDataType == null) break; String stdType = bizDataType.getStdType(); if (StringUtils.isEmpty(stdType)) break; ReferenceInfo stdTypeRef = ReferenceManager.getInstance() .getFirstReferenceInfo(project, IMetadataRefType.StdType, stdType, true); if (stdTypeRef == null) break; StandardDataType stdDataType = (StandardDataType) stdTypeRef.getObject(); return stdDataType.getData().get(dataType); } } else if (BizPackage.Literals.PARAMETER__DEFAULT_VALUE.equals(feature)) { return getNonStdParameterDefaultValue(p.getDefaultValue(), p); } break; case STD_FIELD: if (BizPackage.Literals.PARAMETER__NAME.equals(feature) || BizPackage.Literals.PARAMETER__REAL_TYPE.equals(feature) || BizPackage.Literals.PARAMETER__TYPE.equals(feature) || BizPackage.Literals.PARAMETER__DESCRIPTION.equals(feature) || BizPackage.Literals.PARAMETER__DEFAULT_VALUE.equals(feature)) { ReferenceInfo referenceInfo = ReferenceManager.getInstance() .getFirstReferenceInfo(project, IMetadataRefType.StdField, p.getId(), true); if (referenceInfo != null) { StandardField field = (StandardField) referenceInfo.getObject(); if (field == null) { return StringUtils.EMPTY; } if (BizPackage.Literals.PARAMETER__NAME.equals(feature)) { return field.getChineseName(); } else if (BizPackage.Literals.PARAMETER__REAL_TYPE.equals( feature)) { // 一般不存在此情况,如果要取真实类型可以继承此类重新实现 try { StandardDataType sdt = MetadataServiceProvider.getStandardDataTypeOfStdFieldByName( project, field.getName()); if (sdt != null) { return sdt.getData().get(dataType); } } catch (Exception e) { // e.printStackTrace(); } } else if (BizPackage.Literals.PARAMETER__TYPE.equals(feature)) { return field.getDataType(); } else if (BizPackage.Literals.PARAMETER__DESCRIPTION.equals(feature)) { StringBuffer text = new StringBuffer(); String dictTypeStr = field.getDictionaryType(); if (StringUtils.isNotBlank(dictTypeStr)) { ReferenceInfo dictReferenceInfo = ReferenceManager.getInstance() .getFirstReferenceInfo(project, IMetadataRefType.Dict, dictTypeStr, true); if (dictReferenceInfo != null) { DictionaryType objDictionaryType = (DictionaryType) dictReferenceInfo.getObject(); if (objDictionaryType != null) { for (DictionaryItem item : objDictionaryType.getItems()) { String value = StringUtils.defaultString(item.getValue()); String chineseName = StringUtils.defaultString(item.getChineseName()); text.append(value); text.append(":"); text.append(chineseName); text.append(" "); } } } } if (StringUtils.isNotBlank(text.toString()) && StringUtils.isNotBlank(field.getDescription())) { text.append("\r\n"); text.append(field.getDescription()); } return StringUtils.defaultString( StringUtils.defaultIfBlank(text.toString(), field.getDescription())); } else if (BizPackage.Literals.PARAMETER__DEFAULT_VALUE.equals(feature)) { return getParameterDefaultValue(p.getDefaultValue(), field); } } } break; case OBJECT: // 如果有对象标准字段列表资源 if (BizUtil.hasStdObjList(project)) { String refId = p.getId(); ReferenceInfo ref = ReferenceManager.getInstance() .getFirstReferenceInfo(project, IBizRefType.Std_Obj, refId, true); if (ref == null) break; StandardObjField field = (StandardObjField) ref.getObject(); String objId = field.getType(); ARESObject obj = BizUtil.getObject(objId, project); if (feature.equals(BizPackage.Literals.PARAMETER__TYPE)) { if (StringUtils.contains(objId, '.')) return StringUtils.substringAfterLast(objId, "."); } else if (feature.equals(BizPackage.Literals.PARAMETER__NAME)) { return obj == null ? StringUtils.EMPTY : obj.getChineseName(); } else if (feature.equals(BizPackage.Literals.PARAMETER__DESCRIPTION)) { return obj == null ? StringUtils.EMPTY : obj.getDescription(); } } else { String objId = p.getType(); ReferenceInfo ref = null; // ReferenceManager.getInstance().getFirstReferenceInfo(project, // IBizRefType.Object, objId, true); List<String> refTypes = ObjectRefTypes.getRefTypes(); for (String refType : refTypes) { ref = ReferenceManager.getInstance().getFirstReferenceInfo(project, refType, objId, true); if (ref != null) { break; } } // 2012-10-18 sundl 对象类型参数显示的时候,只显示最后一个点后面的部分 if (feature.equals(BizPackage.Literals.PARAMETER__TYPE)) { String type = super.getText(element); if (StringUtils.indexOf(type, '.') != -1) return StringUtils.substringAfterLast(type, "."); } else if (feature.equals(BizPackage.Literals.PARAMETER__NAME)) { if (ref != null) { ARESObject obj = (ARESObject) ref.getObject(); return obj.getChineseName(); } } else if (feature.equals(BizPackage.Literals.PARAMETER__DESCRIPTION)) { if (ref != null) { ARESObject obj = (ARESObject) ref.getObject(); return obj.getDescription(); } } } break; case PARAM_GROUP: String objId = p.getType(); ReferenceInfo ref = ReferenceManager.getInstance() .getFirstReferenceInfo(project, IBizRefType.Object, objId, true); // 2012-10-18 sundl 对象类型参数显示的时候,只显示最后一个点后面的部分 if (feature.equals(BizPackage.Literals.PARAMETER__TYPE)) { String type = super.getText(element); if (StringUtils.indexOf(type, '.') != -1) return StringUtils.substringAfterLast(type, "."); } else if (feature.equals(BizPackage.Literals.PARAMETER__NAME)) { if (ref != null) { ARESObject obj = (ARESObject) ref.getObject(); return obj.getChineseName(); } } else if (feature.equals(BizPackage.Literals.PARAMETER__DESCRIPTION)) { if (ref != null) { ARESObject obj = (ARESObject) ref.getObject(); return obj.getDescription(); } } else if (feature.equals(BizPackage.Literals.PARAMETER__ID)) { if (ref != null) { ARESObject obj = (ARESObject) ref.getObject(); return obj.getName(); } } default: break; } return super.getText(element); }