Aufbau von Klassen und zugriff auf alle Variablen

Status
Nicht offen für weitere Antworten.

JavaHilfe

Mitglied
Hallo Leute,

erstmal einen wunderschönen Nikolaus wünsch ich euch...
Hoffe dieser war erfolgreich!!!


So nun zu meinem Problem, bin ja immer noch neu hier und ich komme mit den Klassen und Variablen und übergabe von Werten und den aufrufen nicht so zurecht wie es sein soll.

Habe mir aber schon große mühe gegeben um meinen Code in eine gute Reihenfolge zu bringen.

Hier mal mein Code, würde es super finden wenn es jemand mal so umstellen könnte das es funktionier, Eclipse sagt zwar ist kein Fehler drin aber allein mit den Werten in den Klassen kommt er nicht klar glaube ich.


Code:
import java.io.*;
import java.util.Properties;
import org.apache.axis.AxisFault;
import org.apache.axis.Constants;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
import javax.xml.rpc.ParameterMode;


public class LineLesenProperties 
{
	public String ben;
	public String pass;
	public String domain;
	public String proxy;
	public String port;
	public String pfad_out;
	public String pfad_in;
	public String line;
	
	public static void main(String[] args)
	{
		online_ini ini_erg = new online_ini();
		xml_lesen xml_erg = new xml_lesen(pfad_out);
		connect connect_erg = new connect(ben,pass,domain,proxy,port,line,pfad_in);
	}
}

class online_ini
{  
	public online_ini()
	{
	   try
	   {
		   Properties p = new Properties();
		   p.load(new FileInputStream("c:\\working\\work\\jam\\online_fsw.ini"));
		   String ben = p.getProperty("Ben");
		   String pass = p.getProperty("Pass");
		   String domain = p.getProperty("Domain");
		   String proxy = p.getProperty("Proxy");
		   String port = p.getProperty("Port");
		   String pfad_out = p.getProperty("pfad_out");
		   String pfad_in = p.getProperty("pfad_in");
		
		   String vorfehler="In der online_fsw.ini ist kein";
		   if(ben	==	null ||	ben.equals("")){
			   System.out.println(vorfehler+" Benutzername eingetragen!");
		   }
		   if(pass	==	null ||	pass.equals("")){
			   System.out.println(vorfehler+" Passwort eingetragen!");
		   }
		   if(domain	==	null ||	domain.equals("")){
			   System.out.println(vorfehler+"e Domain eingetragen!");
		   }
		   if(pfad_out	==	null ||	pfad_out.equals("")){
			   System.out.println(vorfehler+" Pfad der versand XML eingetragen!");
		   }
		   if(pfad_in	==	null ||	pfad_in.equals("")){
			   System.out.println(vorfehler+" Pfad der empfangs XML eingetragen!");
		   }
		   System.out.println(ben);
		   System.out.println(pass);
		   System.out.println(domain);
		   System.out.println(proxy);
		   System.out.println(port);
		   System.out.println(pfad_out);
		   System.out.println(pfad_in);
	   }
	   catch (IOException e){
		   System.out.println("Fehler beim einlesen der INI Daten!");
	   }
	}
}

class xml_lesen
{  
	public xml_lesen()
	{
	   BufferedReader f;
	   String line;
	   try{
	 	  f = new BufferedReader(
				  new FileReader(pfad_out));
	 	  while ((line = f.readLine()) != null){
	 		  System.out.println(line);
	 	  }
	 	  f.close();
	
	       if(line	==	null ||	line.equals("")){
	    	   System.out.println("Die zu versendene Anfrage ist leer!");
	       }
	   }
	   catch (IOException e){
	 	  System.out.println("Fehler beim einlesen der zu versendenen Datei!");
	   }
   }
} 

class connect
{
	public connect()
	{
		service = new Service();
		call = (Call) service.createCall();
		call.setTargetEndpointAddress(new URL(domain));
		call.setOperationName("abfragexy");
		call.setReturnType( XMLType.XSD_STRING );
		call.setUsername(ben);
		call.setPassword(pass);
		ret = (String) call.invoke(new Object[] {
				new Integer(mandant),
				line,
				new Boolean(true)
			});
		printIt(pfad_in,ret);
	}
}


Danke für eure Hilfe, hoffe das ich euch nicht zudoll auf der Tasche liege.

Grüße der Nikolaus
 
bekomme unter anderm ein fehler bei den import dateien-> Eclipse will das ich dann was am Build Path verändere.

oder

in meiner main wo ich die sachen aufrufe, das die String werte nciht übergeben werden

oder

bei den if abfragen, wenn etwas leer sein soll, soll er abbrechen, return macht er nich...



Außerdem weiß ich einfach nich ob das ein guter Style ist wie ich es jetzt geschrieben habe.
Würde es gern in packages packen oder getrennte java dateien.

Weiß halt blos nich wie ich sie dann aufrufe oder ihnen die werte übergebe oder den Fehler in den Imports weg bekomme.


🙁 hab gestern echt schon die bücher geweltzt :### aber ich finde einfach keine gute erklärung, oder eine die ich verstehe. :bahnhof:
 
also das ist nur mein vorschlag-: so mache ich es.
Ich habe pro java Datei nur eine Klasse, wobei es dabei sehr unübersichtlich werden kann, wenn man bei der bennenung schlampt. dazu baue ich mir immer ein UML Klassendiagramm um die übersicht zu behalten.
ich habe zum beispiel alle read metzhoden in meiner klasse read.java und alle writer alle connectoren etc in jeweils ner anderen.
mein derzeitiges java project hat inzwischen knapp 50 java dateien und es geht so immer noch; immer schö doku schreiben 🙂
 
Das du mehr als eine Methode in eine Klasse packen kannst, weißt du?
Ist die JAR-Datei mit den apache-Klassen im Build-Path enthalten? Hast du schon mal den Debugger drüberlaufen lassen?

mpG
Tobias

P.S.: Wo wir gerade über Code-Style reden: Klassen bekommen Substantive als Namen und beginnen mit einem Großbuchstaben. Unterstriche in Bezeichnern sind unüblich, in Java benutzt man CamelCase - also gemischte Groß-Kleinschreibung. Methoden bekommen Imperative als Bezeichner, damit sich der Code sprechender liest, also sowas wie initOnlineState() statt online_ini(). Achja, durchgängig englische Bezeichner sind auch angeraten - man schreibt ja auch keine Briefe in Deutsch-englisch-französisch-Mischmasch.
Das nur zur Info.
 
SO, da bin ich wieder,


hab jetzt alles mal etwas umstruckturiert!

hab jetzt zwei java dateien und erstmal connect bei seite gelassen.

Hier erstmal der CODE

Java Datei 1 -> StartInfoReg.java

Code:
package pk.informationsregister.prokommunal;

public class StartInfoReg {
	public String ben;
	public String pass;
	public String domain;
	public String proxy;
	public Integer port;
	public String pfad_out;
	public String pfad_in;
	
	public static void main(String[] args) {
		
		online_ini ini = new online_ini();
		ini.zugang();
		
		xml_lesen xml = new xml_lesen();
		xml.xml_string();
	}
}


Java Datei 2 -> Read.java

Code:
package pk.informationsregister.prokommunal;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;


class online_ini
{  
	public void zugang()
	{
	   try
	   {
		   Properties p = new Properties();
		   p.load(new FileInputStream("c:\\working\\work\\jam\\online_fsw.ini"));
		   String ben = p.getProperty("Ben");
		   String pass = p.getProperty("Pass");
		   String domain = p.getProperty("Domain");
		   String proxy = p.getProperty("Proxy");
		   String port = p.getProperty("Port");
		   String pfad_out = p.getProperty("pfad_out");
		   String pfad_in = p.getProperty("pfad_in");
		
		   String vorfehler="In der online_fsw.ini ist kein";
		   if(ben	==	null ||	ben.equals("")){
			   System.out.println(vorfehler+" Benutzername eingetragen!");
		   }
		   if(pass	==	null ||	pass.equals("")){
			   System.out.println(vorfehler+" Passwort eingetragen!");
		   }
		   if(domain	==	null ||	domain.equals("")){
			   System.out.println(vorfehler+"e Domain eingetragen!");
		   }
		   if(pfad_out	==	null ||	pfad_out.equals("")){
			   System.out.println(vorfehler+" Pfad der versand XML eingetragen!");
		   }
		   if(pfad_in	==	null ||	pfad_in.equals("")){
			   System.out.println(vorfehler+" Pfad der empfangs XML eingetragen!");
		   }
		   System.out.println(ben);
		   System.out.println(pass);
		   System.out.println(domain);
		   System.out.println(proxy);
		   System.out.println(port);
		   System.out.println(pfad_out);
		   System.out.println(pfad_in);
	   }
	   catch (IOException e){
		   System.out.println("Fehler beim einlesen der INI Daten!");
	   }
	}
}

class xml_lesen
{
	public String pfad_out;
	
	public void xml_string()
	{
		BufferedReader f;
		String line;
		try{
			f = new BufferedReader(new FileReader(pfad_out));
			while ((line = f.readLine()) != null){
				System.out.println(line);
			}
			f.close();
	
			if(line	==	null ||	line.equals(""))
			{
				System.out.println("Die zu versendene Anfrage ist leer!");
			}
		}
		catch (IOException e){
			System.out.println("Fehler beim einlesen der zu versendenen Datei!");
		}
	}
}

So sieht es schon besser aus.

Nur jetzt habe ich ein Problem...

1. die werte die ich aus der INI -Datei auslese und in ein String speicher lösche ich ja wieder wenn ich die funktion verlasse. Somit fehlen sie mir in der nächsten wieder. Wie kann ich also dedklarrieren das sie nicht gelöscht werden.

2. Ist der Style jetzt besser?

3. Da wo ich die XML ansich auslesen würde, speichert der da alles was in der XML steht in der Variable "line" oder nur dir letzte zeile?



Vielen dank schonmal...
 
1. Instanzvariablen - ein Beispiel dafür hast du in der xml_lesen selbst geliefert -> pfad_out

2. Nein. Siehe meinen letzten Post.

3. Nur die letzte Zeile.

mpG
Tobias
 
da müsste der Compiler schon schreien.

In deiner Read.java gibt es keine public class Read ....
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben