/** * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio */ package com.hundsun.ares.studio.jres.database.resource.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.ARESResourceObjectProvider; import com.hundsun.ares.studio.jres.database.constant.IDatabaseRefType; import com.hundsun.ares.studio.jres.database.constant.IDatabaseResType; import com.hundsun.ares.studio.jres.model.database.DatabasePackage; import com.hundsun.ares.studio.jres.model.database.TableColumn; import com.hundsun.ares.studio.jres.model.database.TableResourceData; import com.hundsun.ares.studio.jres.model.database.ViewResourceData; 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 DatabaseReferenceInfoProvider implements IReferenceInfoProvider { /** * */ public DatabaseReferenceInfoProvider() { } /* (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 (IDatabaseResType.Table.equalsIgnoreCase(resource.getType())) { TableResourceData table = resource.getInfo(TableResourceData.class); if (table == null) { return infoList; } ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setResource(resource); info.setRefName(table.getName()); info.setRefType(IDatabaseRefType.Table); info.setRefNamespace(StringUtils.EMPTY); info.setObjectProvider(ARESResourceObjectProvider.INSTANCE); infoList.add(info); // ���ֶ� for (int i = 0; i < table.getColumns().size(); i++) { TableColumn col = table.getColumns().get(i); ReferenceInfo colInfo = ReferenceFactory.eINSTANCE.createReferenceInfo(); colInfo.setRefName(col.getName()); colInfo.setRefType(IDatabaseRefType.TableField); colInfo.setRefNamespace(StringUtils.EMPTY); colInfo.setObjectProvider(new EMFReferenceObjectProvider( DatabasePackage.Literals.TABLE_RESOURCE_DATA, DatabasePackage.Literals.TABLE_RESOURCE_DATA__COLUMNS, i)); colInfo.setResource(resource); infoList.add(colInfo); } } if (IDatabaseResType.View.equalsIgnoreCase(resource.getType())) { ViewResourceData view = resource.getInfo(ViewResourceData.class); if (view == null) { return infoList; } ReferenceInfo info = ReferenceFactory.eINSTANCE.createReferenceInfo(); info.setResource(resource); info.setRefName(view.getName()); info.setRefType(IDatabaseRefType.View); info.setRefNamespace(StringUtils.EMPTY); info.setObjectProvider(ARESResourceObjectProvider.INSTANCE); infoList.add(info); } } catch (ARESModelException e) { } return infoList; } }