Christoph: methoden-aufruf

hallo leute,
habe folgendes problem:
ein angemeldeter kunde bekommt seine stammdaten aus der datembank, was auch funktioniert.
meldet sich nun jeman mit der gast-kennung an, so bekommt dieser dummy-daten; das erledigt eine eigene klasse.
nun zu meinem problem:
konstruktion stammdaten:
Stammdaten std1=new Stammdaten("100100","MusterWerk 1","MW 1","Mustersrt. 1","66525 Musterbach","Deutschland","100100","Kältetechnik","Deutsch","000111222","000111223");
Nun will ich aber diese daten nicht in der klasse hard-codieren, sonder aus einer property-datei auslesen, damit bei einer späteren änderung dieser daten nur das programm neu gestartet werden und nicht neu compiliert werden muss.
kann ich nun eine string aus der property datei lesen der folgendermassen aussieht: ""100100","MusterWerk 1","MW 1","Mustersrt. 1","66525 Musterbach","Deutschland","100100","Kältetechnik","Deutsch","000111222","000111223""
und mittels des INHALTES dieses strings die stammdaten erzeugen, ohne mit string-tokenizer zu abeiten, oder jedes einzelne attribut aus der datei zu lesen?

danke schonmal
christoph

  1. Hallo Christoph,

    kann ich nun eine string aus der property datei lesen der folgendermassen aussieht: ""100100","MusterWerk 1","MW 1","Mustersrt. 1","66525 Musterbach","Deutschland","100100","Kältetechnik","Deutsch","000111222","000111223""
    und mittels des INHALTES dieses strings die stammdaten erzeugen, ohne mit string-tokenizer zu abeiten, oder jedes einzelne attribut aus der datei zu lesen?

    Du könntest natürlich eine Schleife schreiben, die den String zeichenweise durchgeht und sobald es die Zeichenfolge "," findet, vor der kein Backslash steht, den nächsten Platz eines Arrays "parameter" mit dem davor befindlichen Text belegt. Dann kannst du ein Stammdaten-Objekt so erzeugen:

    Stammdaten std1 = new Stammdaten(parameter[0],parameter[1],parameter[2],...);

    Aber wenn ich dich richtig verstanden habe, willst du wissen, ob es etwas gibt wie

    String a = ""100100","MusterWerk 1","MW 1","Mustersrt. 1","66525 Musterbach","Deutschland","100100","Kältetechnik","Deutsch","000111222","000111223"";

    Stammdaten std1 = new Stammdaten(a);

    oder

    Stammdaten std1 = eval("new Stammdaten(" + a + ")");

    Soetwas gibt es in Java *nicht*, da Java kompiliert wird. Am einfachsten ist es wohl, wenn du die Datei so aufbaust:

    properties.txt:

    100100
    MusterWerk 1
    MW 2
    Mustersrt. 1
    66525 Musterbach
    Deutschland
    100100
    Kältetechnik
    Deutsch
    000111222
    000111223
    200200
    MusterWerk 2
    MW 2
    Mustersrt. 2
    66525 Musterbach
    Deutschland
    200200
    Kältetechnik
    Deutsch
    000222444
    000222334
    [...]

    Und dann eine Schleife baust:

    String[] parameter = new String[11];
    while (! dateiZuendegelesen) {
      for (int i=0; i<11; i++)
        parameter[i] = NächsteZeileDerDatei;

    Stammdaten std1 = new Stammdaten(
        parameter[0],
        parameter[1],
        parameter[2],
        parameter[3],
        parameter[4],
        parameter[5],
        parameter[6],
        parameter[7],
        parameter[8],
        parameter[9],
        parameter[10]
      );
    }

    Das ist allerdings schwer erweiterungsfähig, d.h. wenn die Klasse Stammdaten später einmal mehr Eigenschaften haben soll, wird es schwierig, das ganze umzustellen. Wenn du also "zukunftsorientiert" Programmieren willst, müsstest du die Datei so aufbauen:

    properties.txt:

    parameter1=wert1
    parameter2=wert2
    parameter3=wert3
    --
    parameter1=wert1
    parameter2=wert2
    parameter3=wert3
    --
    parameter1=wert1
    parameter2=wert2
    parameter3=wert3

    Dann wird das Auslesen aber um einiges aufwändiger.

    Viel Erfolg,
    Robert