Module is.codion.framework.domain
Interface OrderBy.Builder
- Enclosing interface:
OrderBy
public static sealed interface OrderBy.Builder
Builds a
OrderBy instance.
// Complex ordering with multiple columns and options
OrderBy order = OrderBy.builder()
.descending(Track.RATING) // Highest rated first
.ascending(Track.ARTIST_NAME) // Then by artist
.descending(OrderBy.NullOrder.NULLS_LAST, Track.COMPOSER) // Then by composer (nulls last)
.ascendingIgnoreCase(Track.NAME) // Finally by name (case-insensitive)
.build();
// Use in query
List<Entity> tracks = connection.select(
Select.all(Track.TYPE)
.orderBy(order));
// Builder pattern allows conditional ordering
OrderBy.Builder builder = OrderBy.builder();
if (byRating) {
builder.descending(Track.RATING);
}
builder.ascending(Track.NAME);
if (byPlayCount) {
builder.descending(Track.PLAY_COUNT);
}
OrderBy dynamicOrder = builder.build();
-
Method Summary
Modifier and TypeMethodDescriptionAdds an 'ascending' order by for the given columnsascending(OrderBy.NullOrder nullOrder, Column<?>... columns) Adds an 'ascending' order by for the given columnsascendingIgnoreCase(Column<String>... columns) Adds an 'ascending' order by ignoring case for the given columnsascendingIgnoreCase(OrderBy.NullOrder nullOrder, Column<String>... columns) Adds an 'ascending' order by ignoring case for the given columnsbuild()descending(Column<?>... columns) Adds a 'descending' order by for the given columnsdescending(OrderBy.NullOrder nullOrder, Column<?>... columns) Adds a 'descending' order by for the given columnsdescendingIgnoreCase(Column<?>... columns) Adds a 'descending' order by ignoring case for the given columnsdescendingIgnoreCase(OrderBy.NullOrder nullOrder, Column<String>... columns) Adds a 'descending' order by ignoring case for the given columns
-
Method Details
-
ascending
Adds an 'ascending' order by for the given columns- Parameters:
columns- the columns- Returns:
- this builder instance
- Throws:
IllegalArgumentException- in casecolumnsis empty
-
ascendingIgnoreCase
Adds an 'ascending' order by ignoring case for the given columns- Parameters:
columns- the columns- Returns:
- this builder instance
- Throws:
IllegalArgumentException- in casecolumnsis empty
-
ascending
Adds an 'ascending' order by for the given columns- Parameters:
nullOrder- the null ordercolumns- the columns- Returns:
- this builder instance
- Throws:
IllegalArgumentException- in casecolumnsis empty
-
ascendingIgnoreCase
Adds an 'ascending' order by ignoring case for the given columns- Parameters:
nullOrder- the null ordercolumns- the columns- Returns:
- this builder instance
- Throws:
IllegalArgumentException- in casecolumnsis empty
-
descending
Adds a 'descending' order by for the given columns- Parameters:
columns- the columns- Returns:
- this builder instance
- Throws:
IllegalArgumentException- in casecolumnsis empty
-
descendingIgnoreCase
Adds a 'descending' order by ignoring case for the given columns- Parameters:
columns- the columns- Returns:
- this builder instance
- Throws:
IllegalArgumentException- in casecolumnsis empty
-
descending
Adds a 'descending' order by for the given columns- Parameters:
nullOrder- the null ordercolumns- the columns- Returns:
- this builder instance
- Throws:
IllegalArgumentException- in casecolumnsis empty
-
descendingIgnoreCase
Adds a 'descending' order by ignoring case for the given columns- Parameters:
nullOrder- the null ordercolumns- the columns- Returns:
- this builder instance
- Throws:
IllegalArgumentException- in casecolumnsis empty
-
build
OrderBy build()- Returns:
- a new
OrderByinstance based on this builder
-