@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; }
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; }
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; }
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() ); } }
if ( wb != null ) { sql.append( " AND " ); sql.append( wb.getWhere().getSQL() );
innerSelect.append( " WHERE " ).append( wb.getWhere().getSQL() );
+ sb + ")" ); } else { String clause = generated.getSQL().toString();
if ( wb.getWhere() != null ) { sql.append( " WHERE " ); sql.append( wb.getWhere().getSQL() );
sql.append( " WHERE " ).append( wb.getWhere().getSQL() );
if ( builder.getOrderBy() != null ) { idSelect.append( " ORDER BY " ); idSelect.append( builder.getOrderBy().getSQL() ); String sortCols = builder.getOrderBy().getSQL().toString(); String rootTableQualifier = builder.getAliasManager().getRootTableAlias() + "."; int columnCount = StringUtils.count( sortCols, "," ) + 1;
if ( wb != null ) { sql.append( " AND " ); sql.append( wb.getWhere().getSQL() );