package org.appwork.storage;
import org.appwork.utils.event.DefaultEventSender;
public abstract class Storage {
private final DefaultEventSender<StorageEvent<?>> eventSender;
public Storage() {
eventSender = new DefaultEventSender<StorageEvent<?>>();
}
/**
* Removes all saved settings in this {@link Storage}.
*
* @throws StorageException
*/
abstract public void clear() throws StorageException;
abstract public void close();
public abstract long decrease(String key);
abstract public <E> E get(String key, E def) throws StorageException;
/**
* @return the eventSender
*/
public DefaultEventSender<StorageEvent<?>> getEventSender() {
return eventSender;
}
abstract public String getID();
/**
* @param key
* @return
*/
abstract public boolean hasProperty(String key);
/**
* @param string
*/
public abstract long increase(String key);
abstract public void put(String key, Boolean value) throws StorageException;
abstract public void put(String key, Byte value) throws StorageException;
abstract public void put(String key, Double value) throws StorageException;
abstract public void put(String key, Enum<?> value) throws StorageException;
abstract public void put(String key, Float value) throws StorageException;
abstract public void put(String key, Integer value) throws StorageException;
abstract public void put(String key, Long value) throws StorageException;
abstract public void put(String key, String value) throws StorageException;
/**
*
* Removes The entry. This is not the same as {@code put(key,null)}
*
* @param key
* @return the removed value
*/
public abstract Object remove(String key);
abstract public void save() throws StorageException;
}