2018-03-27 14:58:54 +02:00
|
|
|
package li.strolch.search;
|
|
|
|
|
2023-08-25 12:52:26 +02:00
|
|
|
import li.strolch.model.Order;
|
|
|
|
import li.strolch.model.State;
|
|
|
|
import li.strolch.persistence.api.StrolchTransaction;
|
2019-10-15 16:22:04 +02:00
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.List;
|
|
|
|
|
2023-08-25 12:52:26 +02:00
|
|
|
import static java.util.stream.Collectors.toList;
|
2018-03-27 14:58:54 +02:00
|
|
|
|
2018-06-22 11:11:15 +02:00
|
|
|
/**
|
|
|
|
* Performs a search of {@link Order} elements
|
|
|
|
*/
|
2018-03-27 14:58:54 +02:00
|
|
|
public class OrderSearch extends StrolchSearch<Order> {
|
|
|
|
|
|
|
|
private SearchNavigator<Order> navigator;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected SearchNavigator<Order> getNavigator() {
|
|
|
|
return this.navigator;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public OrderSearch types(String... types) {
|
|
|
|
this.navigator = tx -> tx.streamOrders(types);
|
|
|
|
return this;
|
|
|
|
}
|
2019-10-11 18:29:41 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public OrderSearch where(SearchExpression<Order> expression) {
|
|
|
|
super.where(expression);
|
|
|
|
return this;
|
|
|
|
}
|
2019-10-15 16:22:04 +02:00
|
|
|
|
|
|
|
public OrderSearch stateIsIn(String states) {
|
|
|
|
if (states == null)
|
|
|
|
return this;
|
|
|
|
String trim = states.trim();
|
|
|
|
if (trim.isEmpty())
|
|
|
|
return this;
|
|
|
|
|
|
|
|
List<State> stateList = Arrays.stream(trim.split(",")) //
|
|
|
|
.map(e -> State.parse(e.trim())) //
|
|
|
|
.collect(toList());
|
|
|
|
super.where(state().isIn(stateList));
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public OrderSearch stateIsIn(State... states) {
|
|
|
|
super.where(state().isIn(states));
|
|
|
|
return this;
|
|
|
|
}
|
2019-10-18 17:27:48 +02:00
|
|
|
|
|
|
|
public OrderSearch withState(State state) {
|
|
|
|
super.where(state().isEqualTo(state));
|
|
|
|
return this;
|
|
|
|
}
|
2023-03-10 08:39:01 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public OrderSearch internal() {
|
|
|
|
super.internal();
|
|
|
|
return this;
|
|
|
|
}
|
2023-08-25 12:52:26 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public OrderSearchResult search(StrolchTransaction tx) {
|
|
|
|
return new OrderSearchResult(prepareSearch(tx));
|
|
|
|
}
|
2018-03-27 14:58:54 +02:00
|
|
|
}
|