/* ************************************************************************ # # DivConq # # http://divconq.com/ # # Copyright: # Copyright 2012 eTimeline, LLC. All rights reserved. # # License: # See the license.txt file in the project's top-level directory for details. # # Authors: # * Andy White # ************************************************************************ */ package divconq.db.query; import org.joda.time.DateTime; import divconq.db.DataRequest; import divconq.lang.BigDateTime; import divconq.struct.RecordStruct; public class SelectRequest extends DataRequest { public long getOffset() { return ((RecordStruct)this.parameters).hasField("Offset") ? ((RecordStruct)this.parameters).getFieldAsInteger("Offset") : 0; } public void setOffset(long v) { ((RecordStruct)this.parameters).setField("Offset", v); } public long getPageSize() { return ((RecordStruct)this.parameters).hasField("PageSize") ? ((RecordStruct)this.parameters).getFieldAsInteger("PageSize") : 100; } public void setPageSize(long v) { ((RecordStruct)this.parameters).setField("PageSize", v); } public boolean isCacheEnabled() { return ((RecordStruct)this.parameters).hasField("CacheEnabled") ? ((RecordStruct)this.parameters).getFieldAsBoolean("CacheEnabled") : false; } public void setCacheEnabled(boolean v) { ((RecordStruct)this.parameters).setField("CacheEnabled", v); } public long getCacheId() { return ((RecordStruct)this.parameters).hasField("CacheId") ? ((RecordStruct)this.parameters).getFieldAsInteger("CacheId") : null; } public void setCacheId(long v) { ((RecordStruct)this.parameters).setField("CacheEnabled", true); ((RecordStruct)this.parameters).setField("CacheId", v); } public void setHistorical(boolean v) { ((RecordStruct)this.parameters).setField("Historical", v); } public SelectRequest(String table, SelectFields select) { this(table, select, null, null, null, (BigDateTime)null); } public SelectRequest(String table, SelectFields select, OrderFields order) { this(table, select, order, null, null, (BigDateTime)null); } public SelectRequest(String table, SelectFields select, WhereExpression where) { this(table, select, null, where, null, (BigDateTime)null); } public SelectRequest(String table, SelectFields select, OrderFields order, WhereExpression where) { this(table, select, order, where, null, (BigDateTime)null); } public SelectRequest(String table, SelectFields select, OrderFields order, WhereExpression where, ICollector collector) { this(table, select, order, where, collector, (BigDateTime)null); } public SelectRequest(String table, SelectFields select, OrderFields order, WhereExpression where, BigDateTime when) { this(table, select, order, where, null, when); } public SelectRequest(String table, SelectFields select, OrderFields order, WhereExpression where, DateTime when) { this(table, select, order, where, null, (when != null) ? new BigDateTime(when) : null); } public SelectRequest(String table, SelectFields select, OrderFields order, WhereExpression where, ICollector collector, DateTime when) { this(table, select, order, where, collector, (when != null) ? new BigDateTime(when) : null); } public SelectRequest(String table, SelectFields select, OrderFields order, WhereExpression where, ICollector collector, BigDateTime when) { super("dcSelect"); RecordStruct params = new RecordStruct(); this.parameters = params; params.setField("Table", table); if (select != null) params.setField("Select", select.getFields()); if (order != null) params.setField("Order", order.getFields()); if (where != null) params.setField("Where", where.getFields()); if (collector != null) params.setField("Collector", collector.getParams()); if (when != null) params.setField("When", when); else params.setField("When", new BigDateTime(new DateTime())); } public void nextPage() { if (!this.isCacheEnabled()) return; long newoffset = this.getOffset() + this.getPageSize(); this.setOffset(newoffset); } public void prevPage() { if (!this.isCacheEnabled()) return; long newoffset = this.getOffset() - this.getPageSize(); if (newoffset < 0) newoffset = 0; this.setOffset(newoffset); } /* @Override public void process(DatabaseResult result) { super.process(result); if (result instanceof ObjectResult) { ObjectResult or = (ObjectResult)result; RecordStruct res = (RecordStruct) or.getResult(); if (res != null) { this.setPageSize(res.getFieldAsInteger("PageSize")); this.setOffset(res.getFieldAsInteger("Offset")); this.setCacheId(res.getFieldAsInteger("CacheId")); this.total = res.getFieldAsInteger("Total"); this.data = res.getFieldAsList("Data"); } } } */ }