private int compareFilterKeyWithDictionaryKey(String dictionaryVal, String memberVal, DataType dataType) { try { if (dataType == DataTypes.SHORT) { return Short.compare((Short.parseShort(dictionaryVal)), (Short.parseShort(memberVal))); } else if (dataType == DataTypes.INT) { return Integer.compare((Integer.parseInt(dictionaryVal)), (Integer.parseInt(memberVal))); } else if (dataType == DataTypes.DOUBLE) { return DataTypeUtil.compareDoubleWithNan( (Double.parseDouble(dictionaryVal)), (Double.parseDouble(memberVal))); } else if (dataType == DataTypes.LONG) { return Long.compare((Long.parseLong(dictionaryVal)), (Long.parseLong(memberVal))); } else if (DataTypes.isDecimal(dataType)) { java.math.BigDecimal javaDecValForDictVal = new java.math.BigDecimal(dictionaryVal); java.math.BigDecimal javaDecValForMemberVal = new java.math.BigDecimal(memberVal); return javaDecValForDictVal.compareTo(javaDecValForMemberVal); } else { return -1; } } catch (Exception e) { //In all data types excluding String data type the null member will be the highest //while doing search in dictioary when the member comparison happens with filter member //which is also null member, since the parsing fails in other data type except string //explicit comparison is required, is both are null member then system has to return 0. if (memberVal.equals(dictionaryVal)) { return 0; } return 1; } }