/** * Determines if a primary key is made up entirely of column which are generated via an * auto-generating column or a sequence. */ protected boolean isGenerated(PrimaryKey pkey) { for (PrimaryKeyColumn col : pkey.getColumns()) { if (!(col instanceof AutoGeneratedPrimaryKeyColumn)) { return false; } } return true; }
if (FID.startsWith(key.getTableName() + ".")) { FID = FID.substring(key.getTableName().length() + 1); if (key.getColumns().size() > 1) { String[] split = FID.split("\\."); values.add(FID); if (values.size() != key.getColumns().size()) { throw new IllegalArgumentException( "Illegal fid: " + FID + ". Expected " + key.getColumns().size() + " values but got " + values.size()); Object value = values.get(i); if (value != null) { Class type = key.getColumns().get(i).getType(); Object converted = Converters.convert(value, type); if (converted != null) {
public PrimaryKey getPrimaryKey(JDBCDataStore store, String schema, String table, Connection cx) throws SQLException { List<PrimaryKeyColumn> columns = tryForPrimaryKey1(schema, table, cx); if (columns.isEmpty()) { columns = tryForPrimaryKey(schema, table, cx); } if (columns.isEmpty()) { columns = tryForSequence(schema, table, cx); } if (columns.isEmpty()) { columns = tryAsView(schema, table, cx); } if (columns.isEmpty()) { return null; } else { return new PrimaryKey(table, columns); } }
for (PrimaryKeyColumn pkeycol : pkey.getColumns()) { if (name.equals(pkeycol.getName())) { if (!state.isExposePrimaryKeyColumns()) { if (pkey.getColumn(att.getLocalName()) != null) { att.getUserData().put(JDBCDataStore.JDBC_PRIMARY_KEY_COLUMN, true);
ds.getSQLDialect().encodeColumnName(null, col.getName(), sql); sql.append(") + 1 FROM "); ds.encodeTableName(key.getTableName(), sql, null);
@Override public Object getLastValue(Connection cx, Statement st) throws SQLException { return ds.getSQLDialect() .getLastAutoGeneratedValue( ds.getDatabaseSchema(), key.getTableName(), col.getName(), cx, st); }
@Override public void addKeyBindings(StringBuffer sql) { for (int i = 0; i < key.getColumns().size(); ++i) { sql.append("?,"); } }
Expression numNearest = getParameter(filter, 1, true); try { List<PrimaryKeyColumn> pkColumns = delegate.getPrimaryKey().getColumns(); if (pkColumns == null || pkColumns.size() == 0) { throw new UnsupportedOperationException( sb.append("."); pgDialect.encodeTableName(delegate.getPrimaryKey().getTableName(), sb); sb.append(" order by ");
@Override public Object getNext(Connection cx) throws IOException, SQLException { if (isPostInsert()) { return NOT_SET_BEFORE_INSERT; } else { return ds.getSQLDialect() .getNextAutoGeneratedValue( ds.getDatabaseSchema(), key.getTableName(), col.getName(), cx); } }
if (columns.size() > 0) return new PrimaryKey(table, columns); else return null; } catch (SQLException e) {
/** * @return the key column names in the order expected in the {@linkplain ResultSet} returned by * {@linkplain PreparedStatement#getGeneratedKeys()}. */ public String[] getColumnNames() { String[] ret = new String[key.getColumns().size()]; int i = 0; for (PrimaryKeyColumn col : key.getColumns()) { ret[i++] = col.getName(); } return ret; }
List<PrimaryKeyColumn> pkColumns = getPrimaryKey().getColumns(); if (pkColumns == null || pkColumns.size() == 0) { throw new UnsupportedOperationException( dialect.encodeTableName(getPrimaryKey().getTableName(), sb);
/** * Gets the last value of a generated primary key column. */ protected Object getLastValue( PrimaryKeyColumn col, PrimaryKey pkey, Connection cx ) throws SQLException, IOException { Object last = null; if ( col instanceof AutoGeneratedPrimaryKeyColumn ) { last = dialect.getLastAutoGeneratedValue(databaseSchema, pkey.getTableName(), col.getName(), cx ); } else { throw new IllegalArgumentException("Column " + col.getName() + " is not generated." ); } return last; }
return new PrimaryKey(tableName, cols);
public FromDB(JDBCDataStore ds, Connection cx, PrimaryKey key) throws SQLException, IOException { super(key); fetchers = new ArrayList<>(key.getColumns().size()); for (PrimaryKeyColumn col : key.getColumns()) { fetchers.add(createKeyFetcher(ds, cx, key, col)); } }
public void testGetFeatureById() throws Exception { FeatureSource fsView = dataStore.getFeatureSource("riverReducedPk"); assertFalse(fsView instanceof FeatureStore); // the problem is actually in pk computation PrimaryKey pk = dataStore.getPrimaryKey((SimpleFeatureType) fsView.getSchema()); assertEquals("riverReducedPk", pk.getTableName()); assertEquals(1, pk.getColumns().size()); PrimaryKeyColumn col = pk.getColumns().get(0); assertEquals(aname("id"), col.getName()); assertTrue(Number.class.isAssignableFrom(col.getType())); FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); Id filter = ff.id(Collections.singleton(ff.featureId("riverReducedPk.0"))); assertEquals(1, fsView.getCount(new Query(null, filter))); }
next = dialect.getNextAutoGeneratedValue(databaseSchema, pkey.getTableName(), col.getName(), cx ); dialect.encodeColumnName( col.getName() , sql ); sql.append( ") + 1 FROM "); encodeTableName(pkey.getTableName(), sql, null);
return new PrimaryKey(tableName, cols);
/** * Returns the set of the primary key column names. The set is guaranteed to have the same * iteration order as the primary key. */ protected static LinkedHashSet<String> getColumnNames(PrimaryKey key) { LinkedHashSet<String> pkColumnNames = new LinkedHashSet<String>(); for (PrimaryKeyColumn pkcol : key.getColumns()) { pkColumnNames.add(pkcol.getName()); } return pkColumnNames; }
if (FID.startsWith(key.getTableName() + ".")) { FID = FID.substring(key.getTableName().length() + 1); if ( key.getColumns().size() > 1 ) { String[] split = FID.split( "\\." ); values.add( FID ); if ( values.size() != key.getColumns().size() ) { throw new IllegalArgumentException( "Illegal fid: " + FID + ". Expected " + key.getColumns().size() + " values but got " + values.size() ); Object value = values.get( i ); if ( value != null ) { Class type = key.getColumns().get( i ).getType(); Object converted = Converters.convert( value, type ); if ( converted != null ) {