/** * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio */ package com.hundsun.ares.studio.jres.metadata.resources.internal; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.ResourceTypeMapping; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.model.metadata.DictionaryItem; import com.hundsun.ares.studio.jres.model.metadata.DictionaryType; import com.hundsun.ares.studio.jres.model.metadata.MetadataItem; import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage; import com.hundsun.ares.studio.jres.model.metadata.MetadataResourceData; import com.hundsun.ares.studio.model.reference.ReferenceFactory; import com.hundsun.ares.studio.model.reference.ReferenceInfo; import com.hundsun.ares.studio.reference.EMFReferenceObjectProvider; import com.hundsun.ares.studio.reference.IReferenceInfoProvider; /** * @author gongyf * */ public class DictionaryReferenceInfoProvider implements IReferenceInfoProvider { /** * */ public DictionaryReferenceInfoProvider() { } /* (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>(); try { MetadataResourceData<MetadataItem> info = resource.getInfo(MetadataResourceData.class); if(info==null){ return infoList; } for (int i = 0; i < info.getItems().size(); i++) { MetadataItem item = info.getItems().get(i); ReferenceInfo refInfo = ReferenceFactory.eINSTANCE.createReferenceInfo(); refInfo.setResource(resource); refInfo.setRefName(item.getName()); refInfo.setRefType(ResourceTypeMapping.getInstance().getReferenceType(resource.getType())); refInfo.setRefNamespace(resource.getBundle().getId()); refInfo.setObjectProvider(new EMFReferenceObjectProvider( MetadataPackage.Literals.METADATA_RESOURCE_DATA, MetadataPackage.Literals.METADATA_RESOURCE_DATA__ITEMS ,i)); for(DictionaryItem dicitem:((DictionaryType)item).getItems()){ if(!StringUtils.isEmpty(dicitem.getConstantName())){ ReferenceInfo dicItemReferInfo = ReferenceFactory.eINSTANCE.createReferenceInfo(); dicItemReferInfo.setResource(resource); dicItemReferInfo.setRefName(dicitem.getConstantName()); dicItemReferInfo.setRefType(IMetadataRefType.Dictionary_Const); dicItemReferInfo.setRefNamespace(resource.getBundle().getId()); dicItemReferInfo.setObjectProvider(new EMFURIObjectProvider(item.eResource().getURIFragment(dicitem))); infoList.add(dicItemReferInfo); } } infoList.add(refInfo); } } catch (ARESModelException e) { e.printStackTrace(); } return infoList; } }