/** * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio */ package com.hundsun.ares.studio.jres.database.oracle.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.ARESResourceObjectProvider; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.jres.database.oracle.constant.IOracleRefType; import com.hundsun.ares.studio.jres.database.oracle.constant.IOracleResType; import com.hundsun.ares.studio.jres.model.database.oracle.OraclePackage; import com.hundsun.ares.studio.jres.model.database.oracle.OracleSpaceResourceData; import com.hundsun.ares.studio.jres.model.database.oracle.OracleUser; import com.hundsun.ares.studio.jres.model.database.oracle.OracleUserResourceData; import com.hundsun.ares.studio.jres.model.database.oracle.TableSpace; import com.hundsun.ares.studio.jres.model.database.oracle.TableSpaceRelation; 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 OracleReferenceInfoProvider implements IReferenceInfoProvider { /** * */ public OracleReferenceInfoProvider() { } /* (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 { if (resource.getType().equals(IOracleResType.Sequence)) { ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setRefName(resource.getFullyQualifiedName()); info.setRefType(IOracleRefType.Sequence); info.setRefNamespace(StringUtils.EMPTY); info.setResource(resource); info.setObjectProvider(ARESResourceObjectProvider.INSTANCE); infoList.add(info); } else if (resource.getType().equals(IOracleResType.Trigger)) { ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setRefName(resource.getFullyQualifiedName()); info.setRefType(IOracleRefType.Trigger); info.setRefNamespace(StringUtils.EMPTY); info.setResource(resource); info.setObjectProvider(ARESResourceObjectProvider.INSTANCE); infoList.add(info); } else if (resource.getType().equals(IOracleResType.Space)) { OracleSpaceResourceData data = resource.getInfo(OracleSpaceResourceData.class); if (data == null) { return infoList; } for (int i = 0; i < data.getSpaces().size(); i++ ) { TableSpace ts = data.getSpaces().get(i); ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setRefName(ts.getName()); info.setRefType(IOracleRefType.Space); info.setRefNamespace(StringUtils.EMPTY); info.setResource(resource); info.setObjectProvider(new EMFReferenceObjectProvider( OraclePackage.Literals.ORACLE_SPACE_RESOURCE_DATA, OraclePackage.Literals.ORACLE_SPACE_RESOURCE_DATA__SPACES, i)); infoList.add(info); } for (int i = 0; i < data.getRelations().size(); i++ ) { TableSpaceRelation tsr = data.getRelations().get(i); ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setRefName(tsr.getMainSpace()); info.setRefType(IOracleRefType.SpaceRelation); info.setRefNamespace(StringUtils.EMPTY); info.setResource(resource); info.setObjectProvider(new EMFReferenceObjectProvider( OraclePackage.Literals.ORACLE_SPACE_RESOURCE_DATA, OraclePackage.Literals.ORACLE_SPACE_RESOURCE_DATA__RELATIONS, i)); infoList.add(info); } } else if (resource.getType().equals(IOracleResType.User)) { OracleUserResourceData data = resource.getInfo(OracleUserResourceData.class); if (data == null) { return infoList; } for (int i = 0; i < data.getUsers().size(); i++ ) { OracleUser ou = data.getUsers().get(i); ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setRefName(ou.getName()); info.setRefType(IOracleRefType.User); info.setRefNamespace(StringUtils.EMPTY); info.setResource(resource); info.setObjectProvider(new EMFReferenceObjectProvider( OraclePackage.Literals.ORACLE_USER_RESOURCE_DATA, OraclePackage.Literals.ORACLE_USER_RESOURCE_DATA__USERS, i)); infoList.add(info); } } } catch (ARESModelException e) { } return infoList; } }