aesthetic improvements to NullPrecedence enum
This commit is contained in:
parent
49f890d781
commit
c29db563b5
|
@ -6,10 +6,12 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.query;
|
package org.hibernate.query;
|
||||||
|
|
||||||
import org.hibernate.query.sqm.NullOrdering;
|
import org.hibernate.AssertionFailure;
|
||||||
|
import org.hibernate.dialect.NullOrdering;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines precedence of null values within {@code ORDER BY} clause.
|
* Enumerates the possibilities for the precedence of null values within
|
||||||
|
* query result sets sorted by an {@code ORDER BY} clause.
|
||||||
*
|
*
|
||||||
* @author Lukasz Antoniak
|
* @author Lukasz Antoniak
|
||||||
*/
|
*/
|
||||||
|
@ -17,53 +19,53 @@ public enum NullPrecedence {
|
||||||
/**
|
/**
|
||||||
* Null precedence not specified. Relies on the RDBMS implementation.
|
* Null precedence not specified. Relies on the RDBMS implementation.
|
||||||
*/
|
*/
|
||||||
NONE {
|
NONE,
|
||||||
@Override
|
|
||||||
public boolean isDefaultOrdering(SortOrder sortOrder, NullOrdering nullOrdering) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Null values appear at the beginning of the sorted collection.
|
* Null values appear at the beginning of the sorted collection.
|
||||||
*/
|
*/
|
||||||
FIRST {
|
FIRST,
|
||||||
@Override
|
|
||||||
public boolean isDefaultOrdering(SortOrder sortOrder, NullOrdering nullOrdering) {
|
|
||||||
switch ( nullOrdering ) {
|
|
||||||
case FIRST:
|
|
||||||
return true;
|
|
||||||
case SMALLEST:
|
|
||||||
return sortOrder == SortOrder.ASCENDING;
|
|
||||||
case GREATEST:
|
|
||||||
return sortOrder == SortOrder.DESCENDING;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Null values appear at the end of the sorted collection.
|
* Null values appear at the end of the sorted collection.
|
||||||
*/
|
*/
|
||||||
LAST {
|
LAST;
|
||||||
@Override
|
|
||||||
public boolean isDefaultOrdering(SortOrder sortOrder, NullOrdering nullOrdering) {
|
|
||||||
switch ( nullOrdering ) {
|
|
||||||
case LAST:
|
|
||||||
return true;
|
|
||||||
case SMALLEST:
|
|
||||||
return sortOrder == SortOrder.DESCENDING;
|
|
||||||
case GREATEST:
|
|
||||||
return sortOrder == SortOrder.ASCENDING;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is this null precedence the default for the given sort order and null ordering.
|
* Is this null precedence the default for the given sort order and null ordering.
|
||||||
*/
|
*/
|
||||||
public abstract boolean isDefaultOrdering(SortOrder sortOrder, NullOrdering nullOrdering);
|
public boolean isDefaultOrdering(SortOrder sortOrder, NullOrdering nullOrdering) {
|
||||||
|
switch (this) {
|
||||||
|
case NONE:
|
||||||
|
return true;
|
||||||
|
case FIRST:
|
||||||
|
switch ( nullOrdering ) {
|
||||||
|
case FIRST:
|
||||||
|
return true;
|
||||||
|
case LAST:
|
||||||
|
return false;
|
||||||
|
case SMALLEST:
|
||||||
|
return sortOrder == SortOrder.ASCENDING;
|
||||||
|
case GREATEST:
|
||||||
|
return sortOrder == SortOrder.DESCENDING;
|
||||||
|
default:
|
||||||
|
throw new AssertionFailure("Unrecognized NullOrdering");
|
||||||
|
}
|
||||||
|
case LAST:
|
||||||
|
switch ( nullOrdering ) {
|
||||||
|
case LAST:
|
||||||
|
return true;
|
||||||
|
case FIRST:
|
||||||
|
return false;
|
||||||
|
case SMALLEST:
|
||||||
|
return sortOrder == SortOrder.DESCENDING;
|
||||||
|
case GREATEST:
|
||||||
|
return sortOrder == SortOrder.ASCENDING;
|
||||||
|
default:
|
||||||
|
throw new AssertionFailure("Unrecognized NullOrdering");
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
throw new AssertionFailure("Unrecognized NullPrecedence");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interprets a string representation of a NullPrecedence, returning {@code null} by default. For
|
* Interprets a string representation of a NullPrecedence, returning {@code null} by default. For
|
||||||
|
@ -74,14 +76,10 @@ public enum NullPrecedence {
|
||||||
* @return The recognized NullPrecedence, or {@code null}
|
* @return The recognized NullPrecedence, or {@code null}
|
||||||
*/
|
*/
|
||||||
public static NullPrecedence parse(String name) {
|
public static NullPrecedence parse(String name) {
|
||||||
if ( "none".equalsIgnoreCase( name ) ) {
|
for ( NullPrecedence value : values() ) {
|
||||||
return NullPrecedence.NONE;
|
if ( value.name().equalsIgnoreCase( name ) ) {
|
||||||
}
|
return value;
|
||||||
else if ( "first".equalsIgnoreCase( name ) ) {
|
}
|
||||||
return NullPrecedence.FIRST;
|
|
||||||
}
|
|
||||||
else if ( "last".equalsIgnoreCase( name ) ) {
|
|
||||||
return NullPrecedence.LAST;
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue