package org.hivedb.meta.directory;
import org.hivedb.meta.Node;
import org.hivedb.meta.Resource;
import org.hivedb.meta.SecondaryIndex;
import java.util.Collection;
import java.util.Map;
public interface Directory {
boolean doesPrimaryIndexKeyExist(Object primaryIndexKey);
Collection<KeySemaphore> getKeySemamphoresOfPrimaryIndexKey(Object primaryIndexKey);
void deletePrimaryIndexKey(Object primaryIndexKey);
Collection<KeySemaphore> getKeySemaphoresOfResourceId(Resource resource, Object id);
void deleteResourceId(Resource resource, Object id);
boolean doesSecondaryIndexKeyExist(SecondaryIndex index, Object secondaryIndexKey, Object resourceId);
void deleteSecondaryIndexKey(SecondaryIndex index, Object secondaryIndexKey, Object resourceId);
boolean doesResourceIdExist(Resource resource, Object resourceId);
Collection<KeySemaphore> getKeySemaphoresOfSecondaryIndexKey(SecondaryIndex secondaryIndex, Object secondaryIndexKey);
Object insertPrimaryIndexKey(Node node, Object primaryIndexKey);
Object insertResourceId(Resource resource, Object id, Object primaryIndexKey);
Object insertSecondaryIndexKey(SecondaryIndex secondaryIndex, Object secondaryIndexKey, Object resourceId);
Object updatePrimaryIndexKeyOfResourceId(Resource r, Object resourceId, Object newPrimaryIndexKey);
Object updatePrimaryIndexKeyReadOnly(Object primaryIndexKey, boolean readOnly);
Object getPrimaryIndexKeyOfResourceId(Resource resource, Object resourceId);
void deleteSecondaryIndexKeys(Map<SecondaryIndex, Collection<Object>> secondaryIndexValueMap, Object resourceId);
Object insertSecondaryIndexKeys(Map<SecondaryIndex, Collection<Object>> secondaryIndexValueMap, Object resourceId);
Collection getSecondaryIndexKeysOfResourceId(SecondaryIndex secondaryIndex, Object id);
}