Compare commits
3 Commits
40302fb406
...
7152c683d4
Author | SHA1 | Date |
---|---|---|
Struchkov Mark | 7152c683d4 | |
Struchkov Mark | 7be9508ffb | |
Struchkov Mark | 2e0039adcb |
2
pom.xml
2
pom.xml
|
@ -4,7 +4,7 @@
|
|||
|
||||
<groupId>dev.struchkov.haiti.filter</groupId>
|
||||
<artifactId>haiti-filter-jooq</artifactId>
|
||||
<version>1.2.0-SNAPSHOT</version>
|
||||
<version>1.3.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Haiti Filter JOOQ</name>
|
||||
|
|
|
@ -5,6 +5,7 @@ import dev.struchkov.haiti.filter.jooq.join.JoinTable;
|
|||
import dev.struchkov.haiti.filter.jooq.join.JoinTypeOperation;
|
||||
import dev.struchkov.haiti.filter.jooq.page.PageableOffset;
|
||||
import dev.struchkov.haiti.filter.jooq.page.PageableSeek;
|
||||
import dev.struchkov.haiti.filter.jooq.sort.NullOrderType;
|
||||
import dev.struchkov.haiti.filter.jooq.sort.SortContainer;
|
||||
import dev.struchkov.haiti.filter.jooq.sort.SortType;
|
||||
import dev.struchkov.haiti.utils.Inspector;
|
||||
|
@ -112,6 +113,13 @@ public class CriteriaJooqFilter {
|
|||
return this;
|
||||
}
|
||||
|
||||
public CriteriaJooqFilter sort(String field, SortType sortType, NullOrderType nullsOrder) {
|
||||
if (field != null) {
|
||||
this.sorts.add(SortContainer.of(field, sortType, nullsOrder));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public CriteriaJooqFilter sort(String field) {
|
||||
if (field != null) {
|
||||
this.sorts.add(SortContainer.of(field));
|
||||
|
@ -248,12 +256,14 @@ public class CriteriaJooqFilter {
|
|||
if (!sorts.isEmpty()) {
|
||||
final List<SortField<Object>> newSorts = new ArrayList<>();
|
||||
for (SortContainer sort : sorts) {
|
||||
final NullOrderType nullOrderType = sort.getNullOrderType();
|
||||
final SortType sortType = sort.getType();
|
||||
final String fieldName = sort.getFieldName();
|
||||
if (SortType.ASC.equals(sortType)) {
|
||||
newSorts.add(field(fieldName).asc());
|
||||
final SortField<Object> sortField = SortType.ASC.equals(sortType) ? field(fieldName).asc() : field(fieldName).desc();
|
||||
if (NullOrderType.LAST.equals(nullOrderType)) {
|
||||
newSorts.add(sortField.nullsLast());
|
||||
} else {
|
||||
newSorts.add(field(fieldName).desc());
|
||||
newSorts.add(sortField.nullsFirst());
|
||||
}
|
||||
}
|
||||
return newSorts;
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
package dev.struchkov.haiti.filter.jooq.sort;
|
||||
|
||||
public enum NullOrderType {
|
||||
|
||||
FIRST,
|
||||
LAST
|
||||
|
||||
}
|
|
@ -7,6 +7,7 @@ public class SortContainer {
|
|||
|
||||
private final String fieldName;
|
||||
private SortType type = SortType.ASC;
|
||||
private NullOrderType nullOrderType = NullOrderType.LAST;
|
||||
|
||||
private SortContainer(String fieldName) {
|
||||
this.fieldName = fieldName;
|
||||
|
@ -17,6 +18,12 @@ public class SortContainer {
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
private SortContainer(String fieldName, SortType type, NullOrderType nullsOrder) {
|
||||
this.fieldName = fieldName;
|
||||
this.type = type;
|
||||
this.nullOrderType = nullsOrder;
|
||||
}
|
||||
|
||||
public static SortContainer of(String fieldName) {
|
||||
Inspector.isNotNull(fieldName);
|
||||
return new SortContainer(fieldName);
|
||||
|
@ -27,6 +34,15 @@ public class SortContainer {
|
|||
return new SortContainer(fieldName, sortType == null ? SortType.ASC : sortType);
|
||||
}
|
||||
|
||||
public static SortContainer of(String fieldName, SortType sortType, NullOrderType nullOrderType) {
|
||||
Inspector.isNotNull(fieldName);
|
||||
return new SortContainer(
|
||||
fieldName,
|
||||
sortType == null ? SortType.ASC : sortType,
|
||||
nullOrderType == null ? NullOrderType.LAST : nullOrderType
|
||||
);
|
||||
}
|
||||
|
||||
public String getFieldName() {
|
||||
return fieldName;
|
||||
}
|
||||
|
@ -35,4 +51,8 @@ public class SortContainer {
|
|||
return type;
|
||||
}
|
||||
|
||||
public NullOrderType getNullOrderType() {
|
||||
return nullOrderType;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue