@Override public void addPropertyChangeListener(String property, PropertyChangeListener listener) { progressMonitor.addPropertyChangeListener(property.equals(PROPERTY_CANCELED) ? ProgressMonitor.PROP_CANCEL: property, listener); }
@Override public void run(ProgressMonitor pm) { try(Connection connection = dataSource.getConnection(); Statement st = connection.createStatement()) { pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, EventHandler.create(PropertyChangeListener.class, st, "cancel")); connection.setAutoCommit(false); ProgressMonitor dropPm = pm.startTask(tableToDelete.length); for (String resource : tableToDelete) { TableLocation tableLocation = TableLocation.parse(resource, JDBCUtilities.isH2DataBase(connection.getMetaData())); try { LOGGER.info(String.format("drop table %s", tableLocation)); st.execute(String.format("drop table %s", tableLocation)); } catch (SQLException ex) { LOGGER.error(I18N.tr("Cannot remove the source {0}", resource), ex); connection.rollback(); connection.setAutoCommit(true); return; } dropPm.endTask(); } connection.commit(); SwingUtilities.invokeAndWait(this); } catch (SQLException ex) { LOGGER.error(I18N.trc("Tables are database tables, drop means delete tables", "Cannot drop the tables"), ex); } catch (InvocationTargetException | InterruptedException ex) { LOGGER.trace(ex.getLocalizedMessage(), ex); } }
LOGGER.error(ex.getLocalizedMessage(),ex); pm.addPropertyChangeListener(ProgressMonitor.PROP_PROGRESSION, EventHandler.create(PropertyChangeListener.class, this, "onProgressChange")); pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, EventHandler.create(PropertyChangeListener.class, this, "onCancel")); pm.addPropertyChangeListener(ProgressMonitor.PROP_TASKNAME, EventHandler.create(PropertyChangeListener.class, this, "onTaskChange"));
/** * Update the list item on job changes and make the panel * @param simplifiedPanel Job displayed on a single line * @return */ public JobListItem listenToJob(boolean simplifiedPanel) { job.getProgressMonitor().addPropertyChangeListener(ProgressMonitor.PROP_PROGRESSION, listener); itemPanel = new JobListItemPanel(job,simplifiedPanel); onJobUpdate(); fetchProgressionTimer = new Timer(PROGRESSION_TIMER_INTERVAL,new TimerFetchListener()); fetchProgressionTimer.start(); return this; } /**
insertProgress.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, listener); try {
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); } } }
pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, listener); try(ResultSet rs = st.executeQuery(String.format("SELECT %s FROM %s",sb.toString(), tableName ))) {
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 SpatialResultSet execute(ProgressMonitor pm, Envelope extent) throws SQLException { this.pm = pm; connection = dataSource.getConnection(); List<String> geometryFields = SFSUtilities.getGeometryFields(connection, TableLocation.parse(layer.getTableReference())); if(geometryFields.isEmpty()) { throw new SQLException(I18N.tr("Table {0} does not contains geometry fields",layer.getTableReference())); } st = createStatement(connection, geometryFields.get(0), layer.getTableReference()); st.setFetchSize(FETCH_SIZE); st.setFetchDirection(ResultSet.FETCH_FORWARD); connection.setAutoCommit(false); cancelListener = EventHandler.create(PropertyChangeListener.class, st, "cancel"); pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, cancelListener); GeometryFactory geometryFactory = new GeometryFactory(); if(st.getParameterMetaData().getParameterCount() > 0) { st.setObject(1, geometryFactory.toGeometry(extent)); // Filter geometry by envelope } return st.executeQuery().unwrap(SpatialResultSet.class); }
@Override public void run(ProgressMonitor progress) { long t1 = System.currentTimeMillis(); ProgressMonitor pm = progress.startTask(I18N.tr("Execute SQL Request"), panel.getScriptPanel().getLineCount()); try(Connection connection = ds.getConnection()) { try(Statement st = connection.createStatement()) { st.setQueryTimeout(timeOut); // If the user clicks on cancel, cancel the execution pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL , EventHandler.create(PropertyChangeListener.class, st, "cancel")); if(splitterFactory != null) { parseAndExecuteScript(pm, st); } else { st.execute(panel.getScriptPanel().getText().trim()); } } } catch (SQLException ex) { LOGGER.error(ex.getLocalizedMessage(), ex); } long t2 = System.currentTimeMillis(); double lastExecTime = ((t2 - t1) / 1000.0); String message = I18N.tr("OVERALL EXECUTION TIME: {0} seconds",lastExecTime); LOGGER.info(message); showPanelMessage(message); } }
@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.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, listener); try (ResultSet rs = st.executeQuery(String.format("SELECT %s FROM %s",columnName, tableName ))) {
@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); } } }
Statement st = connection.createStatement()) { PropertyChangeListener cancelListener = EventHandler.create(PropertyChangeListener.class, st, "cancel"); pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL,cancelListener); try { Envelope selectionEnvelope = null;
progressMonitor.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, listener); try {
Statement st = connection.createStatement()) { PropertyChangeListener cancelListener = EventHandler.create(PropertyChangeListener.class, st, "cancel"); pm.addPropertyChangeListener(ProgressMonitor.PROP_CANCEL, cancelListener); try{