001 package biz.hammurapi.sql.syntax; 002 003 import java.io.Serializable; 004 import java.sql.PreparedStatement; 005 import java.sql.SQLException; 006 007 import biz.hammurapi.sql.Variant; 008 009 /** 010 * Equalt 011 * @author Pavel 012 * 013 */ 014 public class Between implements StatementFragment, Serializable { 015 016 private Variant lower; 017 private Variant upper; 018 private String columnName; 019 020 public Between(String columnName, boolean lower, boolean upper) { 021 this.lower = new Variant(lower); 022 this.upper = new Variant(upper); 023 this.columnName = columnName; 024 } 025 026 public Between(String columnName, byte lower, byte upper) { 027 this.lower = new Variant(lower); 028 this.upper = new Variant(upper); 029 this.columnName = columnName; 030 } 031 032 public Between(String columnName, char lower, char upper) { 033 this.lower = new Variant(lower); 034 this.upper = new Variant(upper); 035 this.columnName = columnName; 036 } 037 038 public Between(String columnName, double lower, double upper) { 039 this.lower = new Variant(lower); 040 this.upper = new Variant(upper); 041 this.columnName = columnName; 042 } 043 044 public Between(String columnName, float lower, float upper) { 045 this.lower = new Variant(lower); 046 this.upper = new Variant(upper); 047 this.columnName = columnName; 048 } 049 050 public Between(String columnName, int lower, int upper) { 051 this.lower = new Variant(lower); 052 this.upper = new Variant(upper); 053 this.columnName = columnName; 054 } 055 056 public Between(String columnName, long lower, long upper) { 057 this.lower = new Variant(lower); 058 this.upper = new Variant(upper); 059 this.columnName = columnName; 060 } 061 062 public Between(String columnName, String lower, String upper) { 063 this.lower = new Variant(lower); 064 this.upper = new Variant(upper); 065 this.columnName = columnName; 066 } 067 068 public Between(String columnName, Object lower, Object upper) { 069 this.lower = new Variant(lower); 070 this.upper = new Variant(upper); 071 this.columnName = columnName; 072 } 073 074 public Between(String columnName, Object lower, Object upper, int sqlType) { 075 this.lower = new Variant(lower, sqlType); 076 this.upper = new Variant(upper, sqlType); 077 this.columnName = columnName; 078 } 079 080 public Between(String columnName, short lower, short upper) { 081 this.lower = new Variant(lower); 082 this.upper = new Variant(upper); 083 this.columnName = columnName; 084 } 085 086 public String toSqlString() { 087 return columnName + " BETWEEN ? AND ?"; 088 } 089 090 public int parameterize(PreparedStatement ps, int idx) throws SQLException { 091 return upper.parameterize(ps, lower.parameterize(ps, idx)); 092 } 093 094 public int hashCode() { 095 final int prime = 31; 096 int result = 1; 097 result = prime * result 098 + ((columnName == null) ? 0 : columnName.hashCode()); 099 result = prime * result + ((lower == null) ? 0 : lower.hashCode()); 100 result = prime * result + ((upper == null) ? 0 : upper.hashCode()); 101 return result; 102 } 103 104 public boolean equals(Object obj) { 105 if (this == obj) 106 return true; 107 if (obj == null) 108 return false; 109 if (getClass() != obj.getClass()) 110 return false; 111 final Between other = (Between) obj; 112 if (columnName == null) { 113 if (other.columnName != null) 114 return false; 115 } else if (!columnName.equals(other.columnName)) 116 return false; 117 if (lower == null) { 118 if (other.lower != null) 119 return false; 120 } else if (!lower.equals(other.lower)) 121 return false; 122 if (upper == null) { 123 if (other.upper != null) 124 return false; 125 } else if (!upper.equals(other.upper)) 126 return false; 127 return true; 128 } 129 130 }