/** * Դ�������ƣ�BasicDatabaseService.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.core * ����˵����$desc * ����ĵ��� * ���ߣ���Ҷ�� */ package com.hundsun.ares.studio.jres.database.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.FastFindArrayList; import com.hundsun.ares.studio.core.service.IKeyProvider; import com.hundsun.ares.studio.jres.database.constant.IDatabaseRefType; import com.hundsun.ares.studio.jres.database.service.IDatabaseService; import com.hundsun.ares.studio.jres.database.service.ITable; import com.hundsun.ares.studio.jres.database.service.IView; 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.ReferenceInfo; import com.hundsun.ares.studio.reference.ReferenceManager; /** * @author gongyf * */ public class BasicDatabaseService implements IDatabaseService { private final IARESProject project; private FastFindArrayList<String, ITable> cachedTableList; private FastFindArrayList<String, IView> cachedViewList; /** * @param project */ public BasicDatabaseService(IARESProject project) { super(); this.project = project; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.core.service.IDataService#refresh() */ @Override public void refresh() { cachedTableList = null; cachedViewList = null; } /** * @return the cachedTableList */ public FastFindArrayList<String, ITable> getCachedTableList() { if (cachedTableList == null) { cachedTableList = new FastFindArrayList<String, ITable>(new IKeyProvider<String, ITable>() { @Override public String getKey(ITable obj) { return obj.getName(); } }); // TODO ��Ӵ��ڵı� List<ReferenceInfo> refList = ReferenceManager.getInstance().getReferenceInfos(project, IDatabaseRefType.Table, true); for(ReferenceInfo ref : refList){ // FIXME ����Ӧ�ÿ�����getResource.getName��ȡ���֣�ʡȥһ��getInfo�ĵ��� TableResourceData tableResourceData = (TableResourceData)ref.getObject(); String name = tableResourceData.getName(); ITable table = new TableAdapter(tableResourceData,project); if (StringUtils.isBlank(name)) { continue; } else{ cachedTableList.add(table); } } } return cachedTableList; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.service.IDatabaseService#getTableList() */ @Override public List<? extends ITable> getTableList() { return Collections.unmodifiableList(getCachedTableList()); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.service.IDatabaseService#getTable(java.lang.String) */ @Override public ITable getTable(String name) { return getCachedTableList().find(name); } /** * @return the cachedViewList */ public FastFindArrayList<String, IView> getCachedViewList() { if (cachedViewList == null) { cachedViewList = new FastFindArrayList<String, IView>(new IKeyProvider<String, IView>() { @Override public String getKey(IView obj) { return obj.getName(); } }); // TODO ��Ӵ��ڵı� List<ReferenceInfo> refList = ReferenceManager.getInstance().getReferenceInfos(project, IDatabaseRefType.View, true); for(ReferenceInfo ref : refList){ ViewResourceData viewResourceData = (ViewResourceData)ref.getObject(); String name = viewResourceData.getName(); IView view = new ViewAdapter(viewResourceData); if (StringUtils.isBlank(name)) { continue; } else{ cachedViewList.add(view); } } } return cachedViewList; } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.service.IDatabaseService#getViewList() */ @Override public List<? extends IView> getViewList() { return Collections.unmodifiableList(getCachedViewList()); } /* (non-Javadoc) * @see com.hundsun.ares.studio.jres.database.service.IDatabaseService#getView(java.lang.String) */ @Override public IView getView(String name) { return getCachedViewList().find(name); } }