1 /** 2 * Copyright 2004-2014 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.student.contract.model.test.source; 17 18 import java.util.List; 19 20 /** 21 * Criteria for a generic query 22 */ 23 public interface Comparison { 24 25 26 /** 27 * Name: Field Key 28 * 29 * Dot path notation to identity the name of field to be compared 30 */ 31 public String getFieldKey(); 32 33 /** 34 * Name: Operator 35 * 36 * Operator to use to compare the field to the value. The valid values are:<ol> 37 * <li>= 38 * <li>in 39 * <li>< 40 * <li>!= 41 * <li>>= 42 * <li><= 43 * <li>like 44 * <li>between 45 * </ol> 46 * The operators should work similar to their corresponding SQL operators. 47 * 48 * Complex objects can only be checked to see if they are null or not null. 49 * "in" operator takes a list of values 50 * "between" operator takes two values for from and thru inclusive 51 * all others take a single value 52 * 53 * TODO: Decide for complex Lists can they be checked to see how many occurences they have? 54 * TODO: Decide on other operators 55 * TODO: Deicde on operators to search collections inside such as any 56 * TODO: Decide how to search on dynamic attributes 57 * 58 */ 59 public String getOperator(); 60 61 /** 62 * Name: Criteria Value(s) 63 * 64 * Value to be compared 65 */ 66 public List<String> getValues(); 67 68 /** 69 * Name: Ignore Case? 70 * 71 * Check if should ignore case when doing the comparison 72 * Default is false 73 * If true then the case of both the specified comparison value(s) and the data value from the field should be ignored 74 */ 75 public boolean isIgnoreCase (); 76 }