TestUmlManager.java

package algorithmen.umleditor;

/**
 * Simple test class for UmlManager
 */
public class TestUmlManager {
  
  /**
   * Creates a simple demo class
   */
  protected static Class createSampleClass() {
    Class c = new Class("Baum");
    
    // erzeuge Felder
    Field indentPrint = new Field("indentPrint", "int");
    indentPrint.setVisibility(Visibility.PRIVATE);
    indentPrint.setStatic(true);
    indentPrint.setValue("3");
    
    Field wurzel = new Field("wurzel", "BaumKnoten");
    wurzel.setVisibility(Visibility.PROTECTED);
    wurzel.setValue("null");
    
    // Felder für die Parameterlisten
    Field parMutter = new Field("nameMutter", "String");
    Field parKind = new Field("nameKind", "String");
    Field parBaumKnoten = new Field("s", "BaumKnoten");
    Field parPos = new Field("pos", "int");
    
    // erzeuge Methoden
    Method einfuegeMutter = new Method("einfuegeMutter", "boolean");
    einfuegeMutter.setVisibility(Visibility.PUBLIC);
    einfuegeMutter.addParameter(parMutter);
    einfuegeMutter.addParameter(parKind);
    
    Method einfuegeMutter2 = new Method("einfuegeMutter", "boolean");
    einfuegeMutter2.setVisibility(Visibility.PRIVATE);
    einfuegeMutter2.addParameter(parBaumKnoten);
    einfuegeMutter2.addParameter(parMutter);
    einfuegeMutter2.addParameter(parKind);
    
    Method toString = new Method("toString", "String");
    toString.setVisibility(Visibility.PUBLIC);
    
    Method toString2 = new Method("toString", "String");
    toString2.setVisibility(Visibility.PRIVATE);
    toString2.addParameter(parBaumKnoten);
    toString2.addParameter(parPos);
    
    c.addField(indentPrint);
    c.addField(wurzel);
    c.addMethod(einfuegeMutter);
    c.addMethod(einfuegeMutter2);
    c.addMethod(toString);
    c.addMethod(toString2);
    return c;
  }
  
  /**
   * Erzeugt ein einfaches Beispiel-Interface
   */
  protected static Interface createSampleInterface() {
    Interface demoInterface = new Interface("TimerListener");
    
    // Felder für die Parameterlisten
    Field parEvent1 = new Field("e", "NextStepEvent");
    Field parEvent2 = new Field("e", "RestartEvent");
    
    Method nextStep = new Method("nextStep", "void");
    nextStep.addParameter(parEvent1);
    
    Method restart = new Method("restart", "void");
    restart.addParameter(parEvent2);
    
    demoInterface.addMethod(nextStep);
    demoInterface.addMethod(restart);
    return demoInterface;
  }
  
  /**
   * Erzeugt ein Beispiel-Objekt mit zufälligen Werten
   */
  protected static int nObject = 0;
  
  protected static Object createRandomObject() {
    // erzeuge Felder fuer das Objekt
    Field xField = new Field("x", "double");
    xField.setValue("" + Math.random());
    
    Field yField = new Field("y", "double");
    yField.setValue("" + Math.random());
    
    nObject++;
    Object o = new Object("z" + nObject, "Complex");
    o.addField(xField);
    o.addField(yField);
    return o;
  }
  
  /**
   * Erzeugt einen UML-Manager mit einigen UMLObjekten.
   */
  public static UmlManager createSampleManager() {
    UmlManager theManager = UmlManager.getUmlManager();
    
    theManager.addUmlElement(createSampleClass());
    theManager.addUmlElement(createSampleInterface());
    theManager.addUmlElement(new Class());
    theManager.addUmlElement(createRandomObject());
    theManager.addUmlElement(createRandomObject());
    theManager.addUmlElement(createRandomObject());
    
    return theManager;
  }
  
  /**
   * Testprogramm für UmlManager.
   * Erzeugt UmlManager mit kleiner Liste von Objekten, gibt ihn aus 
   *    und speichert ihn.
   * Erzeugt neue Miniliste und gibt sie aus.
   * Lädt alte Liste aus der Datei und gibt sie aus.
   */
  public static void main(String[] args) {
    String file = "umltest.ser";
    
    // Demo-Liste
    UmlManager theManager = createSampleManager();
    System.out.println("Dump der Demo-Liste:");
    System.out.println("====================\n\n" + theManager);
    theManager.save(file);
    
    // einfache Liste
    theManager.clear();
    theManager.addUmlElement(new Object());
    theManager.addUmlElement(createRandomObject());   
    theManager.addUmlElement(new Interface());
    System.out.println("\nDump der Simple-Liste:");
    System.out.println("======================\n\n" + theManager);
    
    // Liste einladen
    theManager.load(file);
    System.out.println("\nDump der eingelesenen Liste:");
    System.out.println("============================\n\n" + theManager);
  }
}