view src/org/dancres/blitz/entry/ci/CacheLine.java @ 0:3dc0c5604566

Initial checkin of blitz 2.0 fcs - no installer yet.
author Dan Creswell <dan.creswell@gmail.com>
date Sat, 21 Mar 2009 11:00:06 +0000
parents
children
line wrap: on
line source

package org.dancres.blitz.entry.ci;

import java.util.Set;
import java.util.HashSet;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import org.dancres.blitz.oid.OID;

import org.dancres.blitz.entry.TupleLocator;
import org.dancres.blitz.entry.EntrySleeve;

/**
   Maintains a list of all entries with the same hashcode for a particular
   field.
 */
class CacheLine {
    private Set theIds = new HashSet();

    TupleLocator getLocator() {
        if (theIds.size() == 0)
            return ArrayLocatorImpl.EMPTY_LOCATOR;
        else
            return new CacheLineLocatorImpl(getIdList(), this);
    }

    private Object[] getIdList() {
        Object[] myIds = new Object[theIds.size()];
        theIds.toArray(myIds);

        return myIds;
    }

    void insert(EntrySleeve aSleeve) {
        theIds.add(aSleeve.getOID());
    }

    void remove(EntrySleeve aSleeve) {
        theIds.remove(aSleeve.getOID());
    }

    int getSize() {
        return theIds.size();
    }
}