Project

General

Profile

« Previous | Next » 

Revision 9bd84319

Added by Cherian Mathew about 10 years ago

updating to align with refactored cdm source classes / interfaces

View differences:

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

  
25
import eu.etaxonomy.cdm.config.CdmPersistentSourceUtils;
25 26
import eu.etaxonomy.cdm.database.CdmDataSource;
26 27
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
27 28
import eu.etaxonomy.cdm.database.DataSourceNotFoundException;
......
64 65
	 * @return a boolean.
65 66
	 */
66 67
	public static boolean delete(CdmPersistentDataSource dataSource) {
67
		CdmPersistentDataSource.delete(dataSource);
68
		CdmPersistentSourceUtils.delete(dataSource);
68 69
		return true;
69 70
	}
70 71

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
30 30
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
31 31
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
32 32
import eu.etaxonomy.cdm.api.service.IService;
33
import eu.etaxonomy.cdm.config.ICdmSource;
33 34
import eu.etaxonomy.cdm.database.DbSchemaValidation;
34 35
import eu.etaxonomy.cdm.database.ICdmDataSource;
35 36
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;
......
83 84

  
84 85
	private Language language;
85 86

  
86
	private ICdmDataSource cdmDatasource;
87
	private ICdmSource cdmSource;
87 88

  
88 89
	private boolean isConnected;
89 90

  
......
130 131
	 * @param datasource
131 132
	 *            a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
132 133
	 */
133
	public static void connect(ICdmDataSource datasource) {
134
		connect(datasource, DEFAULT_DB_SCHEMA_VALIDATION,
134
	public static void connect(ICdmSource cdmSource) {
135
		connect(cdmSource, DEFAULT_DB_SCHEMA_VALIDATION,
135 136
				DEFAULT_APPLICATION_CONTEXT);
136 137
	}
137 138

  
......
142 143
	 * @param dbSchemaValidation
143 144
	 * @param applicationContextBean
144 145
	 */
145
	private static void connect(final ICdmDataSource datasource,
146
	private static void connect(final ICdmSource cdmSource,
146 147
			final DbSchemaValidation dbSchemaValidation,
147 148
			final Resource applicationContextBean) {
148
		StoreUtil.info("Connecting to datasource: " + datasource);
149
		StoreUtil.info("Connecting to datasource: " + cdmSource);
149 150

  
150
		job = new CdmStoreConnector(Display.getDefault(), datasource,
151
		job = new CdmStoreConnector(Display.getDefault(), cdmSource,
151 152
				dbSchemaValidation, applicationContextBean);
152 153
		job.setUser(true);
153 154
		job.setPriority(Job.BUILD);
......
185 186

  
186 187
	private void close() {
187 188
		isConnected = false;
188
		cdmDatasource = null;
189
		cdmSource = null;
189 190
	}
190 191

  
191 192
	static void setInstance(ICdmApplicationConfiguration applicationController,
192
			ICdmDataSource dataSource) {
193
		instance = new CdmStore(applicationController, dataSource);
193
			ICdmSource cdmSource) {
194
		instance = new CdmStore(applicationController, cdmSource);
194 195
	}
195 196

  
196 197
	private CdmStore(ICdmApplicationConfiguration applicationController,
197
			ICdmDataSource dataSource) {
198
			ICdmSource cdmSource) {
198 199
		this.applicationConfiguration = applicationController;
199 200
		AbstractLazyInitializer.setConfiguration(applicationController);
200 201
		AbstractPersistentCollection.setConfiguration(applicationController);
201
		this.cdmDatasource = dataSource;
202
		this.cdmSource = cdmSource;
202 203
		isConnected = true;
203 204
	}
204 205

  
......
500 501
		return instance != null && instance.isConnected;
501 502
	}
502 503

  
504
	public static ICdmSource getActiveCdmSource() {
505
		if (isActive()) {
506
			return instance.getCdmSource();
507
		}
508
		return null;
509
	}
510
	
503 511
	/**
504 512
	 * <p>
505 513
	 * getDataSource
506 514
	 * </p>
507 515
	 *
508 516
	 * @return a {@link eu.etaxonomy.cdm.database.ICdmDataSource} object.
517
	 * @deprecated currently retained for backward compatibility - use {@link getActiveCdmSource()} instead
509 518
	 */
510 519
	public static ICdmDataSource getDataSource() {
511 520
		if (isActive()) {
512
			return instance.getDatasource();
521
			return (ICdmDataSource)instance.getCdmSource();
513 522
		}
514 523
		return null;
515 524
	}
......
517 526
	/**
518 527
	 * @return
519 528
	 */
520
	private ICdmDataSource getDatasource() {
521
		return cdmDatasource;
529
	private ICdmSource getCdmSource() {
530
		return cdmSource;
522 531
	}
523 532

  
524 533
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStoreConnector.java
21 21
import org.springframework.core.io.Resource;
22 22

  
23 23
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
24
import eu.etaxonomy.cdm.api.application.CdmApplicationRemoteController;
24 25
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
26
import eu.etaxonomy.cdm.config.ICdmSource;
27
import eu.etaxonomy.cdm.remote.ICdmRemoteSource;
28
import eu.etaxonomy.cdm.config.CdmSourceException;
25 29
import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
26 30
import eu.etaxonomy.cdm.database.DbSchemaValidation;
27 31
import eu.etaxonomy.cdm.database.ICdmDataSource;
......
38 42
 */
39 43
class CdmStoreConnector extends Job {
40 44
	private final Display display;
41
	private final ICdmDataSource dataSource;
45
	private final ICdmSource cdmSource;
42 46
	private DbSchemaValidation dbSchemaValidation;
43 47
	private final Resource applicationContextBean;
44 48

  
......
47 51
	 * @param dbSchemaValidation
48 52
	 * @param applicationContextBean
49 53
	 */
50
	public CdmStoreConnector(Display display, ICdmDataSource datasource,
54
	public CdmStoreConnector(Display display, ICdmSource cdmSource,
51 55
			DbSchemaValidation dbSchemaValidation,
52 56
			Resource applicationContextBean) {
53
		super("Connecting to datasource: " + datasource);
57
		super("Connecting to datasource: " + cdmSource);
54 58
		this.display = display;
55
		this.dataSource = datasource;
59
		this.cdmSource = cdmSource;
56 60
		this.dbSchemaValidation = dbSchemaValidation;
57 61
		this.applicationContextBean = applicationContextBean;
58 62
	}
......
78 82
		}
79 83

  
80 84
		// we are done with our low level checking and will free resources now
81
		dataSource.closeOpenConnections();
85
		cdmSource.closeOpenConnections();
82 86

  
83 87
		if (!monitor.isCanceled()) {
84 88
			CdmStore.close(monitor);
......
92 96
			// This is where we instantiate the application controller
93 97
			try {
94 98
				
95
				applicationController = 
96
						CdmApplicationController.NewInstance(applicationContextBean, 
97
								dataSource, 
98
								dbSchemaValidation,
99
								false, 
100
								subprogressMonitor);
99
				applicationController = getApplicationController(cdmSource,subprogressMonitor);
101 100
			
102 101
			} catch (Exception e) {
103 102
				if(! causeIsCancelationExceptionRecursive(e)){
104
					return new Status(IStatus.ERROR, "Could not connect to CDM Store", "An error occurred while trying to connect to datasource: " + dataSource.getName(), e);
103
					return new Status(IStatus.ERROR, "Could not connect to CDM Store", "An error occurred while trying to connect to datasource: " + cdmSource.getName(), e);
105 104
				}
106 105
			} finally {
107 106
				monitor.done();
......
111 110
		
112 111

  
113 112
		if (!monitor.isCanceled()) {
114
			CdmStore.setInstance(applicationController, dataSource);
113
			CdmStore.setInstance(applicationController, cdmSource);
115 114

  
116 115
			display.asyncExec(new Runnable() {
117 116
				/*
......
147 146

  
148 147
	}
149 148

  
149
	private ICdmApplicationConfiguration getApplicationController(ICdmSource cdmSource, CdmProgressMonitorAdapter subprogressMonitor) {
150
		if(cdmSource instanceof ICdmDataSource) {
151
			return  CdmApplicationController.NewInstance(applicationContextBean, 
152
						(ICdmDataSource)cdmSource, 
153
						dbSchemaValidation,
154
						false, 
155
						subprogressMonitor);
156
		} else if(cdmSource instanceof ICdmRemoteSource) {
157
			return CdmApplicationRemoteController.NewInstance(applicationContextBean, 
158
					(ICdmRemoteSource)cdmSource, 					
159
					false, 
160
					subprogressMonitor,
161
					null);
162
		} else {
163
			throw new UnsupportedOperationException("Cannot create application controller for " + cdmSource.getName());
164
		}
165
	}
150 166
	private void authenticate() {
151 167
		LoginDialog loginDialog = new LoginDialog(StoreUtil.getShell());
152 168
		loginDialog.open();
......
160 176
	 * @return
161 177
	 */
162 178
	private String getConnectionMessage() {
163
		String message = "";
164
		if (dataSource.getDatabaseType().equals(DatabaseTypeEnum.H2)) {
165
			message = " local CDM Store ";
166
		} else {
167
			message = " CDM Community Store ";
168
		}
169
		message += "'" + dataSource.getName() + "'";
170

  
171
		message = "Connecting to" + message + ".";
172

  
173
		return message;
179
		return cdmSource.getConnectionMessage();
174 180
	}
175 181

  
176 182
	/**
......
182 188
		String dbSchemaVersion;
183 189
		boolean result = false;
184 190
		try {
185
			dbSchemaVersion = (String) dataSource
186
					.getSingleValue(MetaDataPropertyName.DB_SCHEMA_VERSION
187
							.getSqlQuery());
191
			dbSchemaVersion = cdmSource.getDbSchemaVersion();
188 192
			// we assume that empty dbSchemaVersion means an empty database and
189 193
			// skip version checking
190 194
			result = dbSchemaVersion == null ? true : CdmMetaData
191 195
					.isDbSchemaVersionCompatible(dbSchemaVersion);
192 196
			monitor.worked(1);
193
		} catch (SQLException e) {
197
		} catch (CdmSourceException e) {
194 198
			//
195 199
		}
196 200

  
......
202 206
							this,
203 207
							"The database schema for the chosen "
204 208
									+ "datasource '"
205
									+ dataSource
209
									+ cdmSource
206 210
									+ "' \n is not valid for this version of the taxonomic editor. \n"
207 211
									+ "Please update the chosen datasource or choose a new data source to connect to in the Datasource View.",
208 212
							null);
......
214 218

  
215 219
	private void checkIsNonEmptyCdmDatabase(IProgressMonitor monitor) {
216 220
		monitor.subTask("Checking if datasource is a non empty CDM database.");
217

  
221
		boolean isDbEmpty = false;
218 222
		try {
219
			dataSource.getSingleValue(MetaDataPropertyName.DB_SCHEMA_VERSION
220
					.getSqlQuery());
221
		} catch (SQLException e1) {
223
			isDbEmpty = cdmSource.isDbEmpty();
224
		} catch (CdmSourceException e) {
225
			isDbEmpty = true;
226
		}
227
		if(isDbEmpty) {
222 228
			dbSchemaValidation = DbSchemaValidation.CREATE;
223 229
		}
224 230
	}
......
236 242
	private void checkDatabaseReachable(IProgressMonitor monitor) {
237 243
		try {
238 244
			monitor.subTask("Checking if datasource is reachable.");
239
			dataSource.testConnection();
245
			cdmSource.checkConnection();
240 246
			monitor.worked(1);
241
		} catch (ClassNotFoundException e) {
247
		} catch (CdmSourceException e) {
242 248
			StoreUtil.errorDialog("Could not connect to chosen datasource",
243 249
					this, "Reason: " + e.getMessage(), e);
244 250
			monitor.setCanceled(true);
245
		} catch (SQLException e) {
246
			StoreUtil.errorDialog("Could not connect to chosen datasource",
247
					this, "Reason: " + e.getMessage(), e);
248
			monitor.setCanceled(true);
249
		}
250

  
251
		} 
251 252
	}
252 253
}

Also available in: Unified diff