Exemplo n.º 1
0
        public void ParsingRdfXmlStreamingDoesNotExhaustMemory()
        {
            IGraph         g            = new Graph();
            GraphHandler   graphHandler = new GraphHandler(g);
            PagingHandler  paging       = new PagingHandler(graphHandler, 1000);
            CountHandler   counter      = new CountHandler();
            ChainedHandler handler      = new ChainedHandler(new IRdfHandler[] { paging, counter });

            GZippedRdfXmlParser parser = new GZippedRdfXmlParser(RdfXmlParserMode.Streaming);

            parser.Load(handler, @"resources\oom.rdf.gz");

            Assert.False(g.IsEmpty);
            Assert.Equal(1000, counter.Count);
            // Note that the source produces some duplicate triples so triples in the graph will be at most 1000
            Assert.True(g.Triples.Count <= 1000);
        }
Exemplo n.º 2
0
        // ===============================================================================
        //                                                                          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);
            }
        }