if ( wb != null ) { sql.append( " AND " ); sql.append( wb.getWhere().getSQL() ); stmt.setShort( i++, getSchema().getFtId( ftName ) ); if ( wb != null ) { for ( SQLArgument o : wb.getWhere().getArguments() ) { o.setArgument( stmt, i++ );
/** * Ensures that the given {@link SQLExpression} is not an {@link SQLExpression} that is multi-valued. * * @param expr * SQL expression, must not be <code>null</code> * @throws UnmappableException */ protected void assertNotMultiValued( SQLExpression expr ) throws UnmappableException { if ( expr.isMultiValued() ) { String msg = "Cannot apply filter as it refers to a column that stores multiple values in concatenated form.'"; throw new UnmappableException( msg ); } } }
@Override public StringBuilder getSQL() { StringBuilder sb = new StringBuilder(); for ( Object particle : particles ) { if ( particle instanceof SQLExpression ) { sb.append( ( (SQLExpression) particle ).getSQL() ); } else { sb.append( particle ); } } return sb; }
@Override public List<SQLArgument> getArguments() { List<SQLArgument> literals = new ArrayList<SQLArgument>(); for ( Object particle : particles ) { if ( particle instanceof SQLExpression ) { if ( particle instanceof SQLArgument ) { literals.add( (SQLArgument) particle ); } else { literals.addAll( ( (SQLExpression) particle ).getArguments() ); } } } return literals; }
if ( !propNameExpr.isSpatial() ) { String msg = "Cannot evaluate spatial operator on database. Targeted property name '" + op.getPropName() + "' does not denote a spatial column."; ICRS storageCRS = propNameExpr.getCRS(); int srid = propNameExpr.getSRID() != null ? Integer.parseInt( propNameExpr.getSRID() ) : 0;
protected StringBuilder getPreparedStatementDatasetIDs( AbstractWhereBuilder builder ) { StringBuilder getDatasetIDs = new StringBuilder( 300 ); String rootTableAlias = builder.getAliasManager().getRootTableAlias(); getDatasetIDs.append( "SELECT DISTINCT " ); getDatasetIDs.append( rootTableAlias ); getDatasetIDs.append( '.' ); getDatasetIDs.append( idColumn ); // for SELECT DISTINCT, all ORDER BY columns have to be SELECTed as well if ( builder.getOrderBy() != null ) { // hack to transform the ORDER BY column list in select list String orderColList = builder.getOrderBy().getSQL().toString(); int i = 1; while ( orderColList.contains( " ASC" ) || orderColList.contains( "DESC" ) ) { orderColList = orderColList.replaceFirst( " ASC| DESC", " AS crit" + ( i++ ) ); } getDatasetIDs.append( ',' ); getDatasetIDs.append( orderColList ); } return getDatasetIDs; }
int i = 1; if ( builder.getWhere() != null ) { for ( SQLArgument o : builder.getWhere().getArguments() ) { o.setArgument( stmt, i++ ); for ( SQLArgument o : builder.getOrderBy().getArguments() ) { o.setArgument( stmt, i++ );
if ( !propNameExpr.isSpatial() ) { String msg = "Cannot evaluate spatial operator on database. Targeted property name '" + op.getPropName() + "' does not denote a spatial column."; ICRS storageCRS = propNameExpr.getCRS(); int srid = propNameExpr.getSRID() != null ? Integer.parseInt( propNameExpr.getSRID() ) : -1;
innerSelect.append( " WHERE " ).append( wb.getWhere().getSQL() ); int i = 1; if ( wb.getWhere() != null ) { for ( SQLArgument argument : wb.getWhere().getArguments() ) { argument.setArgument( stm, i++ );
public static String repairAliasesInWhereClause( AbstractWhereBuilder builder, List<Join> usedJoins, List<Join> redundantJoins ) { String whereClause = builder.getWhere().getSQL().toString(); for ( Join redundantJoin : redundantJoins ) { Join usedJoin = getEquivalentJoin( redundantJoin, usedJoins ); String usedAlias = usedJoin.getToTableAlias(); String redundantAlias = redundantJoin.getToTableAlias(); whereClause = whereClause.replace( redundantAlias, usedAlias ); } return whereClause; }
int i = 1; if ( builder.getWhere() != null ) { for ( SQLArgument o : builder.getWhere().getArguments() ) { o.setArgument( preparedStatement, i++ ); arguments.add( o.getValue() );
private SQLOperation toProtoSql( PropertyIsLike op, String literal ) throws UnmappableException, FilterEvaluationException { String escape = "" + op.getEscapeChar(); String wildCard = "" + op.getWildCard(); String singleChar = "" + op.getSingleChar(); SQLExpression propName = toProtoSQL( op.getExpression() ); IsLikeString specialString = new IsLikeString( literal, wildCard, singleChar, escape ); String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( propName.isMultiValued() ) { // TODO escaping of pipe symbols sqlEncoded = "%|" + sqlEncoded + "|%"; } return getOperationFromBuilder( op, propName, sqlEncoded ); }
+ sb + ")" ); } else { String clause = generated.getSQL().toString(); for ( SQLArgument lit : generated.getArguments() ) { lit.setArgument( stmt, i++ );
protected void getPSBody( AbstractWhereBuilder builder, StringBuilder getDatasetIDs ) { String rootTableAlias = builder.getAliasManager().getRootTableAlias(); getDatasetIDs.append( " FROM " ); getDatasetIDs.append( mainTable ); getDatasetIDs.append( " " ); getDatasetIDs.append( rootTableAlias ); for ( PropertyNameMapping mappedPropName : builder.getMappedPropertyNames() ) { for ( Join join : mappedPropName.getJoins() ) { getDatasetIDs.append( " LEFT OUTER JOIN " ); getDatasetIDs.append( join.getToTable() ); getDatasetIDs.append( ' ' ); getDatasetIDs.append( join.getToTableAlias() ); getDatasetIDs.append( " ON " ); getDatasetIDs.append( join.getSQLJoinCondition() ); } } if ( builder.getWhere() != null ) { getDatasetIDs.append( " WHERE " ); getDatasetIDs.append( builder.getWhere().getSQL() ); } }
stmt.setShort( argIdx++, ftId2 ); if ( blobWb != null && blobWb.getWhere() != null ) { for ( SQLArgument o : blobWb.getWhere().getArguments() ) { o.setArgument( stmt, argIdx++ );
String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( propName.isMultiValued() ) { PrimitiveType pt = new PrimitiveType( STRING ); PrimitiveValue value = new PrimitiveValue( sqlEncoded, pt ); PrimitiveParticleConverter converter = new DefaultPrimitiveConverter( pt, null, propName.isMultiValued() ); SQLArgument argument = new SQLArgument( value, converter ); builder.add( argument );
if ( wb.getWhere() != null ) { sql.append( " WHERE " ); sql.append( wb.getWhere().getSQL() ); for ( SQLArgument o : wb.getWhere().getArguments() ) { o.setArgument( stmt, i++ );
String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( propName.isMultiValued() ) {
idSelect.append( " WHERE " ).append( wb.getWhere().getSQL() ); idSelect.append( wb.getOrderBy().getSQL() ); for ( SQLArgument argument : wb.getWhere().getArguments() ) { argument.setArgument( stmt, i++ ); for ( SQLArgument argument : wb.getOrderBy().getArguments() ) { argument.setArgument( stmt, i++ );
SQLExpression param1 = toProtoSQL( propIsEqualTo.getParameter1() ); SQLExpression param2 = toProtoSQL( propIsEqualTo.getParameter2() ); if ( !param1.isMultiValued() && !param2.isMultiValued() ) { inferType( param1, param2 ); SQLOperationBuilder builder = new SQLOperationBuilder( BOOLEAN ); SQLExpression param1 = toProtoSQL( propIsNotEqualTo.getParameter1(), true ); SQLExpression param2 = toProtoSQL( propIsNotEqualTo.getParameter2(), true ); if ( !param1.isMultiValued() && !param2.isMultiValued() ) { inferType( param1, param2 ); addExpression( builder, param1, op.isMatchCase() );