//Applikation Datensammeln Version 1.00
//Dieses Programm wird durch den Scheduler oder dem Cron Prozeß aufgrufen und sammelt
//die angeforderten Daten
import java.net.*;
import java.io.*;
import java.util.*; 
import KonfigurationLesen;
/*
---------------------------------------------------------------
Name der Klasse:
Datensammeln
Funktion der Klasse:
Klasse zum Starten der Applikation Datensammeln
wichtige Variablen:
keine
wichtige Methoden:
keine
---------------------------------------------------------------
*/

public class Datensammeln implements URLAdressen{

    public Datensammeln() {
    }
    public static void main(String args[]) {
	//Die Daten werden über den HTTP-Server gelesen. 
	//Vorteil: Das Programm kann aus jedem Verzeichnis aus aufgerufen werden!
	KonfigurationLesen KonfL=new KonfigurationLesen();
	if (KonfL.Anzahl>0) {
		do{
			KonfL.NaechstesLesen();
			if (KonfL.nameinfo!=null){
				InetDaten(KonfL.nameinfo,KonfL.adressinfo,KonfL.idstring,KonfL.Punkte,KonfL.RealPath);
			}
		}while (KonfL.nameinfo!=null);
    	}
    }
    static public void InetDaten (String nameinfo,String adressinfo,String idstring,String Punkte,String RealPath){
	Date Datum=new Date();
	//Diese Routiene holt die Komplette Internet-Seite mit den Daten
	String InetSeite= new String("");
	try {
		URL InetDatenURL=new URL(adressinfo);
		URLConnection InetDatenConnection=InetDatenURL.openConnection();
		DataInputStream DIS=new DataInputStream(InetDatenConnection.getInputStream());
		String inputLine;
		while ((inputLine=DIS.readLine())!=null) {
			InetSeite=InetSeite+inputLine;
		}
		DIS.close();
	}
	catch(MalformedURLException me) {
		System.out.println("MalformedURLException: "+me);
	}
	catch(IOException e) {
		System.out.println("IOException: "+ e);
	}
	//HTML-Seite untersuchen
	int hilfszahl,i=0;
	Integer x=new Integer(0);
	hilfszahl=InetSeite.indexOf(idstring);
	x=x.valueOf(Punkte);
	while(i<=(x.intValue())) {
		hilfszahl=InetSeite.indexOf(".",hilfszahl);
		hilfszahl++;
		i++;
	}
	hilfszahl--;
	//Zahl auslesen
	//hilfszahl zeigt auf den Punkt
	//vor dem Punkt auslesen:
	double akkurs=0;
	i=1;					//Zählvariable initialisieren
	double exp=1;
	while(((int)InetSeite.charAt(hilfszahl-i))-48<10 &&((int) InetSeite.charAt(hilfszahl-i))-48>=0){
		akkurs=akkurs+((int)InetSeite.charAt(hilfszahl-i)-48)*exp;
		exp=exp*10;
		i++;
	}
	i=1;
	exp=0.1;
	while(((int)InetSeite.charAt(hilfszahl+i))-48<10 &&((int) InetSeite.charAt(hilfszahl+i))-48>=0){
		akkurs=akkurs+((int)InetSeite.charAt(hilfszahl+i)-48)*exp;
		exp=exp/10;
		i++;
	}
	//Filezugriff
	String Dateiname=new String(RealPath+"daten/"+nameinfo);
	try {
		RandomAccessFile Datei=new RandomAccessFile(Dateiname,"rw");
		Datei.seek(Datei.length());
		Datei.writeBytes(Datum.getDate() +"."+ (Datum.getMonth()+1)+"."+Datum.getYear()+"\n");
		Datei.writeBytes(akkurs+"\n");
		Datei.close();
	}
	catch(IOException e) {
		System.out.println("IOException: "+e);
	}
    }	
}
