// Path: src/main/java/in/cubestack/android/lib/storm/core/StormRuntimeException.java
// public class StormRuntimeException extends RuntimeException {
// 
// 	private static final long serialVersionUID = -563476450614494464L;
// 
// 	
// 	public StormRuntimeException(String msg) {
// 		super(msg);
// 	}
// 
// 
// 	public StormRuntimeException(String msg, Exception ex) {
// 		super(msg, ex);
// 	}
// 	
// 	
// }
// 
// Path: src/main/java/in/cubestack/android/lib/storm/core/TableInformation.java
// public class TableInformation {
// 
// 	private Class<?> mappedClass;
// 	private int tableVersion;
// 	private String tableName;
// 	private ColumnMetaData primaryKeyData;
// 	private List<ColumnMetaData> columnMetaDataList = new LinkedList<ColumnMetaData>();
// 	private List<RelationMetaData> relations = new LinkedList<RelationMetaData>();
// 	private String alias;
// 	private LifeCycleHandler<?> handler;
// 	private String insertSql;
// 	private boolean autoGenerated;
// 
// 	public String getTableName() {
// 		return tableName;
// 	}
// 
// 	public void setTableName(String tableName) {
// 		this.tableName = tableName;
// 	}
// 
// 
// 	/**
// 	 * @return the columnMetaDataList
// 	 */
// 	public List<ColumnMetaData> getColumnMetaDataList() {
// 		return columnMetaDataList;
// 	}
// 
// 	/**
// 	 * @param primaryKeyData
// 	 *            the primaryKeyData to set
// 	 */
// 	public void setPrimaryKeyData(ColumnMetaData primaryKeyData) {
// 		this.primaryKeyData = primaryKeyData;
// 	}
// 
// 	/**
// 	 * @return the primaryKeyData
// 	 */
// 	public ColumnMetaData getPrimaryKeyData() {
// 		return primaryKeyData;
// 	}
// 
// 	public int getTableVersion() {
// 		return tableVersion;
// 	}
// 
// 	public void setTableVersion(int tableVersion) {
// 		this.tableVersion = tableVersion;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "[TableInfo {name=" + tableName + "}, {primaryKey=" + primaryKeyData.getAlias() + "/" + primaryKeyData.getColumnName() + "\n "
// 				+ "Mapped class = "  + getMappedClass() + "}]";
// 	}
// 
// 	public List<RelationMetaData> getRelations() {
// 		return relations;
// 	}
// 
// 
// 	public String getAlias() {
// 		return alias;
// 	}
// 
// 	public void setAlias(String alias) {
// 		this.alias = alias;
// 	}
// 
// 	public LifeCycleHandler<?> getHandler() {
// 		return handler;
// 	}
// 
// 	public void setHandler(LifeCycleHandler<?> class1) {
// 		this.handler = class1;
// 	}
// 
// 	public boolean isRelational() {
// 		return relations != null && !relations.isEmpty();
// 	}
// 
// 	public ColumnMetaData getColumnMetaData(String alias) {
// 
// 		if (getPrimaryKeyData().getAlias().equals(alias)) {
// 			return getPrimaryKeyData();
// 		}
// 		for (ColumnMetaData columnMetaData : getColumnMetaDataList()) {
// 			if (columnMetaData.getAlias().equals(alias)) {
// 				return columnMetaData;
// 			}
// 		}
// 		return null;
// 	}
// 
// 	public String getColumnName(String alias) {
// 		ColumnMetaData columnMetaData = getColumnMetaData(alias);
// 		if (columnMetaData != null) {
// 			return columnMetaData.getColumnName();
// 		}
// 		return null;
// 	}
// 
// 	public String getProperty(String columnNme) {
// 		if (getPrimaryKeyData().getColumnName().equals(columnNme)) {
// 			return getPrimaryKeyData().getAlias();
// 		}
// 		for (ColumnMetaData columnMetaData : getColumnMetaDataList()) {
// 			if (columnMetaData.getColumnName().equals(columnNme)) {
// 				return columnMetaData.getAlias();
// 			}
// 		}
// 		return null;
// 	}
// 
// 	public String getInsertSql() {
// 		return insertSql;
// 	}
// 
// 	public void setInsertSql(String insertSql) {
// 		this.insertSql = insertSql;
// 	}
// 
// 	public boolean isAutoGenerated() {
// 		return autoGenerated;
// 	}
// 
// 	public void setAutoGenerated(boolean autoGenerated) {
// 		this.autoGenerated = autoGenerated;
// 	}
// 
// 	public Class<?> getMappedClass() {
// 		return mappedClass;
// 	}
// 
// 	public void setMappedClass(Class<?> mappedClass) {
// 		this.mappedClass = mappedClass;
// 	}
// 
// }


import in.cubestack.android.lib.storm.core.StormRuntimeException;
import in.cubestack.android.lib.storm.core.TableInformation;
/**
 * 
 */
package in.cubestack.android.lib.storm.criteria;


/**
 * @author supal
 *
 */
public abstract class PageableRestriction implements Restriction {

	private static final String OFF_ST = " OFFSET ";

	private static final String LMT = " LIMIT ";

	private static final int PAGE_SIZE = 20;
	
	protected static final String SPACES = "  ";
	
	private TableInformation tableInfo;

	private int offset;
	private int limit;
	
	protected void validate(TableInformation tableInfo, String property) {
		this.setTableInfo(tableInfo);
		if (tableInfo.getColumnName(property) == null) {
// Path: src/main/java/in/cubestack/android/lib/storm/core/StormRuntimeException.java
// public class StormRuntimeException extends RuntimeException {
// 
// 	private static final long serialVersionUID = -563476450614494464L;
// 
// 	
// 	public StormRuntimeException(String msg) {
// 		super(msg);
// 	}
// 
// 
// 	public StormRuntimeException(String msg, Exception ex) {
// 		super(msg, ex);
// 	}
// 	
// 	
// }
// 
// Path: src/main/java/in/cubestack/android/lib/storm/core/TableInformation.java
// public class TableInformation {
// 
// 	private Class<?> mappedClass;
// 	private int tableVersion;
// 	private String tableName;
// 	private ColumnMetaData primaryKeyData;
// 	private List<ColumnMetaData> columnMetaDataList = new LinkedList<ColumnMetaData>();
// 	private List<RelationMetaData> relations = new LinkedList<RelationMetaData>();
// 	private String alias;
// 	private LifeCycleHandler<?> handler;
// 	private String insertSql;
// 	private boolean autoGenerated;
// 
// 	public String getTableName() {
// 		return tableName;
// 	}
// 
// 	public void setTableName(String tableName) {
// 		this.tableName = tableName;
// 	}
// 
// 
// 	/**
// 	 * @return the columnMetaDataList
// 	 */
// 	public List<ColumnMetaData> getColumnMetaDataList() {
// 		return columnMetaDataList;
// 	}
// 
// 	/**
// 	 * @param primaryKeyData
// 	 *            the primaryKeyData to set
// 	 */
// 	public void setPrimaryKeyData(ColumnMetaData primaryKeyData) {
// 		this.primaryKeyData = primaryKeyData;
// 	}
// 
// 	/**
// 	 * @return the primaryKeyData
// 	 */
// 	public ColumnMetaData getPrimaryKeyData() {
// 		return primaryKeyData;
// 	}
// 
// 	public int getTableVersion() {
// 		return tableVersion;
// 	}
// 
// 	public void setTableVersion(int tableVersion) {
// 		this.tableVersion = tableVersion;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "[TableInfo {name=" + tableName + "}, {primaryKey=" + primaryKeyData.getAlias() + "/" + primaryKeyData.getColumnName() + "\n "
// 				+ "Mapped class = "  + getMappedClass() + "}]";
// 	}
// 
// 	public List<RelationMetaData> getRelations() {
// 		return relations;
// 	}
// 
// 
// 	public String getAlias() {
// 		return alias;
// 	}
// 
// 	public void setAlias(String alias) {
// 		this.alias = alias;
// 	}
// 
// 	public LifeCycleHandler<?> getHandler() {
// 		return handler;
// 	}
// 
// 	public void setHandler(LifeCycleHandler<?> class1) {
// 		this.handler = class1;
// 	}
// 
// 	public boolean isRelational() {
// 		return relations != null && !relations.isEmpty();
// 	}
// 
// 	public ColumnMetaData getColumnMetaData(String alias) {
// 
// 		if (getPrimaryKeyData().getAlias().equals(alias)) {
// 			return getPrimaryKeyData();
// 		}
// 		for (ColumnMetaData columnMetaData : getColumnMetaDataList()) {
// 			if (columnMetaData.getAlias().equals(alias)) {
// 				return columnMetaData;
// 			}
// 		}
// 		return null;
// 	}
// 
// 	public String getColumnName(String alias) {
// 		ColumnMetaData columnMetaData = getColumnMetaData(alias);
// 		if (columnMetaData != null) {
// 			return columnMetaData.getColumnName();
// 		}
// 		return null;
// 	}
// 
// 	public String getProperty(String columnNme) {
// 		if (getPrimaryKeyData().getColumnName().equals(columnNme)) {
// 			return getPrimaryKeyData().getAlias();
// 		}
// 		for (ColumnMetaData columnMetaData : getColumnMetaDataList()) {
// 			if (columnMetaData.getColumnName().equals(columnNme)) {
// 				return columnMetaData.getAlias();
// 			}
// 		}
// 		return null;
// 	}
// 
// 	public String getInsertSql() {
// 		return insertSql;
// 	}
// 
// 	public void setInsertSql(String insertSql) {
// 		this.insertSql = insertSql;
// 	}
// 
// 	public boolean isAutoGenerated() {
// 		return autoGenerated;
// 	}
// 
// 	public void setAutoGenerated(boolean autoGenerated) {
// 		this.autoGenerated = autoGenerated;
// 	}
// 
// 	public Class<?> getMappedClass() {
// 		return mappedClass;
// 	}
// 
// 	public void setMappedClass(Class<?> mappedClass) {
// 		this.mappedClass = mappedClass;
// 	}
// 
// }


// Path: src/main/java/in/cubestack/android/lib/storm/criteria/PageableRestriction.java
import in.cubestack.android.lib.storm.core.StormRuntimeException;
import in.cubestack.android.lib.storm.core.TableInformation;

/**
 * 
 */
package in.cubestack.android.lib.storm.criteria;


/**
 * @author supal
 *
 */
public abstract class PageableRestriction implements Restriction {

	private static final String OFF_ST = " OFFSET ";

	private static final String LMT = " LIMIT ";

	private static final int PAGE_SIZE = 20;
	
	protected static final String SPACES = "  ";
	
	private TableInformation tableInfo;

	private int offset;
	private int limit;
	
	protected void validate(TableInformation tableInfo, String property) {
		this.setTableInfo(tableInfo);
		if (tableInfo.getColumnName(property) == null) {
			throw new StormRuntimeException(