@Override public SpatialResultSet execute(ProgressMonitor pm, Envelope extent) throws SQLException { lock = readRowSet.getReadLock(); try { lock.tryLock(LOCK_TIMEOUT, TimeUnit.SECONDS); // Do intersection of envelope double intersectionPercentage = extent.intersection(tableEnvelope).getArea() / tableEnvelope.getArea(); // If there is quite no zoom is great use the "select * from table" cached query. if( intersectionPercentage > RATIONAL_USAGE_INDEX) { readRowSet.beforeFirst(); return readRowSet; } else { return resultSetProvider.execute(pm, extent); } } catch (InterruptedException ex) { throw new SQLException(I18N.tr("Lock timeout while fetching {0}, another job is using this resource.", tableReference)); } }
String fieldName = rowSet.getMetaData().getColumnName(params.getColumnId() + 1); addFieldWhere(request, fieldName); } else { int colCount = rowSet.getMetaData().getColumnCount(); int conditionsCount = 0; for(int idcol = 1; idcol <= colCount; idcol++) { if(MetaData.isAlphaNumeric(rowSet.getMetaData().getColumnType(idcol))) { if(conditionsCount > 0) { request.append(" OR"); rowSet.getReadLock().tryLock(1, TimeUnit.SECONDS); try { rowSet.beforeFirst(); int rowId = 0; ProgressMonitor progressMonitor = pm.startTask(rowSet.getRowCount()); if (params.getColumnId() != -1) { while(rowSet.next()) { if(isFieldContains(rowSet.getString(params.getColumnId() + 1))) { filteredRows.add(rowId); while(rowSet.next()) { int columnCount = rowSet.getMetaData().getColumnCount(); for(int col = 1; col < columnCount; col++) { if(isFieldContains(rowSet.getString(col))) { filteredRows.add(rowId); break; rowSet.getReadLock().unlock();
Lock lock = originalOrder.getReadLock(); lock.tryLock(); try{ originalOrder.beforeFirst(); int i = 0; int fieldIndex = originalOrder.findColumn(originalColumnName); if(originalOrder.getExcludeGeomFields()){ int offset = 0; List<String> geomFields = SFSUtilities.getGeometryFields(originalOrder); for(String field : geomFields){ if(originalOrder.findColumn(field)<fieldIndex){ offset++; while(originalOrder.next() && !progressMonitor.isCancelled()) { Object obj = originalOrder.getObject(fieldIndex); if(obj != null && !(obj instanceof Comparable)) { throw new SQLException(I18N.tr("Could only sort comparable database object type"));
rowSetProgress = rulesProgress.startTask("Drawing " + layer.getName() + " (Rule " + r.getName() + ")", ((ReadRowSet) rs).getFilteredRowCount()); } else { rowSetProgress = rulesProgress.startTask("Drawing " + layer.getName() + " (Rule " + r.getName() + ")", 1);