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 }