/** * @param dataSourceFactory DataSourceFactory instance * @param serviceProperties Must contain DataSourceFactory.OSGI_JDBC_DRIVER_NAME entry. */ @Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE, policy = ReferencePolicy.DYNAMIC, policyOption = ReferencePolicyOption.GREEDY) public void addDataSourceFactory(DataSourceFactory dataSourceFactory, Map<String,String> serviceProperties) { dataSourceService.addDataSourceFactory(dataSourceFactory, serviceProperties); }
/** * Create internal datasource using {@link #setCoreWorkspace(org.orbisgis.frameworkapi.CoreWorkspace)} and {@link * #addDataSourceFactory(org.osgi.service.jdbc.DataSourceFactory, java.util.Map)} * @throws SQLException If the DataSource could not be created */ @Activate public void activate() throws SQLException { // Build DataSource newDataSource(); }
/** * @param dataSourceFactory DataSourceFactory instance * @param serviceProperties Must contain DataSourceFactory.OSGI_JDBC_DRIVER_NAME entry. */ public void removeDataSourceFactory(DataSourceFactory dataSourceFactory, Map<String,String> serviceProperties) { dataSourceService.removeDataSourceFactory(dataSourceFactory, serviceProperties); }
public ViewWorkspaceImpl askWorkspaceFolder(Window parentComponent, ProgressMonitor pm) { CoreWorkspaceImpl coreWorkspace = new CoreWorkspaceImpl(bundleVersion.getMajor(), bundleVersion.getMinor(), bundleVersion.getMicro(), bundleVersion.getQualifier(), new org.apache.felix.framework.Logger()); String errorMessage = ""; try { do { if (WorkspaceSelectionDialog.showWorkspaceFolderSelection(parentComponent, coreWorkspace, errorMessage)) { ///////////////////// // Check connection dataSourceService.setCoreWorkspace(coreWorkspace); try { dataSourceService.activate(); pm.setTaskName(I18N.tr("Connecting to the database..")); try (Connection connection = dataSourceService.getConnection()) { DatabaseMetaData meta = connection.getMetaData(); LOGGER.info(I18N.tr("Data source available {0} version {1}", meta.getDriverName(), meta.getDriverVersion())); return new ViewWorkspaceImpl(coreWorkspace); } } catch (SQLException ex) { errorMessage = ex.getLocalizedMessage(); } } else { // User cancel, stop OrbisGIS return null; } } while (true); } finally { pm.endTask(); } }
@Deactivate public void deactivate() throws SQLException { // Wait for H2 close try(Connection connection = getConnection(); Statement st = connection.createStatement()) { DatabaseMetaData metaData = connection.getMetaData(); if(JDBCUtilities.isH2DataBase(metaData) && !metaData.getURL().contains("tcp")) { st.execute("SHUTDOWN"); } } }