/**
  *
  * Programmieraufgabe P-18 (MergeSortTest.java)
  *
  * @author Leonhard Fellermayr
  * @version 1.0
  *
  */

/** Benoetigtes Package: der Comparator zum Vergleichen von Daten */

import java.util.Comparator;

/** Implementierung der Klasse MergeSortTest. */

public class MergeSortTest
{

    /******************************************************************************************
      * main (String[]) : main-Methode der Klasse.
      *
      * @param args Dieses Programm wertet keine Kommandozeilenparameter aus
      * @return void
      *
      **/

    public static void main (String[] args)
    {

	/** Stringvergleich - implementiert abstrakte Klasse Comparator */

	class StringComp implements Comparator
	{
	   public int compare(Object o1, Object o2)
	   {
	      return ((String)o2).compareTo((String)o1);
	   }
	}

	/** Instantiiere obigen String-Comparator */

	StringComp c            = new StringComp ();

	/** Ein (unsortierter) Teststring */

	Object[]   testString   = { "Schluesseldienst",
				    "Martin",
				    "Informatik",
				    "Hoare-Logik",
				    "Theresienstrasse",
				    "Hochschulwahlen",
				    "Rivest",
				    "Netbeans",
				    "BNF-Grammatik",
				    "Adleman" };

	/** Instantiiere ein MergeSort-Objekt */

	MergeSort ms = new MergeSort ();

	/** Gib die unsortierten  Arrayelemente mit Hilfe von arrayToStr () aus */

	System.out.println ("Vorher:   " + arrayToStr (testString));

	/** Jetzt sortieren */

	ms.sortieren (testString, c);

	/** Gib die sortierten Arrayelemente mit Hilfe von arrayToStr () aus */

	System.out.println ("Sortiert: " + arrayToStr (testString));

    } // main ()

   /******************************************************************************************
      * arrayToStr (Object[]) : Gibt die Elemente eines Arrays als langen String zurueck.
      * Die Elemente werden dabei mit Komma getrennt.
      *
      * @param o Das Eingabearray, dessen Elemente im String landen
      * @return Der konvertierte String
      *
      **/

    private static String arrayToStr (Object[] o)
    {

	/** @param ret Rueckgabewert (String) */
	String ret = "";

	for (int k = 0; k < o.length; k++)
	{
		ret += o[k];
		if (k < o.length - 1) ret += ",";
	}

	return ret;

    } // arrayToStr ()

} // Klasse MergeSortTest
