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;
 }
Exemple #3
0
        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));
        }