package javakurs.musterloesung.uebung06;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Map;
import java.util.Observer;
import java.util.Set;

/**
 * {@link PropertiesIF} defines an interface to access properties object. This
 * is a workaround to enable us to have properties that also extend other
 * classes ({@link Observer} in our case).
 *
 * @author Joerg Steffen, DFKI
 * @version $Id: PropertiesIF.java,v 1.1 2010/12/06 18:18:46 steffen Exp $
 */
public interface PropertiesIF {

  /**
   * @see java.util.Properties#getProperty(String)
   */
  String getProperty(String key);


  /**
   * @see java.util.Properties#setProperty(String, String)
   */
  Object setProperty(String key, String value);


  /**
   * @see java.util.Properties#list(PrintStream)
   */
  void list(PrintStream out);


  /**
   * @see java.util.Properties#entrySet()
   */
  Set<Map.Entry<Object, Object>> entrySet();


  /**
   * @see java.util.Properties#isEmpty()
   */
  boolean isEmpty();


  /**
   * @see java.util.Properties#size()
   */
  int size();


  /**
   * @see java.util.Properties#loadFromXML(InputStream)
   */
  void loadFromXML(InputStream in)
      throws IOException;


  /**
   * @see java.util.Properties#storeToXML(OutputStream, String)
   */
  void storeToXML(OutputStream os, String comment)
      throws IOException;
}
