de.bsvrz.sys.funclib.commandLineArgs
Class ArgumentList

java.lang.Object
  extended by de.bsvrz.sys.funclib.commandLineArgs.ArgumentList

public class ArgumentList
extends Object

Klasse zum Zugriff auf die Aufrufargumente einer Applikation. Eine Applikation bekommt die Aufrufargumente von der Laufzeitumgebung in einem String-Array als Parameter der main-Funktion übergeben. Dieses String-Array wird dem Konstruktor dieser Klasse übergeben. Mit der Methode fetchArgument(java.lang.String) kann auf die einzelnen Argumente zugegriffen werden. Beim Zugriff auf ein Argument wird der entsprechende Eintrag im String-Array auf null gesetzt. Nach dem Zugriff auf alle von einer Applikation unterstützten Argumente kann mit der Methode ensureAllArgumentsUsed() sichergestellt werden, daß alle angegebenen Argumente verwendet wurden.

Author:
Kappich Systemberatung

Nested Class Summary
static class ArgumentList.Argument
          Klasse zum Zugriff auf Name und Wert eines Aufrufarguments.
static class ArgumentList.ValueCase
           
static class ArgumentList.ValueSelection
           
 
Constructor Summary
ArgumentList(String[] argumentStrings)
          Erzeugt eine neue Argumentliste und initialisiert diese mit den übergebenen Aufrufargumenten der Applikation.
 
Method Summary
 void ensureAllArgumentsUsed()
          Diese Methode stellt sicher, daß alle Argumente interpretiert wurden.
 ArgumentList.Argument fetchArgument(String nameAndOptionalDefault)
          Liefert ein bestimmtes Argument zurück und setzt es im String-Array, das beim Konstruktor übergeben wurde, auf null.
 ArgumentList.Argument fetchNextArgument()
          Liefert das erste noch nicht interpretierte Argument zurück und setzt es im String-Array, das beim Konstruktor übergeben wurde, auf null.
 ArgumentList.Argument[] fetchUnusedArguments()
          Liefert ein Feld mit den noch nicht ausgewerteten Argumenten der Aufrufliste zurück und setzt die entsprechenden Einträge im String-Array, das beim Konstruktor übergeben wurde, auf null.
 String[] getArgumentStrings()
          Liefert das String-Array mit den noch nicht interpretierten Aufrufargumenten der Applikation zurück.
 String[] getInitialArgumentStrings()
          Liefert das String-Array mit den initialen Aufrufargumenten der Applikation zurück.
 String getNextArgumentName()
          Liefert den Namen des nächsten noch nicht interpretierten Arguments zurück.
 int getUnusedArgumentCount()
          Bestimmt die Anzahl der in der Argumentliste noch vorhandenen und nicht ausgewerteten Argumente.
 boolean hasArgument(String name)
          Prüft, ob ein bestimmtes Argument vorhanden ist und noch nicht interpretiert wurde.
 boolean hasUnusedArguments()
          Bestimmt, ob in der Argumentliste noch Argumente exististieren, die noch nicht ausgewertet wurden.
static void main(String[] args)
          Hauptfunktion zum Test einzelner Methoden
 String toString()
          Liefert eine textuelle Beschreibung dieser Argumentliste mit den initialen Argumenten zurück.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ArgumentList

public ArgumentList(String[] argumentStrings)
Erzeugt eine neue Argumentliste und initialisiert diese mit den übergebenen Aufrufargumenten der Applikation. Einzelne Argumente, die von der Applikation bereits interpretiert wurden, sollten vorher auf den Wert null gesetzt werden, damit sie nicht nochmal interpretiert werden.

Parameters:
argumentStrings - String-Array, das die Aufrufargumente enthält, die der Applikation beim Aufruf der main-Funktion übergeben werden.
Method Detail

fetchArgument

public ArgumentList.Argument fetchArgument(String nameAndOptionalDefault)
Liefert ein bestimmtes Argument zurück und setzt es im String-Array, das beim Konstruktor übergeben wurde, auf null. Im übergebenen Parameter der Funktion wird der Name des Arguments und bei Bedarf (durch ein Gleich-Zeichen getrennt) ein Default-Wert angegeben. Die Aufrufargumente müssen dem Format "argumentName=argumentWert" entsprechen: Beim Zugriff auf ein Argument muss der Argument-Name angegeben werden. Ergebnis des Zugriffs ist ein Objekt der Klasse ArgumentList.Argument über das der Wert des Arguments abgefragt werden kann. Wenn das gewünschte Argument in der Argumentliste gefunden wurde, wird der entsprechende Eintrag im String-Array, das dem Konstruktor übergeben wurde, auf den Wert null gesetzt. Wenn auf ein Argument zugegriffen wird, das in der Argumentlist nicht mehr vorhanden ist, weil es bereits vorher interpretiert wurde, dann wird der entsprechende Wert aus der initialen Argumentliste erneut zurückgegeben. Wenn auf ein Argument zugegriffen wird, das in der initialen Argumentliste nicht vorhanden ist, wird als Wert der Default-Wert benutzt, wenn dieser im Parameter der Methode (durch ein Gleichzeichen vom Argumentnamen getrennt) angegeben wurde. Wenn das gewünschte Argument nicht in der Argumentliste enthalten ist und kein Default-Wert angegeben wurde, wird eine Ausnahme generiert.

Parameters:
nameAndOptionalDefault - Name des gewünschten Arguments und optional durch ein Gleichzeichen getrennt der Default-Wert des Arguments.
Returns:
Ein Argument-Objekt über das mit verschiedenen Methoden auf den Wert des Arguments zugegriffen werden kann.
Throws:
IllegalArgumentException - Wenn kein Wert für das gewünschte Argument ermittelt werden konnte.

hasArgument

public boolean hasArgument(String name)
Prüft, ob ein bestimmtes Argument vorhanden ist und noch nicht interpretiert wurde.

Parameters:
name - Name des gesuchten Arguments.
Returns:
true Wenn das gesuchte Argument in der Argumentliste enthalten ist und noch nicht interpretiert wurde, sonst false.

ensureAllArgumentsUsed

public void ensureAllArgumentsUsed()
Diese Methode stellt sicher, daß alle Argumente interpretiert wurden.

Throws:
IllegalStateException - Wenn in der Argumentliste noch nicht ausgewertete Argumente enthalten sind.

hasUnusedArguments

public boolean hasUnusedArguments()
Bestimmt, ob in der Argumentliste noch Argumente exististieren, die noch nicht ausgewertet wurden.

Returns:
true, falls weitere Argumente existieren; false, falls alle Argumente ausgewertet wurden.

getNextArgumentName

public String getNextArgumentName()
Liefert den Namen des nächsten noch nicht interpretierten Arguments zurück.

Returns:
Name des nächsten noch nicht interpretierten Arguments.
Throws:
IllegalStateException - Wenn bereits alle Argumente interpretiert wurden.

fetchNextArgument

public ArgumentList.Argument fetchNextArgument()
Liefert das erste noch nicht interpretierte Argument zurück und setzt es im String-Array, das beim Konstruktor übergeben wurde, auf null. Die Aufrufargumente müssen dem Format "argumentName=argumentWert" entsprechen: Beim Zugriff auf ein Argument muss der Argument-Name angegeben werden. Ergebnis des Zugriffs ist ein Objekt der Klasse ArgumentList.Argument über das der Wert des Arguments abgefragt werden kann. Für Argumente die kein Gleichzeichen mit folgendem argumentWert enthalten, wird als Wert der Text "wahr" angenommen. Der entsprechende Eintrag im String-Array, das dem Konstruktor übergeben wurde, wird auf den Wert null gesetzt. Wenn in der Argumentliste kein Argument mehr enthalten war, wird eine Ausnahme generiert.

Returns:
Ein Argument-Objekt über das mit verschiedenen Methoden auf den Wert des Arguments zugegriffen werden kann.
Throws:
IllegalStateException - Wenn bereits alle Argumente interpretiert wurden.

getUnusedArgumentCount

public int getUnusedArgumentCount()
Bestimmt die Anzahl der in der Argumentliste noch vorhandenen und nicht ausgewerteten Argumente.

Returns:
Anzahl noch nicht ausgewerteten Argumente in der Argumentliste.

fetchUnusedArguments

public ArgumentList.Argument[] fetchUnusedArguments()
Liefert ein Feld mit den noch nicht ausgewerteten Argumenten der Aufrufliste zurück und setzt die entsprechenden Einträge im String-Array, das beim Konstruktor übergeben wurde, auf null.

Returns:
Feld mit Argument-Objekten der noch nicht ausgewerteten Argumente.

main

public static void main(String[] args)
Hauptfunktion zum Test einzelner Methoden


getArgumentStrings

public String[] getArgumentStrings()
Liefert das String-Array mit den noch nicht interpretierten Aufrufargumenten der Applikation zurück. Das zurückgegebene Objekt ist das selbe Objekt mit dem der Konstruktor aufgerufen wurde, allerdings ist zu beachten, dass die Elemente des Arrays, die bereits mit den Methoden fetchArgument(java.lang.String) bzw. fetchNextArgument() interpretiert wurden, im Array auf null gesetzt wurden.

Returns:
Das String-Array mit den noch nicht interpretierten Aufrufargumenten der Applikation.

getInitialArgumentStrings

public String[] getInitialArgumentStrings()
Liefert das String-Array mit den initialen Aufrufargumenten der Applikation zurück. Das zurückgegebene Array enthält die selben Aufrufargumente die dem Konstruktor übergeben wurden.

Returns:
Das String-Array mit den initialen Aufrufargumenten der Applikation.

toString

public String toString()
Liefert eine textuelle Beschreibung dieser Argumentliste mit den initialen Argumenten zurück. Das genaue Format ist nicht festgelegt und kann sich ändern.

Overrides:
toString in class Object
Returns:
Beschreibung dieser Argumentliste.