If-Bedingungen speichern!

mephisto22

Grünschnabel
Hallo!

Ich habe eine reihe von Feldern in einer Klasse. Nachdem der Benutzer werte eingegeben hat muss geprüft werden ob diese eingegebenen Werte gültig sind. Da sich die Bedingungen sehr häufig ändern können habe ich in meiner Datebank eine eigene config-Tabelle angelegt in der die Bedingungen aufgelistet sind (zb: [feld1 | >=10],[feld 1 | < 200], [feld 2 | != null] usw.) Die Felder können vom Typ int oder String sein.

Ich bin jetzt soweit das ich den Feldnamen aus der DB gelesen habe und über den gespeicherten Feldnamen auf die jeweilige Variable zugreifen kann. Nur weis ich jetzt nicht wirklich wie ich die Bedingung einbauen kann. Ich hab jetzt eine Variable in der steht ">=10" - das kann ich doch so in keine if-Bedingung einbauen oder? vielleicht hat ja irgendwer eine Idee...
 
Hallo hallo,

es gibt da sicher mehrere Möglichkeiten, die richtige Lösung hängt davon ab was Du noch so machen willst, bzw. wie komplex das wird. Auf der Ebene würde ich die Bedingung also: <, >, ==, !=... als zahl codiert in einer extra Spalte speichern. Z.B.

0: !=
1: ==
2: <
3: >
4: <=
5: >=

Über eine Switch Anweisung kannst du dann ganz einfach die jeweilige Bedingung durchspielen:

switch (codierte Bedingung) {

case 0: if (x != y) blabla...

case 1: if (x == y) blablabla....

usw...

}

Hoffe ich konnte Dir helfen...

Viele Grüße
Phil
 
Also wenn du erst Bedingung wie <= oder sowas hast dann kannst du den gesamten Ausdruck da hinten nur noch Zahlen stehen von hinten aufrollen.
Mit Substring dann den Zahlen Teil und den Anweisungsteil in zwei eigene Variablen schreiben:
Code:
String ErhaltenerString;
String ZahlenString;
String AnweisungsString;
int laenge = ErhaltenerString.length();
int AnfangsLaenge = ErhaltenerString.length();
String Zeichen[] = new Zeichen[laenge];
boolean Ist_Das_letzte_Zeichen_Keine_Zahl = false;
int i = 0;
			
			while(Ist_Das_letzte_Zeichen_Keine_Zahl == false) 
			{
				Zeichen[i] = ErhaltenerString.substring(laenge-1,laenge); 
				if(Zeichen[i].equals("1")||Zeichen[i].equals("2")...)
				{ 
                                laenge--;
                                }
                                else
                                {
                                Ist_Das_letzte_Zeichen_Keine_Zahl  = true;
				}
                                
			}
			AnweisungsString = ErhaltenerString.substring(0,laenge);
                        ZahlenString = ErhaltenerString.substring(laenge, Anfangslaenge)

Vielleicht hilfts dir ja
youza
 
Zurück