package fr.cs.examples.estimation;

import org.orekit.data.DataProvidersManager;
import org.orekit.data.DirectoryCrawler;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.lang.Math;

public class logparser {

    static double differencecalculator(double xg , double yg, double zg , double xd , double yd , double zd){
        double diffx = xg - xd;
        double diffy = yg - yd;
        double diffz = zg - zd;
        double diff = Math.sqrt(Math.pow(diffx,2)+ Math.pow(diffy,2)+Math.pow(diffz,2));
        return diff;
    }

    static double[] splitter(String input){
        String[] a = input.split("\\)");
        String[] b = a[0].split(", ");
        double output[] = new double[3];
        for(int i=0; i<b.length;i++){
            output[i]=Double.parseDouble(b[i]);
        }
        return output;

    }



    public static void main(String[] args) throws Exception {

        boolean pv = true;


        // Orbital parameters used in the generation of the measurements
        double pxg = -5253194;
        double pyg = -4400295;
        double pzg = 80075;
        double vxg = -559;
        double vyg = 764;
        double vzg = 7585;

        // The sigma used in the generation
        double sigma = 40;

        File home = new File(System.getProperty("user.home"));
        File orekitData = new File(home, "orekit-data");
        DataProvidersManager manager = DataProvidersManager.getInstance();
        manager.addProvider(new DirectoryCrawler(orekitData));


        /* Initial data path  */
        File log = new File("C:\\Users\\nolja\\orbit-determination-log.out");
        boolean exists = log.exists();
        System.out.println(exists);
        BufferedReader reader = new BufferedReader(new FileReader(log));
        String line = reader.readLine();


        if(pv!=false) {



            while(line!=null){


                if(line.startsWith("Estimated orbit: Cartesian parameters:")){
                    System.out.println("Founbd it");
                    String[] chunks = line.split("\\(");
                    System.out.println(chunks[3]);

                    /*
                    // Splitting the position string
                    String[] pos = chunks[1].split("\\)");
                    String[] posax = pos[0].split(", ");
                    double pxd = Double.parseDouble(posax[0]);
                    double pyd = Double.parseDouble(posax[1]);
                    double pzd = Double.parseDouble(posax[2]);*/
                    double[] position = splitter(chunks[1]);
                    double[] velocity = splitter(chunks[2]);
                    double[] a = splitter(chunks[3]);

                    System.out.println(differencecalculator(pxg,pyg,pzg,position[0],position[1],position[2]));
                    System.out.println(differencecalculator(vxg,vyg,vzg,velocity[0],velocity[1],velocity[2]));
                }

                line = reader.readLine();
            }
        }


    }

}