View Javadoc
1   package net.avcompris.commons3.dao;
2   
3   import static java.util.Locale.ENGLISH;
4   import static org.apache.commons.lang3.StringUtils.substringAfter;
5   import static org.apache.commons.lang3.StringUtils.substringBetween;
6   
7   import javax.annotation.Nullable;
8   
9   import net.avcompris.commons.query.Filtering;
10  
11  public interface EntitiesDtoQuery<T extends Filtering<U>, U extends Filtering.Field> {
12  
13  	@Nullable
14  	T getFiltering();
15  
16  	SortBy[] getSortBys();
17  
18  	Expand[] getExpands();
19  
20  	int getStart();
21  
22  	int getLimit();
23  
24  	EntitiesDtoQuery<T, U> setFiltering(@Nullable T filtering);
25  
26  	EntitiesDtoQuery<T, U> setStart(int start);
27  
28  	EntitiesDtoQuery<T, U> setLimit(int limit);
29  
30  	interface SortBy {
31  
32  		String name();
33  
34  		String toSqlField();
35  
36  		boolean isDesc();
37  
38  		static String toSqlField(final String name) {
39  
40  			return name.endsWith("_DESC")
41  
42  					? substringBetween(name, "SORT_BY_", "_DESC").toLowerCase(ENGLISH)
43  
44  					: substringAfter(name, "SORT_BY_").toLowerCase(ENGLISH);
45  		}
46  
47  		static boolean isDesc(final String name) {
48  
49  			return name.endsWith("_DESC");
50  		}
51  	}
52  
53  	interface Expand {
54  
55  		String name();
56  	}
57  }