package comp314.interfaces;
import java.util.ArrayList;
/** Data Store Interface.
*
* @author David Goodwin
*/
public interface IDataStore {
/** This loads the DataStore from a specified repository.
* @param location The location of the DataStore
* repository
*/
void load(String location);
/** This saves anything required. Up to the
* implementation.
*
*/
void save();
/** Gets the item with the specified number. Gaps
* are to be handled by implementation in a
* transparent way.
* @param number The item number to get
* @return The specified item
*/
IDataItem getItem(int number);
/** Adds the specified DataItem to the DataStore.
* This should fill the first available gap if the
* implementation allows gaps. Otherwise it should
* be added at count+1
* @param theItem the Item to add
* @throws Exception
*/
void addItem(IDataItem theItem);
/** Removes the specified item from the DataStore.
* This may either create a gap or cause every
* item after the specified number to be
* renumbered. This is up to the implementation.
* @param number The item number to remove
*/
void removeItem(int number);
/** Returns the number of DataItems in the
* repository.
* @return The number of items in the DataStore.
*/
int getItemCount();
/**
* Checks if a word exists in the datastore and if so return the index.
* If it doesnt exist return -1.
* @param key The word to find.
* @return The index of the word.
*/
IDataItem exists(String key);
/**
*
* @return List of all the unique words in teh store.
*/
ArrayList<String> listWords();
}