/** * Դ�������ƣ�OracleTableAdapter.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.oracle.core * ����˵����$desc * ����ĵ��� * ���ߣ���С�� */ package com.hundsun.ares.studio.jres.database.oracle.internal.service; import java.util.Collections; import java.util.List; import org.apache.commons.lang.StringUtils; import com.hundsun.ares.studio.core.IARESProject; import com.hundsun.ares.studio.core.service.DataServiceManager; import com.hundsun.ares.studio.core.service.FastFindArrayList; import com.hundsun.ares.studio.core.service.IKeyProvider; import com.hundsun.ares.studio.jres.database.oracle.service.IOracleDBService; import com.hundsun.ares.studio.jres.database.oracle.service.IOracleTable; import com.hundsun.ares.studio.jres.database.oracle.service.IOracleTableColumn; import com.hundsun.ares.studio.jres.database.oracle.service.IOracleTableIndex; import com.hundsun.ares.studio.jres.database.oracle.service.ITableSpaceRelation; import com.hundsun.ares.studio.jres.model.database.TableColumn; import com.hundsun.ares.studio.jres.model.database.TableIndex; import com.hundsun.ares.studio.jres.model.database.TableResourceData; import com.hundsun.ares.studio.jres.model.database.oracle.OracleTableProperty; /** * @author wangxh * */ public class OracleTableAdapter implements IOracleTable { protected final TableResourceData tableResourceData; protected FastFindArrayList<String, IOracleTableColumn>tableColumnList; protected FastFindArrayList<String, IOracleTableIndex>tableIndexList; private IARESProject project; private String indexSpace; public OracleTableAdapter(TableResourceData tableResourceData,IARESProject project) { super(); this.tableResourceData = tableResourceData; this.project = project; } @Override public String getName() { return tableResourceData.getName(); } @Override public String getChineseName() { return tableResourceData.getChineseName(); } @Override public String getDescription() { return tableResourceData.getDescription(); } @Override public IOracleTableColumn getColum(String name) { return getTableColumnList().find(name); } @Override public List<IOracleTableColumn> getColumnList() { return Collections.unmodifiableList(getTableColumnList()); } @Override public IOracleTableIndex getIndex(String name) { return getTableIndexList().find(name); } @Override public List<IOracleTableIndex> getIndexList() { return Collections.unmodifiableList(getTableIndexList()); } /** * @return the tableColumnList */ public FastFindArrayList<String, IOracleTableColumn> getTableColumnList() { if(tableColumnList == null){ tableColumnList = new FastFindArrayList<String, IOracleTableColumn>(new IKeyProvider<String, IOracleTableColumn>() { @Override public String getKey(IOracleTableColumn obj) { return obj.getName(); } }); for (TableColumn col : tableResourceData.getColumns()) { tableColumnList.add(new OracleTableColumnAdapter(col,project)); } } return tableColumnList; } /** * @return the tableIndexList */ public FastFindArrayList<String, IOracleTableIndex> getTableIndexList() { if(tableIndexList == null){ tableIndexList = new FastFindArrayList<String, IOracleTableIndex>(new IKeyProvider<String, IOracleTableIndex>() { @Override public String getKey(IOracleTableIndex obj) { return obj.getName(); } }); for (TableIndex index : tableResourceData.getIndexes()) { tableIndexList.add(new OracleTableIndexAdapter(index,project)); } } return tableIndexList; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.oracle.service.IOracleTable#getSpace() */ @Override public String getSpace() { return ((OracleTableProperty) tableResourceData).getSpace(); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.oracle.service.IOracleTable#getIndexSpace() */ @Override public String getIndexSpace() { // FIXME ͨ��project�Ȳ��ҳ�����Ҫ���л��� if (indexSpace == null) { IOracleDBService service = DataServiceManager.getInstance().getService(project, IOracleDBService.class); if(service != null){ ITableSpaceRelation field = service.getSpaceList().get(0).getTableSpaceRelation(getSpace()); if (field != null) { indexSpace = field.getIndexSpace(); } } else { indexSpace = StringUtils.EMPTY; } } return indexSpace; } }