protected void throwPagingCountSelectNotCountException(String path, PagingBean pmb, Type entityType, EntityDuplicatedException e) { String msg = "Look! Read the message below." + ln(); msg = msg + "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *" + ln(); msg = msg + "The count select for paging could not get a count." + ln(); msg = msg + ln(); msg = msg + "[Advice]" + ln(); msg = msg + "A select clause of OutsideSql paging should be switchable like this:" + ln(); msg = msg + "For example:" + ln(); msg = msg + " /*IF pmb.IsPaging*/" + ln(); msg = msg + " select member.MEMBER_ID" + ln(); msg = msg + " , member.MEMBER_NAME" + ln(); msg = msg + " , ..." + ln(); msg = msg + " -- ELSE select count(*)" + ln(); msg = msg + " /*END*/" + ln(); msg = msg + " from ..." + ln(); msg = msg + " where ..." + ln(); msg = msg + ln(); msg = msg + "This specificaton is for both ManualPaging and AutoPaging." + ln(); msg = msg + "(AutoPaging is only allowed to omit a paging condition)" + ln(); msg = msg + ln(); msg = msg + "[Table]" + ln() + _tableDbName + ln(); msg = msg + ln(); msg = msg + "[OutsideSql]" + ln() + path + ln(); msg = msg + ln(); msg = msg + "[ParameterBean]" + ln() + pmb + ln(); msg = msg + ln(); msg = msg + "[Entity Type]" + ln() + entityType + ln(); msg = msg + "* * * * * * * * * */"; throw new SystemException(msg, e); }
public DefaultPagingHandler(String path, PagingBean pmb, Type entityType , OutsideSqlEntityExecutor <PagingBean> countExecutor , OutsideSqlPagingExecutor pagingExecutor, String tableDbName) { this._path = path; this._pmb = pmb; this._entityType = entityType; this._countExecutor = countExecutor; this._pagingExecutor = pagingExecutor; this._tableDbName = tableDbName; }
public PagingResultBean <ENTITY> BuildPagingResultBean(PagingBean pb, int allRecordCount, IList <ENTITY> selectedList) { PagingResultBean <ENTITY> rb = new PagingResultBean <ENTITY>(); rb.TableDbName = _tableDbName; rb.AllRecordCount = allRecordCount; rb.SelectedList = selectedList; rb.OrderByClause = pb.SqlComponentOfOrderByClause; rb.CurrentPageNumber = pb.FetchPageNumber; rb.PageSize = pb.FetchSize; return(rb); }
public PagingResultBean <ENTITY> SelectPage <ENTITY>(String path, PagingBean pmb) { OutsideSqlOption countOption = _outsideSqlOption.CopyOptionWithoutPaging(); OutsideSqlEntityExecutor <PagingBean> countExecutor = new OutsideSqlEntityExecutor <PagingBean>(_outsideSqlDao, countOption); DefaultPagingHandler <ENTITY> handler = new DefaultPagingHandler <ENTITY>(path, pmb, typeof(ENTITY), countExecutor, this, _tableDbName); PagingInvoker <ENTITY> invoker = new PagingInvoker <ENTITY>(_tableDbName); if (pmb.IsCountLater) { invoker.CountLater(); } return(invoker.InvokePaging(handler)); }
// =============================================================================== // Invoke // ====== public PagingResultBean <ENTITY> InvokePaging(PagingHandler <ENTITY> handler) { AssertObjectNotNull("handler", handler); PagingBean pagingBean = handler.PagingBean; AssertObjectNotNull("handler.getPagingBean()", pagingBean); if (!pagingBean.IsFetchScopeEffective) { String msg = "The paging bean is not effective about fetch-scope!"; msg = msg + " When you select page, you should set up fetch-scope of paging bean(Should invoke fetchFirst() and fetchPage()!)."; msg = msg + " The paging bean is: " + pagingBean; throw new SystemException(msg); } int allRecordCount; IList <ENTITY> selectedList; if (_countLater) // not implemented about performance optimization { selectedList = handler.Paging(); allRecordCount = handler.Count(); } else { allRecordCount = handler.Count(); selectedList = handler.Paging(); } PagingResultBean <ENTITY> rb = new ResultBeanBuilder <ENTITY>(_tableDbName).BuildPagingResultBean(pagingBean, allRecordCount, selectedList); if (pagingBean.CanPagingReSelect && IsNecessaryToReadPageAgain(rb)) { pagingBean.FetchPage(rb.AllPageCount); int reAllRecordCount = handler.Count(); IList <ENTITY> reSelectedList = handler.Paging(); return(new ResultBeanBuilder <ENTITY>(_tableDbName).BuildPagingResultBean(pagingBean, reAllRecordCount, reSelectedList)); } else { return(rb); } }
// =============================================================================== // Select // ====== public ListResultBean <ENTITY> SelectList <ENTITY>(String path, PagingBean pmb) { IList <ENTITY> resultList = ToGenericList <ENTITY>(_outsideSqlDao.SelectList(path, pmb, _outsideSqlOption, typeof(ENTITY))); return(new ResultBeanBuilder <ENTITY>(_tableDbName).BuildListResultBean(resultList)); }