1 21 package com.db4o.nativequery.expr.cmp; 22 23 public class MethodCallValue extends ComparisonOperandDescendant { 24 private String _methodName; 25 private Class [] _paramTypes; 26 private ComparisonOperand[] _args; 27 28 public MethodCallValue(ComparisonOperandAnchor parent, String name, Class [] paramTypes, ComparisonOperand[] args) { 29 super(parent); 30 _methodName = name; 31 _paramTypes = paramTypes; 32 _args = args; 33 } 34 35 public void accept(ComparisonOperandVisitor visitor) { 36 visitor.visit(this); 37 } 38 39 public String methodName() { 40 return _methodName; 41 } 42 43 public Class [] paramTypes() { 44 return _paramTypes; 45 } 46 47 public ComparisonOperand[] args() { 48 return _args; 49 } 50 51 public boolean equals(Object obj) { 52 if(!super.equals(obj)) { 53 return false; 54 } 55 MethodCallValue casted=(MethodCallValue)obj; 56 return _methodName.equals(casted._methodName)&&arrayCmp(_paramTypes, casted._paramTypes)&&arrayCmp(_args, casted._args); 57 } 58 59 public int hashCode() { 60 int hc=super.hashCode(); 61 hc*=29+_methodName.hashCode(); 62 hc*=29+_paramTypes.hashCode(); 63 hc*=29+_args.hashCode(); 64 return hc; 65 } 66 67 public String toString() { 68 String str=super.toString()+"."+_methodName+"("; 69 for (int paramIdx = 0; paramIdx < _paramTypes.length; paramIdx++) { 70 if(paramIdx>0) { 71 str+=","; 72 } 73 str+=_paramTypes[paramIdx]+":"+_args[paramIdx]; 74 } 75 str+=")"; 76 return str; 77 } 78 79 private boolean arrayCmp(Object [] a,Object [] b) { 80 if(a.length!=b.length) { 81 return false; 82 } 83 for (int paramIdx = 0; paramIdx < a.length; paramIdx++) { 84 if(!a[paramIdx].equals(b[paramIdx])) { 85 return false; 86 } 87 } 88 return true; 89 } 90 } 91 | Popular Tags |