package com.turtleplayer.persistance.source.sql.query; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * TURTLE PLAYER * <p/> * Licensed under MIT & GPL * <p/> * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE * OR OTHER DEALINGS IN THE SOFTWARE. * <p/> * More Information @ www.turtle-player.co.uk * * @author Simon Honegger (Hoene84) */ /** * Immutable */ public class WhereClause implements WhereClausePart { private List<Object> params = new ArrayList<Object>(); private final String sql; public WhereClause(WhereClauseField part) { sql = part.toSql(); params.addAll(part.getParams()); } private WhereClause(String sql, List<Object> params) { this.sql = sql; this.params = params; } public WhereClause apply(BoolOperator op, WhereClausePart part){ if(part == null) { return this; } List<Object> newParams = new ArrayList<Object>(params); newParams.addAll(part.getParams()); String newSql = " (" + sql + ") " + op + " (" + part.toSql() + ") "; return new WhereClause(newSql, newParams); } public String toSql(){ return sql; } public List<Object> getParams() { return Collections.unmodifiableList(params); } }