Package org.apache.activemq.kaha.impl.index

Examples of org.apache.activemq.kaha.impl.index.IndexItem


     *      java.lang.Object)
     */
    public synchronized Object put(Object key,Object value){
        load();
        Object result=remove(key);;
        IndexItem item=write(key,value);
        indexMap.put(key,item);
        indexList.add(item);
        return result;
    }
View Full Code Here


     * @see org.apache.activemq.kaha.MapContainer#remove(java.lang.Object)
     */
    public synchronized Object remove(Object key){
        load();
        Object result=null;
        IndexItem item=(IndexItem)indexMap.get(key);
        if(item!=null){
            //refresh the index
            item = (IndexItem)indexList.refreshEntry(item);
            indexMap.remove(key);
            result=getValue(item);
            IndexItem prev=indexList.getPrevEntry(item);
            IndexItem next=indexList.getNextEntry(item);
            indexList.remove(item);
            delete(item,prev,next);
        }
        return result;
    }
View Full Code Here

    public synchronized boolean removeValue(Object o){
        load();
        boolean result=false;
        if(o!=null){
            IndexItem item=indexList.getFirst();
            while(item!=null){
                Object value=getValue(item);
                if(value!=null&&value.equals(o)){
                    result=true;
                    // find the key
View Full Code Here

    public StoreEntry place(Object key, Object value) {
        load();
        if(indexMap.containsKey(key)){
            remove(key);
        }
        IndexItem item=write(key,value);
        indexMap.put(key,item);
        indexList.add(item);
        return item;
    }
View Full Code Here

     * Remove an Entry from ther Map
     * @param entry
     */
    public void remove(StoreEntry entry) {
        load();
        IndexItem item=(IndexItem)entry;
        if(item!=null){
           
            Object key = getKey(item);
            indexMap.remove(key);
            IndexItem prev=indexList.getPrevEntry(item);
            IndexItem next=indexList.getNextEntry(item);
            indexList.remove(item);
            delete(item,prev,next);
        }
    }
View Full Code Here

    protected IndexLinkedList getItemList(){
        return indexList;
    }

    protected IndexItem write(Object key,Object value){
        IndexItem index=null;
        try{
            if(key!=null){
                index=indexManager.createNewIndex();
                StoreLocation data=dataManager.storeDataItem(keyMarshaller,key);
                index.setKeyData(data);
            }
            if(value!=null){
                StoreLocation data=dataManager.storeDataItem(valueMarshaller,value);
                index.setValueData(data);
            }
            IndexItem prev=indexList.getLast();
            prev=prev!=null?prev:indexList.getRoot();
            IndexItem next=indexList.getNextEntry(prev);
            prev.setNextItem(index.getOffset());
            index.setPreviousItem(prev.getOffset());
            updateIndexes(prev);
            if(next!=null){
                next.setPreviousItem(index.getOffset());
                index.setNextItem(next.getOffset());
                updateIndexes(next);
            }
            storeIndex(index);
        }catch(IOException e){
            log.error("Failed to write "+key+" , "+value,e);
View Full Code Here

        containerId.setDataContainerName(containerName);
        MapContainerImpl result=(MapContainerImpl)maps.get(containerId);
        if(result==null){
            DataManager dm=getDataManager(containerName);
            IndexManager im=getIndexManager(dm,containerName);
            IndexItem root=mapsContainer.getRoot(im,containerId);
            if(root==null){
                root=mapsContainer.addRoot(im,containerId);
            }
            result=new MapContainerImpl(containerId,root,im,dm,indexType);
            maps.put(containerId,result);
View Full Code Here

        ListContainerImpl result=(ListContainerImpl)lists.get(containerId);
        if(result==null){
            DataManager dm=getDataManager(containerName);
            IndexManager im=getIndexManager(dm,containerName);
           
            IndexItem root=listsContainer.getRoot(im,containerId);
            if(root==null){
                root=listsContainer.addRoot(im,containerId);
            }
            result=new ListContainerImpl(containerId,root,im,dm,indexType);
            lists.put(containerId,result);
View Full Code Here

        if(!initialized){
            initialized=true;
            log.info("Kaha Store using data directory "+directory);
            DataManager defaultDM=getDataManager(DEFAULT_CONTAINER_NAME);
            rootIndexManager=getIndexManager(defaultDM,DEFAULT_CONTAINER_NAME);
            IndexItem mapRoot=new IndexItem();
            IndexItem listRoot=new IndexItem();
            if(rootIndexManager.isEmpty()){
                mapRoot.setOffset(0);
                rootIndexManager.storeIndex(mapRoot);
                listRoot.setOffset(IndexItem.INDEX_SIZE);
                rootIndexManager.storeIndex(listRoot);
                rootIndexManager.setLength(IndexItem.INDEX_SIZE*2);
            }else{
                mapRoot=rootIndexManager.getIndex(0);
                listRoot=rootIndexManager.getIndex(IndexItem.INDEX_SIZE);
View Full Code Here

    private void generateInterestInListDataFiles() throws IOException {
        for (Iterator i = listsContainer.getKeys().iterator(); i.hasNext();) {
            ContainerId id = (ContainerId)i.next();
            DataManager dm = getDataManager(id.getDataContainerName());
            IndexManager im = getIndexManager(dm,id.getDataContainerName());
            IndexItem theRoot=listsContainer.getRoot(im,id);
            long nextItem=theRoot.getNextItem();
            while(nextItem!=Item.POSITION_NOT_SET){
                IndexItem item=im.getIndex(nextItem);
                item.setOffset(nextItem);
                dm.addInterestInFile(item.getKeyFile());
                dm.addInterestInFile(item.getValueFile());
                nextItem=item.getNextItem();
            }
           
        }
    }
View Full Code Here

TOP

Related Classes of org.apache.activemq.kaha.impl.index.IndexItem

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.