001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Apr 9, 2003 005 * Time: 4:30:17 PM 006 */ 007 008 package EVolve; 009 010 import java.util.ArrayList; 011 012 import EVolve.data.DataManager; 013 import EVolve.data.DataSource; 014 015 public class DataSourceManager { 016 private ArrayList dataManagerList; 017 private ArrayList filterList; 018 private int currentDataSource; 019 private DataManager currentDataManager; 020 private Filter currentFilter; 021 022 public DataSourceManager(ArrayList dsList) { 023 dataManagerList = new ArrayList(); 024 for (int i=0; i<dsList.size(); i++) { 025 DataSource dataSource = (DataSource)dsList.get(i); 026 dataManagerList.add(new DataManager(dataSource)); 027 } 028 filterList = new ArrayList(); 029 currentDataSource = -1; 030 } 031 032 public void init() { 033 for (int i=0; i<dataManagerList.size(); i++) { 034 filterList.add(new Filter()); 035 } 036 switchDataSource(0); 037 } 038 039 public int getCurrentDataSourceId() { 040 return currentDataSource; 041 } 042 043 public void switchDataSource(int selectedDataSourceIndex) { 044 if (currentDataSource == selectedDataSourceIndex) return; 045 046 currentDataSource = selectedDataSourceIndex; 047 currentDataManager = (DataManager)dataManagerList.get(selectedDataSourceIndex); 048 currentFilter = (Filter)filterList.get(selectedDataSourceIndex); 049 Scene.selectDataSource(currentDataManager, currentFilter); 050 } 051 052 public ArrayList getDataManagerList() { 053 return dataManagerList; 054 } 055 056 public boolean addDataSource(String name) { 057 boolean success = false; 058 Object dsource = EVolve.Main.instanciateDataSource(name); 059 060 if (dsource == null) { 061 Scene.showErrorMessage("EVolve failed to instanciate data source: \"" + name + "\""); 062 } else if (dsource instanceof DataSource) { 063 dataManagerList.add(new DataManager((DataSource)dsource)); 064 filterList.add(new Filter()); 065 success = true; 066 } else { 067 Scene.showErrorMessage("EVolve> \"" + name + "\" is not a DataSource"); 068 } 069 return success; 070 } 071 072 public String getUsedDataSourceName(int dataSourceId) { 073 DataManager dm = (DataManager)dataManagerList.get(dataSourceId); 074 return dm.getDatasourceName(); 075 } 076 077 public String getCurrentDataSourceName() { 078 return currentDataManager.getDatasourceName(); 079 } 080 081 public DataManager getDataManager(int index) { 082 if (index >= dataManagerList.size()) return null; 083 084 return (DataManager)dataManagerList.get(index); 085 } 086 087 public void removeDataSource(int[] tobeMoved) { 088 ArrayList newDMList = new ArrayList(); 089 ArrayList newFilterList = new ArrayList(); 090 091 for (int i=0; i<dataManagerList.size(); i++) { 092 boolean remove = false; 093 for (int j=0; j<tobeMoved.length; j++) { 094 if (i == tobeMoved[j]) { 095 remove = true; 096 break; 097 } 098 } 099 if (!remove) { 100 newDMList.add(dataManagerList.get(i)); 101 newFilterList.add(filterList.get(i)); 102 } 103 } 104 105 dataManagerList = newDMList; 106 filterList = newFilterList; 107 currentDataSource = 0; 108 currentDataManager = (DataManager)dataManagerList.get(0); 109 currentFilter = (Filter)filterList.get(0); 110 Scene.selectDataSource(currentDataManager, currentFilter); 111 } 112 }