//Servlet Konfiguration Version 1.00
import java.io.*;
import java.util.*;
import java.net.*;
import java.servlet.*;
import java.servlet.http.*;
import sun.server.http.HttpServletContext;
//Dieses Programm nimmt die Daten mit der POST Methode entgegen
public class Konfiguration extends FormServlet {
	public void sendResponse(HttpServletResponse res, Hashtable tab) throws IOException {
		String nameinfo=(String) tab.get("nameinfo");
		String adressinfo=(String) tab.get("adressinfo");
		String idstring=(String) tab.get("idstring");
		String akwert=(String) tab.get("akwert");
		String Platzhalter="PH";
		//Nameinfo wird für den Dateinamen der Datendatei benötigt.
		//Wenn der Name mit Leerzeichen endet, gibt es Kompatibilitätsprobleme.
		//System.out.println(nameinfo+"x");
		int Stringl=nameinfo.length();
		Stringl=Stringl-1;              
		while (nameinfo.charAt(Stringl)==' ') {
			//System.out.println(nameinfo.charAt(Stringl));
			Stringl=Stringl-1;
		}
		nameinfo=nameinfo.substring(0,Stringl+1);
		nameinfo=nameinfo.replace(' ','_');
		//Testausgabe der Werte auf ein HTML-Seite
		res.setContentType("text/html");
		PrintStream out=new PrintStream(res.getOutputStream());
		out.println("nameinfo: "+nameinfo+"<p>");
		out.println("adressinfo: "+adressinfo+"<p>");
		out.println("idstring: "+idstring+"<p>");
		out.println("akwert: "+akwert+"<p>");
		//Dateilesen(out);
		//HTML-Test
		int Punkte=HTMLTest(adressinfo,akwert,idstring);
		//File
		HttpServletContext servletContext=(HttpServletContext)getServletContext();
		String RealPath=servletContext.getRealPath("public_html/");
		String Dateiname=servletContext.getRealPath("public_html/kiskonf.html");
		RandomAccessFile Datei=new RandomAccessFile(Dateiname,"rw");
		Datei.seek(Datei.length());
		if (Datei.length()==0) {
			Datei.writeBytes(RealPath+"\n");
		}
		out.println("Aktuelle Dateilänge: "+Datei.length());
		Datei.writeBytes(nameinfo+"\n");
		Datei.writeBytes(adressinfo+"\n");
		Datei.writeBytes(idstring+"\n");
		Datei.writeBytes(""+Punkte+"\n");
		Datei.writeBytes(Platzhalter+"\n");
		Datei.writeBytes(Platzhalter+"\n");
		Datei.writeBytes(Platzhalter+"\n");
		Datei.writeBytes(Platzhalter+"\n");
		Datei.writeBytes("<hr>\n");
		Datei.close();
	}
	
	//Die erforderlichen Daten aus der HTML-Seite holen
	public int HTMLTest(String url,String akwert,String idstring) {
		String DokText=new String("");
		try{
			URL datenURL=new URL(url);
			URLConnection datenConnection=datenURL.openConnection();
			DataInputStream DIS=new DataInputStream(datenConnection.getInputStream());
			String inputLine;
			while((inputLine=DIS.readLine())!=null){
				DokText=DokText+inputLine;
			}
			DIS.close();
		}
		catch(MalformedURLException me) {
			System.out.println("MalformedURLException "+me);
		}
		catch(IOException e) {
			System.out.println("IOException: "+e);
		}       
		String akwertString=new String("");     //Umwandlung von String in Float und zurück,
							//um ungewollte Leerzeichen zu vermeiden.
		Float test=new Float(akwert);           //Besonderheit: Float Objekt wird angelegt
		//System.out.println("Textwert: "+akwert);
		akwertString=test.toString();
		//System.out.println("Umwandlung: " + akwert);
		int index= DokText.indexOf(idstring);
		int index2=DokText.indexOf(akwertString,index);
		//System.out.println("Idstring steht: " + index +"akwert steht: "+index2);
		//Feststellen, wieviel Punkte als Trennzeichen zwischen idstring und akwert stehen
		int Punkte=0;
		//Information: index wird verändert !
		while(index<index2){
			index=DokText.indexOf(".",index);
			if (index<index2){
				Punkte++;
			}
			index++;
		}
		//System.out.println("Punkte: "+Punkte);
		return Punkte;  
	}
}
