gluu
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression クラス
org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression 連携図
Collaboration graph

公開メンバ関数

 SimpleExpression (String attribute, ScimOperator operator, CompValueType type, String attributeValue)
 
Boolean evaluate (Map< String, Object > item)
 
void setParentAttribute (String parentAttribute)
 
void setResourceClass (Class<? extends BaseScimResource > resourceClass)
 

非公開メンバ関数

Boolean evaluateDateTimeAttribute (Type attrType, Object valueInItemObj)
 
Boolean evaluateBooleanAttribute (Type attrType, Object valueInItemObj)
 
Boolean evaluateNumericAttribute (Type attrType, Object valueInItemObj)
 
Boolean evaluateStringAttribute (boolean caseExact, Object valueInItemObj)
 
Attribute getAttributeAnnotation ()
 

非公開変数類

Logger log = LogManager.getLogger(getClass())
 
ExtensionService extService
 
String attribute
 
ScimOperator operator
 
CompValueType type
 
String attributeValue
 
String parentAttribute
 
Class<? extends BaseScimResourceresourceClass
 

詳解

Created by jgomer on 2017-12-10.

構築子と解体子

◆ SimpleExpression()

org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.SimpleExpression ( String  attribute,
ScimOperator  operator,
CompValueType  type,
String  attributeValue 
)
inline
40  {
41  this.attribute = attribute;
42  this.operator=operator;
44  this.type=type;
45  //Extension service is not needed since this class deals with evaluating subatributes living inside complex attributes
46  //but Gluu server does not support complex custom attributes
47  //extService= CdiUtil.bean(ExtensionService.class);
48  }
String attribute
Definition: SimpleExpression.java:32
String attributeValue
Definition: SimpleExpression.java:35
CompValueType type
Definition: SimpleExpression.java:34

関数詳解

◆ evaluate()

Boolean org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.evaluate ( Map< String, Object >  item)
inline
50  {
51  /*
52  There are 3 categories for attribute operators:
53  - eq, ne (applicable to all types)
54  - co, sw, ew (applicable to STRING, REFERENCE)
55  - gt, ge, lt, le (applicable to STRING, DECIMAL, REFERENCE, DATETIME)
56  */
57  Boolean val=null;
58  Type attrType=null;
59 
60  log.trace("SimpleExpression.evaluate.");
61  String msg=String.format("%s%s",
62  StringUtils.isEmpty(parentAttribute) ? "" : (parentAttribute + "."), resourceClass.getSimpleName());
63 
64  Attribute attrAnnot=getAttributeAnnotation();
65  if (attrAnnot==null) {
66  if (extService != null) {
68 
69  if (field == null)
70  log.error("SimpleExpression.evaluate. Attribute '{}' is not recognized in {}", attribute, msg);
71  else
72  attrType = field.getAttributeDefinitionType();
73  }
74  }
75  else
76  attrType = attrAnnot.type();
77 
78  if (attrType==null) {
79  log.error("SimpleExpression.evaluate. Could not determine type of attribute '{}' in {}", attribute, msg);
80  }
81  else {
82  String errMsg=FilterUtil.checkFilterConsistency(attribute, attrType, type, operator);
83 
84  if (errMsg==null){
85  Object currentAttrValue=item.get(attribute);
86 
87  if (type.equals(CompValueType.NULL)) { //implies attributeValue==null
88  log.trace("SimpleExpression.evaluate. Using null as compare value");
89  val=operator.equals(ScimOperator.EQUAL) ? currentAttrValue==null : currentAttrValue!=null;
90  }
91  else
92  if (currentAttrValue==null){
93  //If value is absent, filter won't match against anything (only when comparing with null as in previous case)
94  log.trace("SimpleExpression.evaluate. Attribute \"{}\" is absent in resource data", attribute);
95  val=false;
96  }
97  else
98  if (Type.STRING.equals(attrType) || Type.REFERENCE.equals(attrType)) //check it's a string or reference
99  val = evaluateStringAttribute(attrAnnot!=null && attrAnnot.isCaseExact(), currentAttrValue);
100  else
101  if (Type.INTEGER.equals(attrType) || Type.DECIMAL.equals(attrType))
102  val = evaluateNumericAttribute(attrType, currentAttrValue);
103  else
104  if (Type.BOOLEAN.equals(attrType))
105  val = evaluateBooleanAttribute(attrType, currentAttrValue);
106  else
107  if (Type.DATETIME.equals(attrType))
108  val = evaluateDateTimeAttribute(attrType, currentAttrValue);
109  }
110  else
111  log.error("SimpleExpression.evaluate. {}", errMsg);
112  }
113  return val;
114 
115  }
String parentAttribute
Definition: SimpleExpression.java:37
Boolean evaluateDateTimeAttribute(Type attrType, Object valueInItemObj)
Definition: SimpleExpression.java:117
Boolean evaluateBooleanAttribute(Type attrType, Object valueInItemObj)
Definition: SimpleExpression.java:158
ExtensionField getFieldOfExtendedAttribute(Class<? extends BaseScimResource > cls, String attribute)
Definition: ExtensionService.java:172
Logger log
Definition: SimpleExpression.java:29
ExtensionService extService
Definition: SimpleExpression.java:30
Attribute getAttributeAnnotation()
Definition: SimpleExpression.java:257
String attribute
Definition: SimpleExpression.java:32
CompValueType type
Definition: SimpleExpression.java:34
Boolean evaluateStringAttribute(boolean caseExact, Object valueInItemObj)
Definition: SimpleExpression.java:212
Boolean evaluateNumericAttribute(Type attrType, Object valueInItemObj)
Definition: SimpleExpression.java:178
Class<? extends BaseScimResource > resourceClass
Definition: SimpleExpression.java:38

◆ evaluateBooleanAttribute()

Boolean org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.evaluateBooleanAttribute ( Type  attrType,
Object  valueInItemObj 
)
inlineprivate
158  {
159 
160  Boolean val=null;
161  log.trace("SimpleExpression.evaluateBooleanAttribute");
162 
163  boolean valueInItem=Boolean.valueOf(valueInItemObj.toString());
164  boolean compareAgainst=Boolean.valueOf(attributeValue);
165 
166  if (operator.equals(ScimOperator.EQUAL))
167  val=valueInItem==compareAgainst;
168  else
169  if (operator.equals(ScimOperator.NOT_EQUAL))
170  val=valueInItem!=compareAgainst;
171  else
172  FilterUtil.logOperatorInconsistency(operator.getValue(), attrType.toString(), attribute);
173 
174  return val;
175 
176  }
Logger log
Definition: SimpleExpression.java:29
String attribute
Definition: SimpleExpression.java:32
String attributeValue
Definition: SimpleExpression.java:35

◆ evaluateDateTimeAttribute()

Boolean org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.evaluateDateTimeAttribute ( Type  attrType,
Object  valueInItemObj 
)
inlineprivate
117  {
118 
119  Boolean val=null;
120  log.trace("SimpleExpression.evaluateDateTimeAttribute");
121 
122  try{
123  DateTime dtStored=new DateTime(valueInItemObj.toString());
124  DateTime dtProvided=new DateTime(attributeValue);
125  long valueInItem=dtStored.getMillis();
126  long compareAgainst=dtProvided.getMillis();
127 
128  switch (operator){
129  case EQUAL:
130  val=valueInItem==compareAgainst;
131  break;
132  case NOT_EQUAL:
133  val=valueInItem!=compareAgainst;
134  break;
135  case GREATER_THAN:
136  val=valueInItem>compareAgainst;
137  break;
138  case GREATER_THAN_OR_EQUAL:
139  val=valueInItem>=compareAgainst;
140  break;
141  case LESS_THAN:
142  val=valueInItem<compareAgainst;
143  break;
144  case LESS_THAN_OR_EQUAL:
145  val=valueInItem<=compareAgainst;
146  break;
147  default:
148  FilterUtil.logOperatorInconsistency(operator.getValue(), attrType.toString(), attribute);
149  }
150  }
151  catch (Exception e){
152  log.error("SimpleExpression.evaluate. Date not in ISO format");
153  }
154  return val;
155 
156  }
Logger log
Definition: SimpleExpression.java:29
String attribute
Definition: SimpleExpression.java:32
String attributeValue
Definition: SimpleExpression.java:35

◆ evaluateNumericAttribute()

Boolean org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.evaluateNumericAttribute ( Type  attrType,
Object  valueInItemObj 
)
inlineprivate
178  {
179 
180  Boolean val=null;
181  log.trace("SimpleExpression.evaluateNumericAttribute");
182 
183  BigDecimal valueInItem=new BigDecimal(valueInItemObj.toString());
184  BigDecimal compareAgainst=new BigDecimal(attributeValue);
185 
186  switch (operator) {
187  case EQUAL:
188  val=valueInItem.equals(compareAgainst);
189  break;
190  case NOT_EQUAL:
191  val=!valueInItem.equals(compareAgainst);
192  break;
193  case GREATER_THAN:
194  val=valueInItem.compareTo(compareAgainst)>0;
195  break;
196  case GREATER_THAN_OR_EQUAL:
197  val=valueInItem.equals(compareAgainst) || valueInItem.compareTo(compareAgainst)>0;
198  break;
199  case LESS_THAN:
200  val=valueInItem.compareTo(compareAgainst)<0;
201  break;
202  case LESS_THAN_OR_EQUAL:
203  val=valueInItem.equals(compareAgainst) || valueInItem.compareTo(compareAgainst)<0;
204  break;
205  default:
206  FilterUtil.logOperatorInconsistency(operator.getValue(), attrType.toString(), attribute);
207  }
208  return val;
209 
210  }
Logger log
Definition: SimpleExpression.java:29
String attribute
Definition: SimpleExpression.java:32
String attributeValue
Definition: SimpleExpression.java:35

◆ evaluateStringAttribute()

Boolean org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.evaluateStringAttribute ( boolean  caseExact,
Object  valueInItemObj 
)
inlineprivate
212  {
213 
214  //Here attributeValue is never null
215  Boolean val=null;
216  log.trace("SimpleExpression.evaluateStringAttribute");
217 
218  String valueInItem=valueInItemObj.toString();
219 
220  if (!caseExact){
221  valueInItem=valueInItem.toLowerCase();
222  attributeValue=attributeValue.toLowerCase();
223  }
224  switch (operator){
225  case EQUAL:
226  val=valueInItem.equals(attributeValue);
227  break;
228  case NOT_EQUAL:
229  val=!valueInItem.equals(attributeValue);
230  break;
231  case CONTAINS:
232  val=valueInItem.contains(attributeValue);
233  break;
234  case STARTS_WITH:
235  val=valueInItem.startsWith(attributeValue);
236  break;
237  case ENDS_WITH:
238  val=valueInItem.endsWith(attributeValue);
239  break;
240  case GREATER_THAN:
241  val=valueInItem.compareTo(attributeValue)>0;
242  break;
243  case GREATER_THAN_OR_EQUAL:
244  val=valueInItem.equals(attributeValue) || valueInItem.compareTo(attributeValue)>0;
245  break;
246  case LESS_THAN:
247  val=valueInItem.compareTo(attributeValue)<0;
248  break;
249  case LESS_THAN_OR_EQUAL:
250  val=valueInItem.equals(attributeValue) || valueInItem.compareTo(attributeValue)<0;
251  break;
252  }
253  return val;
254 
255  }
Logger log
Definition: SimpleExpression.java:29
String attributeValue
Definition: SimpleExpression.java:35

◆ getAttributeAnnotation()

Attribute org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.getAttributeAnnotation ( )
inlineprivate
257  {
258  String attr= StringUtils.isEmpty(parentAttribute) ? attribute : parentAttribute + "." + attribute;
259  return IntrospectUtil.getFieldAnnotation(attr, resourceClass==null ? BaseScimResource.class : resourceClass, Attribute.class);
260  }
String parentAttribute
Definition: SimpleExpression.java:37
String attribute
Definition: SimpleExpression.java:32
Class<? extends BaseScimResource > resourceClass
Definition: SimpleExpression.java:38

◆ setParentAttribute()

void org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.setParentAttribute ( String  parentAttribute)
inline
262  {
264  }
String parentAttribute
Definition: SimpleExpression.java:37

◆ setResourceClass()

void org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.setResourceClass ( Class<? extends BaseScimResource resourceClass)
inline
266  {
268  }
Class<? extends BaseScimResource > resourceClass
Definition: SimpleExpression.java:38

メンバ詳解

◆ attribute

String org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.attribute
private

◆ attributeValue

String org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.attributeValue
private

◆ extService

ExtensionService org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.extService
private

◆ log

Logger org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.log = LogManager.getLogger(getClass())
private

◆ operator

ScimOperator org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.operator
private

◆ parentAttribute

String org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.parentAttribute
private

◆ resourceClass

Class<? extends BaseScimResource> org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.resourceClass
private

◆ type

CompValueType org.gluu.oxtrust.service.antlr.scimFilter.util.SimpleExpression.type
private

このクラス詳解は次のファイルから抽出されました: