001    /*
002     * $Id: GroundStations.java,v 1.4 2012/02/19 17:35:45 davep Exp $
003     *
004     * This file is part of McIDAS-V
005     *
006     * Copyright 2007-2012
007     * Space Science and Engineering Center (SSEC)
008     * University of Wisconsin - Madison
009     * 1225 W. Dayton Street, Madison, WI 53706, USA
010     * https://www.ssec.wisc.edu/mcidas
011     * 
012     * All Rights Reserved
013     * 
014     * McIDAS-V is built on Unidata's IDV and SSEC's VisAD libraries, and
015     * some McIDAS-V source code is based on IDV and VisAD source code.  
016     * 
017     * McIDAS-V is free software; you can redistribute it and/or modify
018     * it under the terms of the GNU Lesser Public License as published by
019     * the Free Software Foundation; either version 3 of the License, or
020     * (at your option) any later version.
021     * 
022     * McIDAS-V is distributed in the hope that it will be useful,
023     * but WITHOUT ANY WARRANTY; without even the implied warranty of
024     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
025     * GNU Lesser Public License for more details.
026     * 
027     * You should have received a copy of the GNU Lesser Public License
028     * along with this program.  If not, see http://www.gnu.org/licenses.
029     */
030    
031    package edu.wisc.ssec.mcidasv.data;
032    
033    import java.awt.Frame;
034    import java.io.BufferedReader;
035    import java.io.BufferedWriter;
036    import java.io.File;
037    import java.io.FileReader;
038    import java.io.FileWriter;
039    import java.io.InputStreamReader;
040    import java.net.URL;
041    import java.net.URLConnection;
042    import java.util.ArrayList;
043    import java.util.Collections;
044    import java.util.Hashtable;
045    import java.util.List;
046    import javax.swing.JOptionPane;
047    import javax.swing.tree.DefaultMutableTreeNode;
048    import javax.swing.tree.DefaultTreeModel;
049    import javax.swing.tree.TreeNode;
050    import javax.swing.tree.TreePath;
051    import javax.swing.tree.TreeSelectionModel;
052    
053    public class GroundStations
054    {
055        private static final String card00 = "KMSN,SSEC,43.1398578,-89.3375136,270.4";
056        private int gsCount = 0; // count of stations loaded
057        public static String groundStationDB = "data/groundstations/groundstations_db.csv";
058    
059        private List stations = new ArrayList();
060        private List latitudes = new ArrayList();
061        private List longitudes = new ArrayList();
062        private List altitudes = new ArrayList();
063    
064        public GroundStations(String topCard)
065        {
066            // read data files for Ground Stations
067            try
068            {
069                BufferedReader gsReader = null; // initalization of reader 
070                
071                //see if local file exists, if not stream from web
072                
073                // read local file
074                if( new File(groundStationDB).exists())
075                {
076                    File gsFile = new File(groundStationDB);
077                    FileReader gsFileReader = new FileReader(gsFile);
078                    gsReader = new BufferedReader(gsFileReader); // from local file
079                }
080                else
081                {
082                    // read from web
083                    URL url = new URL("http://www.gano.name/shawn/JSatTrak/" + groundStationDB);
084                    URLConnection c = url.openConnection();
085                    InputStreamReader isr = new InputStreamReader(c.getInputStream());
086                    gsReader = new BufferedReader(isr); // from the web
087                }
088    
089                String nextLine = topCard;
090                if (topCard == null) {
091                   nextLine = card00;
092                   stations.add(" ");
093                   latitudes.add(" ");
094                   longitudes.add(" ");
095                   altitudes.add(" ");
096                }
097                
098                while (nextLine != null)
099                {
100                    // split line into parts
101                    String[] elements = nextLine.split(",");
102                    
103                    if (elements.length == 5) // if the row is formatted correctly
104                    {
105                        String network = elements[0];
106                        String stationName = elements[1];
107                        stations.add(stationName);
108                        String stationLat = elements[2];
109                        latitudes.add(stationLat);
110                        String stationLon = elements[3];
111                        longitudes.add(stationLon);
112                        String stationAlt = elements[4];
113                        altitudes.add(stationAlt);
114    
115    //                    System.out.println("" + gsCount + " : " + stationName + ", " + stationLat+ ", " + stationLon + ", " + stationAlt);
116                        gsCount++;
117                    }
118                    nextLine = gsReader.readLine();
119                }// while there are more lines to read
120                gsReader.close();
121            }
122            catch (Exception e)
123            {
124                 System.out.println("ERROR IN GROUND STATION READING POSSIBLE FILE FORMAT OR MISSING FILES:");
125            }
126        } // constructor
127    
128        public int getGroundStationCount() {
129            return gsCount;
130        }
131    
132        public List getStations() {
133            return stations;
134        }
135    
136        public List getLatitudes() {
137            return latitudes;
138        }
139    
140        public List getLongitudes() {
141            return longitudes;
142        }
143    
144        public List getAltitudes() {
145            return altitudes;
146        }
147    }