@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); } } }
Services.registerService(ViewWorkspace.class, I18N.tr("Contains view folders path"), viewWorkspace); progressInfo.setTaskName(I18N.tr("Register GUI Sql functions..")); addSQLFunctions(); progressInfo.progressTo(11); progressInfo.setTaskName(I18N.tr("Load the plugin framework..")); startPluginHost(); progressInfo.progressTo(18); progressInfo.setTaskName(I18N.tr("Connecting to the database.."));
makeMainFrame(); progress.endTask(); progress.setTaskName(I18N.tr("Loading docking system and frames")); progress.endTask(); progress.setTaskName(I18N.tr("Restore the former layout.."));