package com.hundsun.ares.studio.jres.metadata.resources; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import com.hundsun.ares.studio.core.ARESModelException; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType; import com.hundsun.ares.studio.jres.model.metadata.ErrorNoItem; import com.hundsun.ares.studio.jres.model.metadata.ErrorNoList; import com.hundsun.ares.studio.jres.model.metadata.MetadataPackage; 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; public class ErrorNoReferenceInfoProvider implements IReferenceInfoProvider { private static final Logger LOGGER = Logger.getLogger(ErrorNoReferenceInfoProvider.class); public ErrorNoReferenceInfoProvider() { } @Override public List<ReferenceInfo> getReferenceInfos(IARESResource resource, Map<Object, Object> context) { List<ReferenceInfo> infoList = new ArrayList<ReferenceInfo>(); try { ErrorNoList errnoList = resource.getInfo(ErrorNoList.class); if(errnoList == null){ return infoList; } List<ErrorNoItem> items = errnoList.getItems(); int count = items.size(); for (int i = 0; i< count; i++) { ErrorNoItem item = items.get(i); ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setResource(resource); info.setRefName(item.getName()); info.setRefType(IMetadataRefType.ErrNo); info.setRefNamespace(resource.getBundle().getId()); info.setObjectProvider(new EMFReferenceObjectProvider( MetadataPackage.Literals.METADATA_RESOURCE_DATA, MetadataPackage.Literals.METADATA_RESOURCE_DATA__ITEMS ,i)); infoList.add(info); info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setResource(resource); info.setRefName(item.getNo()); info.setRefType(IMetadataRefType.ErrNo_No); info.setRefNamespace(resource.getBundle().getId()); info.setObjectProvider(new EMFReferenceObjectProvider( MetadataPackage.Literals.METADATA_RESOURCE_DATA, MetadataPackage.Literals.METADATA_RESOURCE_DATA__ITEMS ,i)); infoList.add(info); } } catch (ARESModelException e) { LOGGER.error(e); } return infoList; } }