X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Ffunction%2Fsrtm%2FDownloadSrtmFunction.java;fp=src%2Ftim%2Fprune%2Ffunction%2Fsrtm%2FDownloadSrtmFunction.java;h=0000000000000000000000000000000000000000;hp=0350ce38ddc7af88508523fa9b2f9f7ef14d41be;hb=38a0c12649e9104d0d40ce93a932b9086011f8c8;hpb=8b20e3e027058cdf6ff52993ee5576193d08667a diff --git a/src/tim/prune/function/srtm/DownloadSrtmFunction.java b/src/tim/prune/function/srtm/DownloadSrtmFunction.java deleted file mode 100644 index 0350ce3..0000000 --- a/src/tim/prune/function/srtm/DownloadSrtmFunction.java +++ /dev/null @@ -1,222 +0,0 @@ -package tim.prune.function.srtm; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.net.URLConnection; -import java.util.ArrayList; - -import javax.swing.JOptionPane; - -import tim.prune.App; -import tim.prune.GenericFunction; -import tim.prune.GpsPrune; -import tim.prune.I18nManager; -import tim.prune.config.Config; -import tim.prune.data.DoubleRange; -import tim.prune.gui.ProgressDialog; - -/** - * Class to provide a download function for the Space Shuttle's SRTM data files. - * HGT files are downloaded into memory via HTTP and stored in the map cache. - */ -public class DownloadSrtmFunction extends GenericFunction implements Runnable -{ - /** Progress dialog */ - private ProgressDialog _progress = null; - /** Flag to check whether this function is currently running or not */ - private boolean _running = false; - - - /** - * Constructor - * @param inApp App object - */ - public DownloadSrtmFunction(App inApp) { - super(inApp); - } - - /** @return name key */ - public String getNameKey() { - return "function.downloadsrtm"; - } - - /** - * Begin the download - */ - public void begin() - { - _running = true; - if (_progress == null) { - _progress = new ProgressDialog(_parentFrame, getNameKey()); - } - _progress.show(); - // start new thread for time-consuming part - new Thread(this).start(); - } - - /** - * Run method using separate thread - */ - public void run() - { - // Compile list of tiles to get - ArrayList tileList = new ArrayList(); - - // First, loop to see which tiles are needed - DoubleRange lonRange = _app.getTrackInfo().getTrack().getLonRange(); - DoubleRange latRange = _app.getTrackInfo().getTrack().getLatRange(); - final int minLon = (int) Math.floor(lonRange.getMinimum()); - final int maxLon = (int) Math.floor(lonRange.getMaximum()); - final int minLat = (int) Math.floor(latRange.getMinimum()); - final int maxLat = (int) Math.floor(latRange.getMaximum()); - - for (int lon=minLon; lon<= maxLon; lon++) - { - for (int lat=minLat; lat <= maxLat; lat++) - { - SrtmTile tile = new SrtmTile(lat, lon); - boolean alreadyGot = false; - for (int t = 0; t < tileList.size(); t++) - { - if (tileList.get(t).equals(tile)) { - alreadyGot = true; - } - } - if (!alreadyGot) {tileList.add(tile);} - } - } - - downloadTiles(tileList); - // Finished - _running = false; - } - - - /** - * Download the tiles of SRTM data - * @param inTileList list of tiles to get - */ - private void downloadTiles(ArrayList inTileList) - { - // Update progress bar - if (_progress != null) - { - _progress.setMaximum(inTileList.size()); - _progress.setValue(0); - } - - String errorMessage = null; - - // Check the cache is ok - final String diskCachePath = Config.getConfigString(Config.KEY_DISK_CACHE); - if (diskCachePath != null) - { - File srtmDir = new File(diskCachePath, "srtm"); - if (!srtmDir.exists() && !srtmDir.mkdir()) { - // can't create the srtm directory - errorMessage = I18nManager.getText("error.downloadsrtm.nocache"); - } - } - else { - // no cache set up - errorMessage = I18nManager.getText("error.downloadsrtm.nocache"); - } - - // Get urls for each tile - URL[] urls = TileFinder.getUrls(inTileList); - int numDownloaded = 0; - for (int t=0; t 1) - { - JOptionPane.showMessageDialog(_parentFrame, I18nManager.getTextWithNumber("confirm.downloadsrtm", numDownloaded), - I18nManager.getText(getNameKey()), JOptionPane.INFORMATION_MESSAGE); - } - else if (inTileList.size() > 0) { - _app.showErrorMessage(getNameKey(), "confirm.downloadsrtm.none"); - } - } - - /** - * See whether the SRTM file is already available locally - * @param inUrl URL for online resource - * @return file object to write to, or null if already there - */ - private static File getFileToWrite(URL inUrl) - { - String diskCachePath = Config.getConfigString(Config.KEY_DISK_CACHE); - if (diskCachePath != null) - { - File srtmDir = new File(diskCachePath, "srtm"); - if (srtmDir.exists() && srtmDir.isDirectory() && srtmDir.canRead()) - { - File srtmFile = new File(srtmDir, new File(inUrl.getFile()).getName()); - if (!srtmFile.exists() || !srtmFile.canRead() || srtmFile.length() <= 400) { - return srtmFile; - } - } - } - return null; - } - - /** - * @return true if a thread is currently running - */ - public boolean isRunning() - { - return _running; - } -}