// Path: src/src/com/orm/androrm/statement/Statement.java
// public class Statement {
// 	
// 	/**
// 	 * Key of the statement.
// 	 */
// 	protected String mKey;
// 	/**
// 	 * Key of the statement.
// 	 */
// 	protected String mOperator;
// 	/**
// 	 * Value of the statement.
// 	 */
// 	protected String mValue;
// 	
// 	/**
// 	 * Empty constructor.
// 	 */
// 	public Statement() {}
// 	
// 	public Statement(String key, int value) {
// 		mKey = key;
// 		mOperator = "=";
// 		mValue = String.valueOf(value);
// 	}
// 
// 	public Statement(String key, String operator, int value) {
// 		mKey = key;
// 		mOperator = operator;
// 		mValue = String.valueOf(value);
// 	}
// 	
// 	/**
// 	 * This constructor sets the key and value field of this 
// 	 * statement.
// 	 * 
// 	 * @param key Database column.
// 	 * @param value Expected value of this column.
// 	 */
// 	public Statement(String key, String value) {
// 		mKey = key;
// 		mOperator = "=";
// 		mValue = value;
// 	}
// 
// 	public Statement(String key, String operator, String value) {
// 		mKey = key;
// 		mOperator = operator;
// 		mValue = value;
// 	}
// 	
// 	/**
// 	 * Get all keys that are used in this statement.
// 	 * 
// 	 * @return All keys i.e. the affected database columns.
// 	 */
// 	public Set<String> getKeys() {
// 		Set<String> keys = new HashSet<String>();
// 		keys.add(mKey);
// 		
// 		return keys;
// 	}
// 	
// 	public void setKey(String key) {
// 		mKey = key;
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return mKey + " " + mOperator + " '" + mValue + "'";
// 	}
// }


import com.orm.androrm.statement.Statement;
/**
 * 	Copyright (c) 2010 Philipp Giese
 * 
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * 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.
 */
package com.orm.androrm;


/**
 * A {@link Rule} is used by {@link Filter Filter Sets}
 * to create complex queries on the database. Each filter consists
 * of a certain key leading to the field is applied to and 
 * the {@link Statement}, that will be used for the query. 
 * 
 * @author Philipp Giese
 */
public class Rule {

	/**
	 * The key leads to the field this filter
	 * is applied on. This can be the plain name
	 * of a field like "mName" or a series of 
	 * field names like "mSupplier__mBranches__mName".
	 */
	private String mKey; 
	/**
	 * The statement of a field is only valid for the
	 * last field name in {@link Rule#mKey}. 
	 */
// Path: src/src/com/orm/androrm/statement/Statement.java
// public class Statement {
// 	
// 	/**
// 	 * Key of the statement.
// 	 */
// 	protected String mKey;
// 	/**
// 	 * Key of the statement.
// 	 */
// 	protected String mOperator;
// 	/**
// 	 * Value of the statement.
// 	 */
// 	protected String mValue;
// 	
// 	/**
// 	 * Empty constructor.
// 	 */
// 	public Statement() {}
// 	
// 	public Statement(String key, int value) {
// 		mKey = key;
// 		mOperator = "=";
// 		mValue = String.valueOf(value);
// 	}
// 
// 	public Statement(String key, String operator, int value) {
// 		mKey = key;
// 		mOperator = operator;
// 		mValue = String.valueOf(value);
// 	}
// 	
// 	/**
// 	 * This constructor sets the key and value field of this 
// 	 * statement.
// 	 * 
// 	 * @param key Database column.
// 	 * @param value Expected value of this column.
// 	 */
// 	public Statement(String key, String value) {
// 		mKey = key;
// 		mOperator = "=";
// 		mValue = value;
// 	}
// 
// 	public Statement(String key, String operator, String value) {
// 		mKey = key;
// 		mOperator = operator;
// 		mValue = value;
// 	}
// 	
// 	/**
// 	 * Get all keys that are used in this statement.
// 	 * 
// 	 * @return All keys i.e. the affected database columns.
// 	 */
// 	public Set<String> getKeys() {
// 		Set<String> keys = new HashSet<String>();
// 		keys.add(mKey);
// 		
// 		return keys;
// 	}
// 	
// 	public void setKey(String key) {
// 		mKey = key;
// 	}
// 	
// 	@Override
// 	public String toString() {
// 		return mKey + " " + mOperator + " '" + mValue + "'";
// 	}
// }


// Path: src/src/com/orm/androrm/Rule.java
import com.orm.androrm.statement.Statement;

/**
 * 	Copyright (c) 2010 Philipp Giese
 * 
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * 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.
 */
package com.orm.androrm;


/**
 * A {@link Rule} is used by {@link Filter Filter Sets}
 * to create complex queries on the database. Each filter consists
 * of a certain key leading to the field is applied to and 
 * the {@link Statement}, that will be used for the query. 
 * 
 * @author Philipp Giese
 */
public class Rule {

	/**
	 * The key leads to the field this filter
	 * is applied on. This can be the plain name
	 * of a field like "mName" or a series of 
	 * field names like "mSupplier__mBranches__mName".
	 */
	private String mKey; 
	/**
	 * The statement of a field is only valid for the
	 * last field name in {@link Rule#mKey}. 
	 */
	private Statement mStatement;