@Override public void removePropertyChangeListener(PropertyChangeListener listener) { progressMonitor.removePropertyChangeListener(listener); } }
@Override public void close() throws SQLException { if(cancelListener != null) { pm.removePropertyChangeListener(cancelListener); } if(st != null) { st.close(); } if(connection != null) { connection.close(); } } }
/** * Stop listening to the job and the timer */ public void dispose() { job.getProgressMonitor().removePropertyChangeListener(listener); if(fetchProgressionTimer!=null) { fetchProgressionTimer.stop(); } }
insertProgress.removePropertyChangeListener(listener);
public static void createTableFromRowPkSelection(DataSource dataSource, String tableName, Set<Long> selectedRows, String newName, ProgressMonitor pm) throws SQLException { // Populate the new source try(Connection connection = dataSource.getConnection(); Statement st = connection.createStatement()) { DatabaseMetaData meta = connection.getMetaData(); // Find an unique name to register if (newName == null) { newName = MetaData.getNewUniqueName(tableName,meta,"selection"); } // Create row id table String tempTableName = CreateTable.createIndexTempTable(connection, pm, selectedRows,"ROWID", INSERT_BATCH_SIZE); PropertyChangeListener listener = EventHandler.create(PropertyChangeListener.class, st, "cancel"); pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, listener); // Copy content using pk String primaryKeyName = MetaData.getPkName(connection, tableName, true); StringBuilder pkEquality = new StringBuilder("a.%s = "); if (!primaryKeyName.equals(MetaData.POSTGRE_ROW_IDENTIFIER)) { pkEquality.append("b.ROWID"); } else { pkEquality.append(MetaData.castLongToTid("b.ROWID")); } st.execute(String.format("CREATE TABLE %s AS SELECT a.* FROM %s a,%s b " + "WHERE "+pkEquality, TableLocation.parse(newName), TableLocation.parse(tableName),tempTableName, primaryKeyName)); pm.removePropertyChangeListener(listener); } } }
private void cachePrimaryKey(ProgressMonitor pm) throws SQLException { ProgressMonitor cachePm = pm.startTask(getRowCount()); if(rowPk == null) { rowPk = new DualHashBidiMap<>(); } else { rowPk.clear(); } try(Connection connection = dataSource.getConnection(); Statement st = connection.createStatement()) { PropertyChangeListener listener = EventHandler.create(PropertyChangeListener.class, st, "cancel"); pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, listener); st.setFetchSize(fetchSize); connection.setAutoCommit(false); // Use postgre cursor try(ResultSet rs = st.executeQuery("SELECT "+pk_name+" FROM "+location+" "+ orderBy)) { // Cache the primary key values int pkRowId = 0; while (rs.next()) { pkRowId++; rowPk.put(pkRowId, rs.getLong(1)); cachePm.endTask(); } } finally { pm.removePropertyChangeListener(listener); } } catch (SQLException ex) { throw new IllegalArgumentException(ex); } }
@Override public void initialize(ProgressMonitor progress, TableEditableElement source) throws SQLException{ progress.setTaskName(I18N.tr("Run filter by sql request")); // If the table hold a PK then do the find task on the server side try(Connection connection = source.getDataManager().getDataSource().getConnection(); Statement st = connection.createStatement()) { PropertyChangeListener cancelListener = EventHandler.create(PropertyChangeListener.class, st, "cancel"); progress.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, cancelListener); try{ String tablePk = source.getRowSet().getPkName(); if(!tablePk.isEmpty()) { final ReadRowSet rowSet = source.getRowSet(); StringBuilder request = new StringBuilder(String.format("SELECT %s FROM %s WHERE %s", TableLocation.quoteIdentifier(tablePk), source.getTableReference(), whereText)); LOGGER.info(I18N.tr("Find field value with the following request:\n{0}",request.toString())); try(ResultSet rs = st.executeQuery(request.toString())) { while(rs.next()) { filteredRows.add(rowSet.getRowId(rs.getLong(1)) - 1); } } } } finally { progress.removePropertyChangeListener(cancelListener); } } catch (EditableElementException ex) { throw new SQLException(ex); } } }
pm.removePropertyChangeListener(cancelListener);
@Override public void execute(ProgressMonitor pm) throws SQLException { try(Connection connection = dataSource.getConnection()) { isH2 = JDBCUtilities.isH2DataBase(connection.getMetaData()); } if(!pk_name.isEmpty()) { cachePrimaryKey(pm); // Always use PK to fetch rows resultSetHolder.setCommand(getCommand() + " LIMIT 0"); } else { resultSetHolder.setCommand(getCommand()); PropertyChangeListener listener = EventHandler.create(PropertyChangeListener.class, resultSetHolder, "cancel"); pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, listener); try { resultSetHolder.getResource(); // Long query } finally { pm.removePropertyChangeListener(listener); } } }
progressMonitor.removePropertyChangeListener(listener);
pm.removePropertyChangeListener(cancelListener);