diff options
Diffstat (limited to 'altosui/AltosSiteMapCache.java')
| -rw-r--r-- | altosui/AltosSiteMapCache.java | 119 | 
1 files changed, 0 insertions, 119 deletions
| diff --git a/altosui/AltosSiteMapCache.java b/altosui/AltosSiteMapCache.java deleted file mode 100644 index 03dc3cf5..00000000 --- a/altosui/AltosSiteMapCache.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright © 2010 Anthony Towns <aj@erisian.com.au> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package altosui; - -import javax.swing.*; -import javax.imageio.ImageIO; -import java.awt.image.*; -import java.io.*; -import java.net.URL; -import java.net.URLConnection; - -public class AltosSiteMapCache extends JLabel { -	static final long google_maps_ratelimit_ms = 1200; -	// Google limits static map queries to 50 per minute per IP, so -	// each query should take at least 1.2 seconds. - -	public static boolean fetchMap(File file, String url) { -		URL u; -		long startTime = System.nanoTime(); - -		try { -			u = new URL(url); -		} catch (java.net.MalformedURLException e) { -			return false; -		} - -		byte[] data; -		try { -			URLConnection uc = u.openConnection(); -			int contentLength = uc.getContentLength(); -			InputStream in = new BufferedInputStream(uc.getInputStream()); -			int bytesRead = 0; -			int offset = 0; -			data = new byte[contentLength]; -			while (offset < contentLength) { -				bytesRead = in.read(data, offset, data.length - offset); -				if (bytesRead == -1) -					break; -				offset += bytesRead; -			} -			in.close(); - -			if (offset != contentLength) { -				return false; -			} -		} catch (IOException e) { -			return false; -		} - -		try { -			FileOutputStream out = new FileOutputStream(file); -			out.write(data); -			out.flush(); -			out.close(); -		} catch (FileNotFoundException e) { -			return false; -		} catch (IOException e) { -			if (file.exists()) { -				file.delete(); -			} -			return false; -		} - -		long duration_ms = (System.nanoTime() - startTime) / 1000000; -		if (duration_ms < google_maps_ratelimit_ms) { -			try { -				Thread.sleep(google_maps_ratelimit_ms - duration_ms); -			} catch (InterruptedException e) { -				Thread.currentThread().interrupt(); -			} -		} - -		return true; -	} - -	public static ImageIcon fetchAndLoadMap(File pngfile, String url) { -		if (!pngfile.exists()) { -			if (!fetchMap(pngfile, url)) { -				return null; -			} -		} -		return loadMap(pngfile, url); -	} - -	public static ImageIcon loadMap(File pngfile, String url) { -		if (!pngfile.exists()) { -			return null; -		} - -		try { -			BufferedImage	img; - -			img = ImageIO.read(pngfile); -			if (img == null) { -				System.out.printf("# Can't read pngfile %s\n", pngfile); -				return null; -			} -			return new ImageIcon(img); -		} catch (IOException e) { -			System.out.printf("# IO error trying to load %s\n", pngfile); -			return null; -		} -	} -} | 
