# Datumswerte in Objekte speichern



## Cheefrocker (23. Aug 2006)

Hallo zusammen! 

Ich hätte da ne Frage: Ich habe eine Anwendung, in der viele Eingaben gemacht werden müssen. Diese Angaben speicher ich in Variablen. Jetzt hab ich hier 2 Datumsfelder. Diese Datumsfelder parse ich bei der Eingabe um festzustellen ob das Datum gültig ist.

Datumsfelder können ja in solchen formen eingegeben werden : 

ttmmjj, tt.mm.jj,ttmmjjjj .. undsoweiter. diese werden dann in die Ursprungform tt.mm.jjjjj ungewandelt.


Wenn das Datum falsch ist kommt eine Fehlermeldung....



Meine Frage ist wie handhabe ich das mit der Überprüfung?? Diese jetzt ja beim focusLost eines Textfeldes ein! 


Bau ich ein Object auf das alle Variablen entgegen nimmt und beim focuslost wird nur der Wert(String) übergegeben. Die Überprüfung läuft im Object ab??? Oder kann ich sie wie unten behandeln???


```
try
{
  //Übergibt DFormat den String vom EingabeFeld
  String EingabeDatum = JdbTextField1.getText();
 if(EingabeDatum.length()<1)
 {
     
     Person.setDatum1 = "";
   
 }
 else
 {
   EingabeDatum =  DFormat.Datums_VW(JdbTextField1.getText());

   //Das formatierte Datum wird ausgegeben
  JdbTextField1.setText(EingabeDatum);
   //Fehlermeldung nicht anzeigen
  JdbTextField_EM_FMeldung.setText("");

  //Speicher Wert in Variable
  Perso.setDatum2 = EingabeDatum;


//------------------------------------------------------------------------------

}//ende else
}//ende if
catch(Exception alle)
{
   //leert und fokusiert das Feld
   JdbTextField1.setText("");
   JdbTextField1.requestFocus();
   //Gibt Fehlermeldung aus! Da die Eingabe nicht korrekt ist
  JdbTextField_EM_FMeldung.setText("Achtung! \n"+"Sie haben eine ungültiges Datum \n"+"in das Feld eingegeben.\n"+"Eingabe bitte wiederholen.");

}
```



Ist das überhaupt so sinnvoll oder mach da kompletten Unfug???????

Hoffe ihr könnt mir weiterhelfen.(jetzt kommt mir nicht mit DesignPattern oder so an) 

 :wink:


----------



## SnooP (23. Aug 2006)

1. Bezeichner werden klein geschrieben 

2. Da gibts folgendes Designpattern.... 

3. ich gehe davon aus, dass die obskur benannte Methode Datums_VW() die entsprechende Exception wirft? Sprich die komplette Datumsüberprüfung macht? Das sieht schonmal ganz gut aus... verstehe nur nicht, warum du erst noch nach <1 prüfst?

Und ich würde den Text der Fehlermeldung durch die geworfene Exception in Datums_VW() mitschicken - dann ists nämlich am Ende egal, ob das auf ner GUI ausgegeben wird, in nem Logfile oder auf der Konsole, du kannste jedes mal alle.getMessage() benutzen.


----------



## merxleben (23. Aug 2006)

Hallo,

ich würde wahrscheinlich das Datum in eine Klasse packen und die Zeichenkette dem Konstruktor übergeben.
Für den fall, dass die Zeichenkette ein ungültiges Format aufweist würde ich eine IllegalDateFormatException schmeissen.

Nur so kurz ins Blaue

Martin


----------



## Cheefrocker (23. Aug 2006)

SnooP hat gesagt.:
			
		

> 1. Bezeichner werden klein geschrieben
> 
> 2. Da gibts folgendes Designpattern....
> 
> ...



das VW steht für vorwärts, da es noch ein RW für rueckwärts gibt!! 

ist alle.getMessage() eine selbstdefinierte Methode bei dir @snoop oder?????


----------



## Cheefrocker (23. Aug 2006)

merxleben hat gesagt.:
			
		

> Hallo,
> 
> ich würde wahrscheinlich das Datum in eine Klasse packen und die Zeichenkette dem Konstruktor übergeben.
> Für den fall, dass die Zeichenkette ein ungültiges Format aufweist würde ich eine IllegalDateFormatException schmeissen.
> ...



Vielen dank  Martin, werd mir das mal zu Gemüte führen!! Aber ist das den Sinnvoll eine eigenständige Klasse dafür zu bauen???? Es gibt ja viele Datumseingaben deshalb!


----------



## hupfdule (23. Aug 2006)

Cheefrocker hat gesagt.:
			
		

> ist alle.getMessage() eine selbstdefinierte Methode bei dir @snoop oder?????


"alle" ist bei dir vom Typ Exception. Diese erbt die getMessage() Methode von Throwable.


----------



## merxleben (23. Aug 2006)

Hallo,



			
				Cheefrocker hat gesagt.:
			
		

> Aber ist das den Sinnvoll eine eigenständige Klasse dafür zu bauen???? Es gibt ja viele Datumseingaben deshalb!



Gerade weil es viele Datumseingaben gibt, würde es sich anbieten. 

Anstatt das Datum in einer Zeichenkette abzulegen, packst du das in eine separate Klasse. Das hat mehrere Vorteile. Zum einen befindet sich die Validitätsüberprüfung genau da wo sie hingehört, nämlich direkt beim Datum. Zweitens hast du die Möglichkeit das Datum unabhängig von der Darstellung im GUI zu speichern. Das wird dann interessant, wenn du unterschiedliche Ausgabeformate anbieten möchtest.

Wenn du die Variante noch ein bischen aufbohren möchtest, dann trennst du die Formatinformation noch von der Datumsklasse. Du hast also eine Klasse, die das Datum selber speichert und du hast eine Klasse, die ein Datumsformat speichert.

Sprich wenn du eine Instanz der Klasse Datum ezeugst, dann übergibst du diesem Objekt alle gültigen Formatobjekte. Somit kannst du je nach Bedarf eine mehr oder weniger restriktive Eingabe ermöglichen.

@SnooP

An welches Pattern hattest du den gedacht

Das wars erstmal

Martin


----------



## Cheefrocker (23. Aug 2006)

merxleben hat gesagt.:
			
		

> Hallo,
> 
> 
> 
> ...



Vielen dank erstmal. Das hört sich alles logisch an. Aber angenommen ich habe ein Versicherten(Name,Vorname..) , dann hat der Versicherte ein Von-Datum, ein Bis-Datum und weitere Variablen.

Mach ich Von-Datum und das Bis-Datum dann als eigenständiges Obect(mit integriertem Parser) und füge es dem Versicherten an oder ist Von-Datum und Bis-Datum jeweils nur Variablen vom Object Versicherten die dann je nach bedarf durch den Parser gejaggt werden?

Sorry für meine Doofheit


----------



## merxleben (23. Aug 2006)

Hallo,



> Mach ich Von-Datum und das Bis-Datum dann als eigenständiges Obect(mit integriertem Parser) und füge es dem Versicherten an oder ist Von-Datum und Bis-Datum jeweils nur Variablen vom Object Versicherten die dann je nach bedarf durch den Parser gejaggt werden?
> 
> 
> > Entschuldige, wenn ich deine Frage jetzt nicht ganz genau verstehe. Aber ich vermute, du möchtest wissen, ob die Datumsobjekte als Attribute deiner Klasse Versicherter implemtieren solltest oder nicht. Und falls ja, in welcher Form.
> ...


----------



## Cheefrocker (23. Aug 2006)

@merxleben

genau das meinte ich!!


----------

