/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.tdb.index.bplustree; import java.util.Iterator ; import java.util.List ; import org.apache.jena.atlas.iterator.Iter ; import org.apache.jena.atlas.lib.Pair ; import org.apache.jena.tdb.base.record.Record ; import org.apache.jena.tdb.base.recordbuffer.RecordBufferPage ; import org.apache.jena.tdb.base.recordbuffer.RecordBufferPageMgr ; class BPlusTreeRewriterUtils { static String divider = "----------------------------------------" ; static String nextDivider = null ; static Iterator<Pair<Integer, Record>> summarizeDataBlocks(Iterator<Pair<Integer, Record>> iter, RecordBufferPageMgr recordPageMgr) { divider() ; List<Pair<Integer, Record>> x = Iter.toList(iter) ; for (Pair<Integer, Record> pair : x ) { RecordBufferPage rbp = recordPageMgr.getRead(pair.car()) ; System.out.printf("%s -- RecordBufferPage[id=%d,link=%d] (%d) -> [%s]\n", pair, rbp.getId(), rbp.getLink(), rbp.getCount(), rbp.getRecordBuffer().getHigh() ) ; recordPageMgr.release(rbp) ; } return x.iterator() ; } static Iterator<Pair<Integer, Record>> summarizeIndexBlocks(Iterator<Pair<Integer, Record>> iter2, BPTreeNodeMgr bptNodeMgr) { divider() ; List<Pair<Integer, Record>> x = Iter.toList(iter2) ; for (Pair<Integer, Record> pair : x ) { BPTreeNode bpNode = bptNodeMgr.getRead(pair.car(), BPlusTreeParams.RootParent) ; String hr = "null" ; if ( ! bpNode.getRecordBuffer().isEmpty() ) hr = bpNode.getRecordBuffer().getHigh().toString() ; System.out.printf("%s -- BPTreeNode: %d (%d) -> [%s]\n", pair, bpNode.getId(), bpNode.getCount(), hr) ; bptNodeMgr.release(bpNode) ; } return x.iterator() ; } private static Iterator<Pair<Integer, Record>> printDataBlocks(Iterator<Pair<Integer, Record>> iter, RecordBufferPageMgr recordPageMgr) { divider() ; List<Pair<Integer, Record>> x = Iter.toList(iter) ; System.out.printf(">>Packed data blocks\n") ; for (Pair<Integer, Record> pair : x ) { System.out.printf(" %s\n",pair) ; RecordBufferPage rbp = recordPageMgr.getRead(pair.car()) ; //System.out.printf("RecordBufferPage[id=%d,link=%d] %d\n", rbp.getId(), rbp.getLink(), rbp.getCount() ) ; System.out.println(rbp) ; recordPageMgr.release(rbp) ; } System.out.printf("<<Packed data blocks\n") ; System.out.printf("Blocks: %d\n", x.size()) ; return x.iterator() ; } static Iterator<Pair<Integer, Record>> printIndexBlocks(Iterator<Pair<Integer, Record>> iter2, BPTreeNodeMgr bptNodeMgr) { divider() ; List<Pair<Integer, Record>> x = Iter.toList(iter2) ; System.out.printf(">>Packed index blocks\n") ; for (Pair<Integer, Record> pair : x ) { System.out.printf(" %s\n",pair) ; BPTreeNode bpNode = bptNodeMgr.getRead(pair.car(), BPlusTreeParams.RootParent) ; bpNode.setIsLeaf(true) ; System.out.printf("BPTreeNode: %d\n", bpNode.getId()) ; System.out.println(bpNode) ; bptNodeMgr.release(bpNode) ; } System.out.printf("<<Packed index blocks\n") ; return x.iterator() ; } static void divider() { if ( nextDivider != null ) System.out.println(nextDivider) ; nextDivider = divider ; } }