
package extendlds;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author jtorres
 */
public class ExtendLDS
{
    final private String ldsFileName = "newlds.txt";
    final private String loopFileName = "newloop.txt";
    
    // Returns the loction given the whole line from the lookup file
    private String getLDSName(String line)
    {
        Scanner lineScanner = new Scanner(line);

        lineScanner.nextInt();
        lineScanner.nextInt();
        lineScanner.nextInt();
        lineScanner.nextInt(); // skip LDS column
        lineScanner.nextInt();
        lineScanner.next();
        lineScanner.nextFloat();
        
        /** GRABS FROM CURRENT TO END OF LINE */
        lineScanner.useDelimiter("\\z"); 
        String loc = lineScanner.next().trim();
        lineScanner.close();
        return loc;
    }
    
    // Returns the loction given the whole line from the lookup file
    private String getLoopName(String line)
    {
        Scanner lineScanner = new Scanner(line);

                Integer fwy = lineScanner.nextInt();
                String dir = lineScanner.next();
                Float postmile = lineScanner.nextFloat();
                Integer ldsID = lineScanner.nextInt();
                Integer vdsID = lineScanner.nextInt();
                Integer loopID = lineScanner.nextInt();
                String shortLoc = lineScanner.next();
                Integer laneNum = lineScanner.nextInt();
        
        /** GRABS FROM CURRENT TO END OF LINE */
        lineScanner.useDelimiter("\\z"); 
        String loc = lineScanner.next().trim();
        lineScanner.close();
        return loc;
    }
    
    public ExtendLDS()
    {   
        try
        {
            Scanner ldsScanner = new Scanner(new File(ldsFileName));
            Scanner loopScanner = new Scanner(new File(loopFileName));
            PrintWriter ldsWriter = new PrintWriter(new File("extend_lds_file.txt"));
            PrintWriter loopWriter = new PrintWriter(new File("extend_loop_file.txt"));
            
            System.out.println(ldsScanner.nextLine());

            while(ldsScanner.hasNextLine())
            {
                String line = ldsScanner.nextLine();
                Scanner lineScanner = new Scanner(line);
                Integer lds_id = lineScanner.nextInt();
                Integer linenum = lineScanner.nextInt();
                Integer dropnum = lineScanner.nextInt();
                lineScanner.nextInt(); // skip LDS column
                Integer fwy = lineScanner.nextInt();
                String direction = lineScanner.next();
                Float postmile = lineScanner.nextFloat();
                String LDS_NAME = getLDSName(line);
                
                ldsWriter.print(Integer.toString(lds_id) + "\t"); // write lds id
                ldsWriter.print(Integer.toString(linenum) + "\t"); // write line num
                ldsWriter.print(Integer.toString(dropnum) + "\t"); // write drop num
                ldsWriter.print("0" + "\t"); // 0 write sch
                ldsWriter.print("0" + "\t"); // 0 write lineinfo
                ldsWriter.print("0" + "\t"); // 0 write syskey
                ldsWriter.print("0" + "\t");// 0 write sch seq
                ldsWriter.print("0" + "\t");// 0 write glo seq
                ldsWriter.print("0" + "\t");// 0 write count
                ldsWriter.print(Integer.toString(fwy) + "\t");// write fwy
                ldsWriter.print(direction + "\t");// write dir
                ldsWriter.print(Float.toString(postmile) + "\t");// write ca pm
                ldsWriter.print(LDS_NAME + "\t");// writ string location
                ldsWriter.print("\n");
                lineScanner.close();
            }
            
            loopScanner.nextLine();
            
            while(loopScanner.hasNextLine())
            {
                String line = loopScanner.nextLine();
                Scanner lineScanner = new Scanner(line);
                
                Integer fwy = lineScanner.nextInt();
                String dir = lineScanner.next();
                Float postmile = lineScanner.nextFloat();
                Integer ldsID = lineScanner.nextInt();
                Integer vdsID = lineScanner.nextInt();
                Integer loopID = lineScanner.nextInt();
                String shortLoc = lineScanner.next();
                Integer laneNum = lineScanner.nextInt();
                String LOOP_NAME = getLoopName(line);
                
                loopWriter.print(fwy + "\t");
                loopWriter.print(dir+ "\t");
                loopWriter.print(postmile + "\t");
                loopWriter.print(ldsID + "\t");
                loopWriter.print(vdsID + "\t");
                loopWriter.print(loopID + "\t");
                loopWriter.print(shortLoc + "\t");
                loopWriter.print(laneNum + "\t");
                loopWriter.print(LOOP_NAME.replace(" ", "_") + "\t");
                loopWriter.print("?" + "\t");
                loopWriter.print("0" + "\t");
                loopWriter.print('\n');
                
                lineScanner.close();
            }
            
            ldsScanner.close();
            loopScanner.close();
            ldsWriter.close();
            loopWriter.close();
            
        } catch (FileNotFoundException ex)
        {
            Logger.getLogger(ExtendLDS.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex)
        {
            Logger.getLogger(ExtendLDS.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        ExtendLDS extend = new ExtendLDS();
    }
    
}
