public void unsetDataManager(DataManager dataManager) { // Unlink try(Connection connection = dataManager.getDataSource().getConnection(); Statement st = connection.createStatement()) { if(isLocalH2DataBase(connection.getMetaData())) { st.execute("SET DATABASE_EVENT_LISTENER ''"); H2Trigger.setTriggerFactory(null); } } catch (SQLException ex) { // Ignore } }
@Override public void addTableEditListener(String table, TableEditListener listener) { manager.addTableEditListener(getTable(), listener); }
@Override public void removeTableEditListener(String table, TableEditListener listener) { manager.removeTableEditListener(getTable(), listener); } }
protected void doUndo(boolean callListeners) throws SQLException { if(primaryKey != null) { try(Connection connection = dataManager.getDataSource().getConnection(); PreparedStatement st = connection.prepareStatement("DELETE FROM "+tableLocation+" WHERE "+pkName+" = ?")) { st.setLong(1, primaryKey); st.execute(); primaryKey = null; } if(callListeners) { dataManager.fireTableEditHappened(new TableEditEvent(tableLocation.toString(isH2), TableModelEvent.ALL_COLUMNS, null, null, TableModelEvent.DELETE)); } } }
/** * Constructor * @param dataManager * @note Do not forget to call dispose() */ public SourceListModel(DataManager dataManager) { this.dataSource = dataManager.getDataSource(); try(Connection connection = dataSource.getConnection()) { isH2 = JDBCUtilities.isH2DataBase(connection.getMetaData()); } catch (SQLException ex) { LOGGER.error(ex.getLocalizedMessage(), ex); } //Install database listeners dataManager.addDatabaseProgressionListener(this, StateEvent.DB_STATES.STATE_STATEMENT_END); //Call readDatabase when a SourceManager fire an event onDataManagerChange(); }
@Override public void open(ProgressMonitor progressMonitor) throws UnsupportedOperationException, EditableElementException { if(rowSet == null) { try(Connection connection = dataManager.getDataSource().getConnection()) { boolean isH2 = JDBCUtilities.isH2DataBase(connection.getMetaData()); String pkName = MetaData.getPkName(connection, tableReference, true); rowSet = dataManager.createReversibleRowSet(); rowSet.initialize(TableLocation.parse(tableReference, isH2).toString(isH2), pkName, progressMonitor); } catch (SQLException | IllegalArgumentException ex) { throw new EditableElementException(ex); } setOpen(true); } }
/** * Recursively add property listeners to the provided node * @param node */ private void addPropertyListeners(TreeNode node) { if(node instanceof TocTreeNodeLayer) { ILayer layer =((TocTreeNodeLayer) node).getLayer(); if(!layer.acceptsChilds()) { layer.addPropertyChangeListener(Layer.PROP_STYLES,tocStyleListListener); try(Connection connection = mapContext.getDataManager().getDataSource().getConnection()) { if (!layer.getTableReference().isEmpty() && JDBCUtilities.tableExists(connection,layer.getTableReference())) { mapContext.getDataManager().addTableEditListener(layer.getTableReference(), this); } } catch (SQLException ex) { // Ignore } for(Style st : layer.getStyles()) { addPropertyListeners(new TocTreeNodeStyle(st)); } } else { for(ILayer subLayer : layer.getChildren()) { addPropertyListeners(new TocTreeNodeLayer(subLayer)); } } } else if(node instanceof TocTreeNodeStyle) { Style st = ((TocTreeNodeStyle) node).getStyle(); st.addPropertyChangeListener(tocStyleListener); } }
@Override public void run(ProgressMonitor pm) { long deb = System.currentTimeMillis(); try(Connection connection = dataManager.getDataSource().getConnection()) { ProgressMonitor filePm = pm.startTask(files.size()); boolean isH2 = JDBCUtilities.isH2DataBase(connection.getMetaData()); for(File file : files) { String ext = FilenameUtils.getExtension(file.getName()); DriverFunction driverFunction = driverFunctionContainer.getImportDriverFromExt(ext, driverType); if(driverFunction != null) { TableLocation tableName = new TableLocation("","",dataManager.findUniqueTableName( TableLocation.capsIdentifier(FileUtils.getNameFromURI(file.toURI()), isH2))); driverFunction.importFile(connection, tableName.toString() ,file, new H2GISProgressMonitor(filePm)); } else { LOGGER.error(I18N.tr("No driver found for {0} extension", ext)); } } } catch (SQLException ex) { LOGGER.error(I18N.tr("Cannot import the file"), ex); // Print additional information while((ex = ex.getNextException()) != null) { LOGGER.error(ex.getLocalizedMessage()); } } catch (IOException ex) { LOGGER.error(I18N.tr("Cannot import the file"), ex); } LOGGER.info(I18N.tr("Importation done in {0} sec", (System.currentTimeMillis() - deb) / 1000d)); catalog.refreshSourceList(); } }
String integerPK = ""; // Not system PK String tableRef; try (Connection connection = layer.getDataManager().getDataSource().getConnection()) { isH2 = JDBCUtilities.isH2DataBase(connection.getMetaData()); tableRef = TableLocation.parse(layer.getTableReference(), isH2).toString(isH2); ResultSetProvider defaultResultSetProvider = defaultFactory.getResultSetProvider(layer, pm); if (readRowSet == null) { readRowSet = layer.getDataManager().createReadRowSet();
private void addLayerListenerRecursively(ILayer rootLayer, RefreshLayerListener refreshLayerListener) { rootLayer.addLayerListener(refreshLayerListener); if(!rootLayer.getTableReference().isEmpty() && rootLayer.getDataManager() != null) { rootLayer.getDataManager().removeTableEditListener(rootLayer.getTableReference(), refreshLayerListener); rootLayer.getDataManager().addTableEditListener(rootLayer.getTableReference(), refreshLayerListener); } for (int i = 0; i < rootLayer.getLayerCount(); i++) { addLayerListenerRecursively(rootLayer.getLayer(i), refreshLayerListener); } }
@Override protected Object doInBackground() throws Exception { long begin = System.currentTimeMillis(); try { while (!editStack.isEmpty() || System.currentTimeMillis() - begin < TIME_MAX_THREAD_ALIVE) { while (!editStack.isEmpty()) { dataManager.fireTableEditHappened(editStack.remove()); } try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException ex) { break; } } } finally { stateEventProcessing.set(false); } return null; } }
} else { try { tableReference = dataManager.registerDataSource(dataURI); } catch (Exception ex) { LOGGER.warn(I18N.tr("Unable to load the data source uri {0}.", dataURI), ex); if(!dataManager.isTableExists(tableReference)) { LOGGER.warn(I18N.tr("Specified table '{0}' does not exists, and no source URI is given", tableReference));
/** * DataSource URI drop. Currently used on file drop by the {@link SourceListTransferHandler}. * * @param uriDrop Uniform Resource Identifier */ public void onDropURI(List<URI> uriDrop) { for (URI uri : uriDrop) { try { dataManager.registerDataSource(uri); refreshSourceList(); } catch (SQLException ex) { LOGGER.error("Cannot load dropped data source", ex); } } }
@Override public ILayer createLayer(URI source) throws LayerException { if(!source.isAbsolute()) { // If URI is not absolute ex URI.create("../folder/myfile.shp"), then create a canonical URI try { source = new File(location != null ? new File(location) : new File("./"), source.toString()).getCanonicalFile().toURI(); } catch (IOException ex) { throw new LayerException(ex); } } String layerName; try { layerName = FileUtils.getNameFromURI(source); } catch (UnsupportedOperationException ex) { try { layerName = dataManager.findUniqueTableName(I18N.tr("Layer")); } catch (SQLException ex2) { throw new LayerException(ex2); } } return createLayer(layerName, source); }
private void doUpdate(Long pk, Object value, boolean callListeners) throws SQLException { try(Connection connection = dataManager.getDataSource().getConnection(); PreparedStatement st = connection.prepareStatement("UPDATE "+tableLocation+" SET "+TableLocation.quoteIdentifier(columnName, isH2)+" = ? WHERE "+pkName+" = ?")) { st.setObject(1, value); st.setLong(2, pk); st.execute(); if(callListeners) { try (Statement stat = connection.createStatement(); ResultSet rs = stat.executeQuery("SELECT * from " + tableLocation.toString(isH2) + " LIMIT 0")) { // Fire with the new PK Value Long pkToFire = pk; if( columnName.equals(pkName)) { pkToFire = Long.valueOf(value.toString()); } dataManager.fireTableEditHappened(new TableEditEvent(tableLocation.toString(isH2), JDBCUtilities.getFieldIndex(rs.getMetaData(), columnName), pkToFire, pkToFire, TableModelEvent.UPDATE)); } } } }
@Override public void open(ProgressMonitor progressMonitor) throws UnsupportedOperationException, EditableElementException { if(rowSet == null) { try(Connection connection = dataManager.getDataSource().getConnection()) { boolean isH2 = JDBCUtilities.isH2DataBase(connection.getMetaData()); String pkName = MetaData.getPkName(connection, tableReference, true); rowSet = dataManager.createReversibleRowSet(); rowSet.setExcludeGeomFields(excludeGeom); rowSet.initialize(TableLocation.parse(tableReference, isH2).toString(isH2), pkName, progressMonitor); } catch (SQLException | IllegalArgumentException ex) { throw new EditableElementException(ex); } setOpen(true); } }
@Override protected Object doInBackground() throws Exception { long begin = System.currentTimeMillis(); try { while (!editStack.isEmpty() || System.currentTimeMillis() - begin < TIME_MAX_THREAD_ALIVE) { while (!editStack.isEmpty()) { dataManager.fireTableEditHappened(editStack.remove()); } try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException ex) { break; } } } finally { stateEventProcessing.set(false); } return null; } }
public void unsetDataManager(DataManager dataManager) { // Unlink try(Connection connection = dataManager.getDataSource().getConnection(); Statement st = connection.createStatement()) { if(isLocalH2DataBase(connection.getMetaData())) { st.execute("SET DATABASE_EVENT_LISTENER ''"); H2Trigger.setTriggerFactory(null); } } catch (SQLException ex) { // Ignore } }
try(Connection connection = dataManager.getDataSource().getConnection(); PreparedStatement st = connection.prepareStatement(query.toString())) { for(int idParam = 0; idParam < parameters.size(); idParam++) { dataManager.fireTableEditHappened(new TableEditEvent(tableLocation.toString(isH2), TableModelEvent.ALL_COLUMNS, primaryKey, primaryKey, TableModelEvent.INSERT));
@Override public void removeTableEditListener(String table, TableEditListener listener) { manager.removeTableEditListener(getTable(), listener); }