/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.configuration;
import java.util.List;
import java.util.Map;
/**
* A simple key-value store to persist settings of an RCE platform.
*
* @author Robert Mischke
* @author Sascha Zur
*/
public interface PersistentSettingsService {
/**
* Stores a key-value pair. If the key already exists, the old value is overwritten.
* This method uses the standard RCE persistent settings file.
*
* @param key a non-empty, non-null string that serves as an identifier; TODO define maximum
* length and allowed charset
* @param value the content for the given key in string form; if necessary, this data type may
* be relaxed to "Serializable" in the future, although storing structured data as JSON
* or XML is preferred
*/
void saveStringValue(String key, String value);
/**
* Retrieves the value for a given key. If the key does not exist, null is returned.
* This method uses the standard RCE persistent settings file.
*
* @param key a non-empty, non-null string that serves as an identifier; TODO define maximum
* length and allowed charset
* @return the data that was stored for this key, or null if the key does not exist
*/
String readStringValue(String key);
/**
* Stores a key-value pair. If the key already exists, the old value is overwritten.
* This method uses the given persistent settings file. *
* @param key a non-empty, non-null string that serves as an identifier; TODO define maximum
* length and allowed charset
* @param value the content for the given key in string form; if necessary, this data type may
* be relaxed to "Serializable" in the future, although storing structured data as JSON
* or XML is preferred
* @param filename of the file the value will be stored in
*/
void saveStringValue(String key, String value, String filename);
/**
* Retrieves the value for a given key. If the key does not exist, null is returned.
* This method uses the given persistent settings file.
*
* @param key a non-empty, non-null string that serves as an identifier; TODO define maximum
* length and allowed charset
* @param filename of the file the value will be read from
* @return the data that was stored for this key, or null if the key does not exist
*/
String readStringValue(String key, String filename);
/**
* Deletes a key and its associated data.
* This method uses the standard RCE persistent settings file.
* @param key the key to delete; passing null is not allowed
*/
void delete(String key);
/**
* Deletes a key and its associated data.
* This method uses the given persistent settings file.
*
* @param key the key to delete; passing null is not allowed
* @param filename the data to delete is stored in; passing null is not allowed
*/
void delete(String key, String filename);
/**
* Loads a map containing a List of Strings from the given file. It has to be in JSON format.
*
* @param filename : The file to load the Map from.
* @return The Map with a List of Strings
*/
Map<String, List<String>> readMapWithStringList(String filename);
/**
* The given map to the given filename in JSON format.
*
* @param map : to save
* @param filename : where to save
*/
void saveMapWithStringList(Map<String, List<String>> map, String filename);
}