1 10 package org.mmbase.storage.search.implementation; 11 12 import java.util.*; 13 import org.mmbase.storage.search.*; 14 15 35 public class ModifiableQuery implements SearchQuery { 36 37 private SearchQuery query = null; 38 39 43 private int maxNumber = -1; 44 45 49 private int offset = -1; 50 51 55 private Constraint constraint = null; 56 57 61 private List fields = null; 62 63 67 private List sortOrders = null; 68 69 73 private List steps = null; 74 75 79 private Boolean distinct = null; 80 81 85 private Boolean aggregating = null; 86 87 88 public ModifiableQuery(SearchQuery query) { 89 this.query = query; 90 } 91 92 99 public ModifiableQuery setMaxNumber(int maxNumber) { 100 this.maxNumber = maxNumber; 101 return this; 102 } 103 104 111 public ModifiableQuery setOffset(int offset) { 112 this.offset = offset; 113 return this; 114 } 115 116 123 public ModifiableQuery setConstraint(Constraint constraint) { 124 this.constraint = constraint; 125 return this; 126 } 127 128 135 public ModifiableQuery setFields(List fields) { 136 this.fields = fields; 137 return this; 138 } 139 140 147 public ModifiableQuery setSortOrders(List sortOrders) { 148 this.sortOrders = sortOrders; 149 return this; 150 } 151 152 159 public ModifiableQuery setSteps(List steps) { 160 this.steps = steps; 161 return this; 162 } 163 164 171 public ModifiableQuery setDistinct(Boolean distinct) { 172 this.distinct = distinct; 173 return this; 174 } 175 176 183 public ModifiableQuery setAggregating(Boolean aggregating) { 184 this.aggregating = aggregating; 185 return this; 186 } 187 188 public int getMaxNumber() { 190 if (maxNumber != -1) { 191 return maxNumber; 192 } else { 193 return query.getMaxNumber(); 194 } 195 } 196 197 public int getOffset() { 199 if (offset != -1) { 200 return offset; 201 } else { 202 return query.getOffset(); 203 } 204 } 205 206 public Constraint getConstraint() { 208 if (constraint != null) { 209 return constraint; 210 } else { 211 return query.getConstraint(); 212 } 213 } 214 215 public List getFields() { 217 if (fields != null) { 218 return fields; 219 } else { 220 return query.getFields(); 221 } 222 } 223 224 public List getSortOrders() { 226 if (sortOrders != null) { 227 return sortOrders; 228 } else { 229 return query.getSortOrders(); 230 } 231 } 232 233 public List getSteps() { 235 if (steps != null) { 236 return steps; 237 } else { 238 return query.getSteps(); 239 } 240 } 241 242 public boolean isDistinct() { 244 if (distinct != null) { 245 return distinct.booleanValue(); 246 } else { 247 return query.isDistinct(); 248 } 249 } 250 251 public boolean isAggregating() { 253 if (aggregating != null) { 254 return aggregating.booleanValue(); 255 } else { 256 return query.isAggregating(); 257 } 258 } 259 260 261 265 public boolean equals(Object obj) { 266 if (obj == this) { 267 return true; 268 } 269 if (obj instanceof SearchQuery) { 270 SearchQuery query = (SearchQuery) obj; 271 Constraint constraint = getConstraint(); 272 return isDistinct() == query.isDistinct() 273 && getMaxNumber() == query.getMaxNumber() 274 && getOffset() == query.getOffset() 275 && getSteps().equals(query.getSteps()) 276 && getFields().equals(query.getFields()) 277 && getSortOrders().equals(query.getSortOrders()) 278 && (constraint == null? 279 query.getConstraint() == null: 280 constraint.equals(query.getConstraint())); 281 } else { 282 return false; 283 } 284 } 285 286 290 public int hashCode() { 291 Constraint constraint = getConstraint(); 292 return (isDistinct()? 0: 101) 293 + getMaxNumber() * 17 + getOffset() * 19 294 + 23 * getSteps().hashCode() 295 + 29 * getFields().hashCode() 296 + 31 * getSortOrders().hashCode() 297 + 37 * (constraint == null ? 0 : constraint.hashCode()); 298 } 299 300 public String toString() { 302 return "ModifiableSearchQuery(distinct:" + isDistinct() 303 + ", steps:" + getSteps() 304 + ", fields:" + getFields() 305 + ", constraint:" + getConstraint() 306 + ", sortorders:" + getSortOrders() 307 + ", max:" + getMaxNumber() 308 + ", offset:" + getOffset() + ")"; 309 } 310 311 312 313 } 314 | Popular Tags |