Project

General

Profile

« Previous | Next » 

Revision 5ed160dc

Added by Cherian Mathew almost 10 years ago

refactored wizard dialog and pages to allow for easy in place editing and cloning of datasources.
CdmDataSourceRepository : added methods for (I)PersistentRemoteSource

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java
23 23
import org.eclipse.ui.XMLMemento;
24 24

  
25 25
import eu.etaxonomy.cdm.config.CdmPersistentSourceUtils;
26
import eu.etaxonomy.cdm.config.ICdmPersistentSource;
27
import eu.etaxonomy.cdm.config.ICdmSource;
26 28
import eu.etaxonomy.cdm.database.CdmDataSource;
27 29
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
28 30
import eu.etaxonomy.cdm.database.DataSourceNotFoundException;
29 31
import eu.etaxonomy.cdm.database.ICdmDataSource;
30 32
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
33
import eu.etaxonomy.cdm.remote.CdmPersistentRemoteSource;
34
import eu.etaxonomy.cdm.remote.CdmRemoteSourceException;
35
import eu.etaxonomy.cdm.remote.ICdmRemoteSource;
31 36
import eu.etaxonomy.taxeditor.model.MementoHelper;
32 37
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
33 38
import eu.etaxonomy.taxeditor.store.CdmStore;
34 39
import eu.etaxonomy.taxeditor.store.StoreUtil;
35 40
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
36
public class CdmDataSourceRepository{;
41
public class CdmDataSourceRepository{
37 42

  
38 43
	/** Constant <code>TAG_DATASOURCE="tagDataSource"</code> */
39 44
	public static final String TAG_DATASOURCE = "tagDataSource";
......
41 46
	private static final String DEFAULT_DATASOURCE_STATE_FILENAME = "datasource.xml";
42 47
	private static final String DEFAULT_DATASOURCE_NAME = "cdm";
43 48
	
44
	private static ICdmDataSource currentDataSource;
49
	private static ICdmSource currentCdmSource;
45 50
	private static IMemento memento;
46 51
	private static String lastUsedDataSourceName;
47 52
	
......
64 69
	 * @param dataSource a {@link eu.etaxonomy.cdm.database.CdmPersistentDataSource} object.
65 70
	 * @return a boolean.
66 71
	 */
67
	public static boolean delete(CdmPersistentDataSource dataSource) {
68
		CdmPersistentSourceUtils.delete(dataSource);
72
	public static boolean delete(ICdmPersistentSource cdmPersistentSource) {
73
		CdmPersistentSourceUtils.delete(cdmPersistentSource);
69 74
		return true;
70 75
	}
71 76

  
......
75 80
	 *
76 81
	 * @return a {@link java.util.List} object.
77 82
	 */
78
	public static List<ICdmDataSource> getAll() {
79
		List<ICdmDataSource> dataSources = new ArrayList<ICdmDataSource>();
83
	public static List<ICdmSource> getAll() {
84
		List<ICdmSource> remoteSources = new ArrayList<ICdmSource>();
80 85
		
81 86
		for(ICdmDataSource dataSource : CdmPersistentDataSource.getAllDataSources()){
82 87
			try {
83
				dataSources.add(CdmPersistentDataSource.NewInstance(dataSource.getName()));
88
				remoteSources.add(CdmPersistentDataSource.NewInstance(dataSource.getName()));
84 89
			} catch (DataSourceNotFoundException e) {
85 90
				StoreUtil.error(CdmDataSourceRepository.class, "Could not find dataSource", e);
86 91
			}
87 92
		}
88 93
		
94
		try {
95
			for(ICdmRemoteSource remoteSource : CdmPersistentRemoteSource.getAllRemoteSources()){			
96
				remoteSources.add(remoteSource);
97
			}
98
		} catch (CdmRemoteSourceException e) {
99
			StoreUtil.error(CdmDataSourceRepository.class, "Error retrieving remote sources", e);
100
		}
101
		
89 102
		// TODO sort by database name
90 103
		
91
		return dataSources;
104
		return remoteSources;
92 105
	}
93 106
	
94 107
	/**
......
111 124
		
112 125
		return null;
113 126
	}
127
	
114 128
		
115 129
	/**
116 130
	 * <p>Getter for the field <code>currentDataSource</code>.</p>
117 131
	 *
118 132
	 * @return a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
133
	 * @throws CdmRemoteSourceException 
119 134
	 */
120
	public static ICdmDataSource getCurrentDataSource() {
121
		if (currentDataSource == null) {
122
			try {
123
				currentDataSource = CdmPersistentDataSource.NewInstance(getLastUsedDataSourceName());
124
			} catch (DataSourceNotFoundException e) {
125
				// fallback creates a new default
126
				ICdmDataSource h2DataSource = CdmDataSource.NewH2EmbeddedInstance(
127
						DEFAULT_DATASOURCE_NAME, "sa", "", PreferencesUtil.getPreferredNomenclaturalCode());
128
				save(h2DataSource.getName(), h2DataSource);
129
				setCurrentDataSource(h2DataSource);
135
	public static ICdmSource getCurrentCdmSource() throws CdmRemoteSourceException {
136
		
137
		if (currentCdmSource == null) {
138
			String lastUsedCdmSourceName = getLastUsedDataSourceName();
139
			if(lastUsedCdmSourceName.endsWith(CdmPersistentDataSource.DATASOURCE_BEAN_POSTFIX)) {
140
				try {
141
					currentCdmSource = CdmPersistentDataSource.NewInstance(lastUsedCdmSourceName);
142
				} catch (DataSourceNotFoundException e) {
143
					// fallback creates a new default
144
					ICdmDataSource h2DataSource = CdmDataSource.NewH2EmbeddedInstance(
145
							DEFAULT_DATASOURCE_NAME, "sa", "", PreferencesUtil.getPreferredNomenclaturalCode());
146
					save(h2DataSource.getName(), h2DataSource);
147
					setCurrentCdmSource(h2DataSource);
148
				}
149
			} else if (lastUsedCdmSourceName.endsWith(CdmPersistentRemoteSource.REMOTESOURCE_BEAN_POSTFIX)) {				
150
				currentCdmSource = CdmPersistentRemoteSource.NewInstance(lastUsedCdmSourceName);
151
			} else {
152
				throw new CdmRemoteSourceException("Unkown Cdm Source Type");
130 153
			}
131 154
		}
132
		return currentDataSource;
155
		return currentCdmSource;
133 156
	}
134 157
	
135 158
	/**
......
138 161
	 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
139 162
	 * @return a boolean.
140 163
	 */
141
	public static boolean setCurrentDataSource(ICdmDataSource dataSource) {
142
		currentDataSource = dataSource;
143
		NomenclaturalCode dataSourceNomenclaturalCode = dataSource.getNomenclaturalCode();
164
	public static boolean setCurrentCdmSource(ICdmSource cdmSource) {
165
		currentCdmSource = cdmSource;
166
		NomenclaturalCode dataSourceNomenclaturalCode = cdmSource.getNomenclaturalCode();
144 167
		NomenclaturalCode applicationNomenclaturalCode = PreferencesUtil.getPreferredNomenclaturalCode();
145 168
		
146 169
		if( dataSourceNomenclaturalCode != null && ! dataSourceNomenclaturalCode.equals(applicationNomenclaturalCode)){
......
158 181
	 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
159 182
	 * @return a boolean.
160 183
	 */
161
	public static boolean changeDataSource(final ICdmDataSource dataSource) {
162
		saveAsCurrentDatabaseToMemento(dataSource);
163
		
164
		CdmStore.connect(dataSource);
184
	public static boolean changeDataSource(final ICdmSource cdmSource) {
185
		saveAsCurrentDatabaseToMemento(cdmSource);		
186
		CdmStore.connect(cdmSource);
165 187
		
166 188
		return true;
167 189
	}
......
172 194
	 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
173 195
	 * @param strDataSourceName a {@link java.lang.String} object.
174 196
	 * @return a {@link eu.etaxonomy.cdm.database.CdmPersistentDataSource} object.
197
	 * @throws CdmRemoteSourceException 
198
	 */
199
	public static ICdmPersistentSource save(String strCdmSourceName, ICdmRemoteSource cdmSource) throws CdmRemoteSourceException {
200
		return CdmPersistentRemoteSource.save(strCdmSourceName, cdmSource);		
201
	}
202
	
203
	/**
204
	 * <p>save</p>
205
	 *
206
	 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
207
	 * @param strDataSourceName a {@link java.lang.String} object.
208
	 * @return a {@link eu.etaxonomy.cdm.database.CdmPersistentDataSource} object.
209
	 * @throws CdmRemoteSourceException 
175 210
	 */
176
	public static CdmPersistentDataSource save(String strDataSourceName, ICdmDataSource dataSource) {
177
		return CdmPersistentDataSource.save(strDataSourceName, dataSource);
211
	public static ICdmPersistentSource save(String strCdmSourceName, ICdmDataSource cdmSource)  {		
212
		return CdmPersistentDataSource.save(strCdmSourceName, cdmSource);				
213
	}
214
	
215
	/**
216
	 * <p>update</p>
217
	 *
218
	 * @param strDataSourceName a {@link java.lang.String} object.
219
	 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
220
	 * @return a {@link eu.etaxonomy.cdm.database.CdmPersistentDataSource} object.
221
	 */
222
	public static ICdmPersistentSource update(String strCdmSourceName, ICdmDataSource cdmSource){
223
		try {
224
			return CdmPersistentDataSource.update(strCdmSourceName, cdmSource);
225
		} catch (Exception e) {
226
			StoreUtil.error(CdmDataSourceRepository.class, "Error updating CDM Source", e);
227
		}
228
		return null;
229
	}
230
	
231
	public static ICdmPersistentSource replace(String strCdmSourceName, ICdmDataSource cdmSource){
232
		try {
233
			return CdmPersistentDataSource.replace(strCdmSourceName, cdmSource);
234
		} catch (Exception e) {
235
			StoreUtil.error(CdmDataSourceRepository.class, "Error updating CDM Source", e);
236
		}
237
		return null;
178 238
	}
179 239
	
180 240
	/**
......
184 244
	 * @param dataSource a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
185 245
	 * @return a {@link eu.etaxonomy.cdm.database.CdmPersistentDataSource} object.
186 246
	 */
187
	public static CdmPersistentDataSource update(String strDataSourceName, ICdmDataSource dataSource){
247
	public static ICdmPersistentSource update(String strCdmSourceName, ICdmRemoteSource cdmSource){
188 248
		try {
189
			return CdmPersistentDataSource.update(strDataSourceName, dataSource);
249
			return CdmPersistentRemoteSource.update(strCdmSourceName, cdmSource);	
190 250
		} catch (Exception e) {
191
			StoreUtil.error(CdmDataSourceRepository.class, "Error updating datasource", e);
251
			StoreUtil.error(CdmDataSourceRepository.class, "Error updating CDM Source", e);
252
			
192 253
		}
193 254
		return null;
194 255
	}
......
197 258
	 * Memento Handling										 *
198 259
	 *********************************************************/
199 260
	
200
	private static void saveAsCurrentDatabaseToMemento(ICdmDataSource dataSource){
261
	private static void saveAsCurrentDatabaseToMemento(ICdmSource cdmSource){
201 262
		if(memento == null)
202 263
			memento = readMemento();
203
		memento.putString(CURRENT_DATASOURCE, dataSource.getName());
264
		memento.putString(CURRENT_DATASOURCE, cdmSource.getName());
204 265
		saveMementoToFile(memento);
205 266
	}
206 267
	
207 268
	/*
208 269
	 * Answer the workbench state file.
209 270
	 */
210
	private static File getDataSourceStateFile() {
271
	private static File getCdmSourceStateFile() {
211 272
		IPath path = TaxeditorStorePlugin.getDefault().getStateLocation();
212 273
		if (path == null) {
213 274
			return null;
......
218 279
	
219 280
	private static IMemento readMemento(){
220 281
		try {
221
			return MementoHelper.readMementoFromFile(getDataSourceStateFile());
282
			return MementoHelper.readMementoFromFile(getCdmSourceStateFile());
222 283
		} catch (FileNotFoundException e) {
223 284
			return initializeMemento();
224 285
		}
......
238 299
	 * Save the workbench UI in a persistence file.
239 300
	 */
240 301
	private static IMemento saveMementoToFile(IMemento memento) {
241
		return MementoHelper.saveMementoToFile(memento, getDataSourceStateFile());
302
		return MementoHelper.saveMementoToFile(memento, getCdmSourceStateFile());
242 303
	}	
243 304
}

Also available in: Unified diff