package com.external.activeandroid.query; /* * Copyright (C) 2010 Michael Pardo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import com.external.activeandroid.util.SQLiteUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public final class Set implements Sqlable { private Update mUpdate; private String mSet; private String mWhere; private List<Object> mSetArguments; private List<Object> mWhereArguments; public Set(Update queryBase, String set) { mUpdate = queryBase; mSet = set; mSetArguments = new ArrayList<Object>(); mWhereArguments = new ArrayList<Object>(); } public Set(Update queryBase, String set, Object... args) { mUpdate = queryBase; mSet = set; mSetArguments = new ArrayList<Object>(); mWhereArguments = new ArrayList<Object>(); mSetArguments.addAll(Arrays.asList(args)); } public Set where(String where) { mWhere = where; mWhereArguments.clear(); return this; } public Set where(String where, Object... args) { mWhere = where; mWhereArguments.clear(); mWhereArguments.addAll(Arrays.asList(args)); return this; } @Override public String toSql() { String sql = ""; sql += mUpdate.toSql(); sql += "SET " + mSet + " "; if (mWhere != null) { sql += "WHERE " + mWhere + " "; } return sql; } public void execute() { SQLiteUtils.execSql(toSql(), getArguments()); } public String[] getArguments() { final int setSize = mSetArguments.size(); final int whereSize = mWhereArguments.size(); final String[] args = new String[setSize + whereSize]; for (int i = 0; i < setSize; i++) { args[i] = mSetArguments.get(i).toString(); } for (int i = 0; i < whereSize; i++) { args[i] = mWhereArguments.get(i).toString(); } return args; } }