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 }