UmlManager.java

package algorithmen.umleditor;

import java.util.*;
import java.io.*;

/**
 * Manager für alle Elemente eines UML-Diagramms.
 * Ist zuständig für alle globalen Operationen wie laden und speichern.
 * Gehorcht dem Singleton-Pattern.
 */
public class UmlManager implements Serializable {
  
  private static UmlManager theManager;
  protected List UmlElements;
  
  /** Creates a new instance of UMLManager */
  private UmlManager() {
    UmlElements = new ArrayList();
  }
  
  public static UmlManager getUmlManager() {
    if (theManager == null) {
      theManager = new UmlManager();
    }
    return theManager;
  }
  
  /**
   * fügt ein UmlElement in die Liste des UmlManagers ein.
   */
  public void addUmlElement(UmlElement o) {
    UmlElements.add(o);
  }
  
  /**
   * löscht alle UmlElements aus der Liste des UmlManagers.
   */
  public void clear() {
    UmlElements.clear();
  }
  
  /**
   * Speichert die Liste aller UmlObjekte in der Datei file.
   */
  public void save(String file) {
    try {
      ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
      out.writeObject(UmlElements);
      out.close();    // flushes output
    } catch (Exception e) {
      System.err.println("Fehler beim Speichern in " + file);
      e.printStackTrace();
    }
  }
  
  /**
   * Lädt die Liste aller UmlObjekte aus der Datei file.
   */
  public void load(String file) {
    try {
      ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
      UmlElements = (List) in.readObject();
    } catch (Exception e) {
      System.err.println("Fehler beim Laden von " + file);
      e.printStackTrace();
    }
  }
  
  
  /**
   * Liefert eine String-Darstellung eines UmlManager-Objekts.
   */
  public String toString() {
    String s = "";
    for (Iterator i = UmlElements.iterator(); i.hasNext(); ) {
      UmlElement o = (UmlElement) i.next();
      s += o + "\n";
    }
    return s;
  }
}