/** * Alipay.com Inc. * Copyright (c) 2004-2012 All Rights Reserved. */ package com.alipay.zdal.common.sqljep.function; /** * �ɱȽϵ��� * ʵ�����������������Ľ�� * * ����+ֵ * * ���� [> 1] , [< 1] , [= 1] * * */ @SuppressWarnings("unchecked") public class Comparative implements Comparable, Cloneable { public static final int GreaterThan = 1; public static final int GreaterThanOrEqual = 2; public static final int Equivalent = 3; public static final int Like = 4; public static final int NotLike = 5; public static final int NotEquivalent = 6; public static final int LessThan = 7; public static final int LessThanOrEqual = 8; public static final int NotSupport = -1; /** * ���ʽȡ�� * * @param function * @return */ public static int reverseComparison(int function) { return 9 - function; } /** * ���ʽǰ��λ�õ�����ʱ�� * * @param function * @return */ public static int exchangeComparison(int function) { if (function == GreaterThan) { return LessThan; } else if (function == GreaterThanOrEqual) { return LessThanOrEqual; } else if (function == LessThan) { return GreaterThan; } if (function == LessThanOrEqual) { return GreaterThanOrEqual; } else { return function; } } private Comparable value; //���п������Ǹ�Comparative���Ӷ�ʵ���ϱ�ʾһ�������Ƚ����� private int comparison; protected Comparative() { } public Comparative(int function, Comparable value) { this.comparison = function; this.value = value; } public Comparable getValue() { return value; } public void setComparison(int function) { this.comparison = function; } public static String getComparisonName(int function) { if (function == Equivalent) { return "="; } else if (function == GreaterThan) { return ">"; } else if (function == GreaterThanOrEqual) { return ">="; } else if (function == LessThanOrEqual) { return "<="; } else if (function == LessThan) { return "<"; } else if (function == NotEquivalent) { return "<>"; } else if (function == Like) { return "LIKE"; } else if (function == NotLike) { return "NOT LIKE"; } else { return null; } } public static int getComparisonByIdent(String ident) { if ("=".equals(ident)) { return Equivalent; } else if (">".equals(ident)) { return GreaterThan; } else if (">=".equals(ident)) { return GreaterThanOrEqual; } else if ("<=".equals(ident)) { return LessThanOrEqual; } else if ("<".equals(ident)) { return LessThan; } else if ("!=".equals(ident)) { return NotEquivalent; } else if ("<>".equals(ident)) { return NotEquivalent; } else if ("like".equalsIgnoreCase(ident)) { return Like; } else { return NotSupport; } } public int getComparison() { return comparison; } public void setValue(Comparable value) { this.value = value; } public int compareTo(Object o) { if (o instanceof Comparative) { Comparative other = (Comparative) o; return this.getValue().compareTo(other.getValue()); } else if (o instanceof Comparable) { return this.getValue().compareTo(o); } return -1; } public String toString() { if (value != null) { StringBuilder sb = new StringBuilder(); sb.append("[").append(comparison).append("]"); sb.append(value.toString()); return sb.toString(); } else { return null; } } public Object clone() { return new Comparative(this.comparison, this.value); } }