View Javadoc
1   package net.avcompris.commons.query.impl;
2   
3   import static net.avcompris.commons.query.impl.FieldUtils.isBooleanField;
4   import static net.avcompris.commons.query.impl.FieldUtils.isDateTimeField;
5   import static net.avcompris.commons.query.impl.FieldUtils.isEnumField;
6   import static net.avcompris.commons.query.impl.FieldUtils.isIntField;
7   import static net.avcompris.commons.query.impl.FieldUtils.isStringField;
8   
9   import javax.annotation.Nullable;
10  
11  import org.apache.commons.lang3.NotImplementedException;
12  
13  import net.avcompris.commons.query.Filtering.Field;
14  
15  public enum Operation {
16  
17  	EQ("="),
18  
19  	NEQ("!="),
20  
21  	CONTAINS(null),
22  
23  	DOESNT_CONTAIN(null),
24  
25  	LT("<"),
26  
27  	LTE("<="),
28  
29  	GT(">"),
30  
31  	GTE(">=");
32  
33  	@Nullable
34  	private final String arithmeticOperator;
35  
36  	Operation(@Nullable final String arithmeticOperator) {
37  
38  		this.arithmeticOperator = arithmeticOperator;
39  	}
40  
41  	@Nullable
42  	public String arithmeticOperator() {
43  
44  		return arithmeticOperator;
45  	}
46  
47  	public static Operation[] getOperations(final Field field) {
48  
49  		if (isStringField(field)) {
50  
51  			return new Operation[] { EQ, NEQ, CONTAINS, DOESNT_CONTAIN };
52  
53  		} else if (isIntField(field)) {
54  
55  			return new Operation[] { EQ, NEQ, GT, GTE, LT, LTE };
56  
57  		} else if (isBooleanField(field)) {
58  
59  			return new Operation[] { EQ, NEQ };
60  
61  		} else if (isDateTimeField(field)) {
62  
63  			return new Operation[] { EQ, NEQ, GT, GTE, LT, LTE };
64  
65  		} else if (isEnumField(field)) {
66  
67  			return new Operation[] { EQ, NEQ };
68  
69  		} else {
70  
71  			throw new NotImplementedException("field: " + field);
72  		}
73  	}
74  }