001 package biz.hammurapi.sql.syntax; 002 003 import java.io.Serializable; 004 import java.sql.PreparedStatement; 005 import java.sql.SQLException; 006 import java.util.ArrayList; 007 import java.util.Arrays; 008 import java.util.Iterator; 009 import java.util.List; 010 011 public class Or implements StatementFragment, Serializable { 012 013 private List fragments = new ArrayList(); 014 015 public Or(List fragments) { 016 this.fragments.addAll(fragments); 017 } 018 019 public Or(StatementFragment[] fragments) { 020 this.fragments.addAll(Arrays.asList(fragments)); 021 } 022 023 public Or() { 024 // Empty OR. 025 } 026 027 public void add(StatementFragment fragment) { 028 fragments.add(fragment); 029 } 030 031 public int parameterize(PreparedStatement statement, int idx) throws SQLException { 032 Iterator it = fragments.iterator(); 033 while (it.hasNext()) { 034 idx = ((StatementFragment) it.next()).parameterize(statement, idx); 035 } 036 037 return idx; 038 } 039 040 public String toSqlString() { 041 StringBuffer ret = new StringBuffer(); 042 Iterator it = fragments.iterator(); 043 while (it.hasNext()) { 044 ret.append(((StatementFragment) it.next()).toSqlString()); 045 if (it.hasNext()) { 046 ret.append(" OR "); 047 } 048 049 } 050 051 return ret.toString(); 052 } 053 054 public int hashCode() { 055 final int prime = 31; 056 int result = 1; 057 result = prime * result 058 + ((fragments == null) ? 0 : fragments.hashCode()); 059 return result; 060 } 061 062 public boolean equals(Object obj) { 063 if (this == obj) 064 return true; 065 if (obj == null) 066 return false; 067 if (getClass() != obj.getClass()) 068 return false; 069 final Or other = (Or) obj; 070 if (fragments == null) { 071 if (other.fragments != null) 072 return false; 073 } else if (!fragments.equals(other.fragments)) 074 return false; 075 return true; 076 } 077 }