wiglemapper.java

来自「这是一款基于PlaceLab软件开发的导航系统中间件的客户端程序.」· Java 代码 · 共 97 行

JAVA
97
字号
/* * Created on Aug 11, 2004 * */package org.placelab.mapper;import java.io.IOException;import org.placelab.collections.Iterator;import org.placelab.collections.LinkedList;import org.placelab.core.Coordinate;import org.placelab.core.TwoDCoordinate;/** * A Mapper that does lookups on wigle.net for beacons. * Since it queries wigle.net for each (new) lookup, it is * is very slow, and further makes it such that the location * computation is no longer completely client side.  Still, * it is useful for comparisons of accuracy and coverage between * wigle and other sources of beacon data. * @see WigleDownloader *  */public class WigleMapper extends AbstractMapper {	private WigleDownloader downloader;		public WigleMapper() throws IOException {		super(true);				downloader = new WigleDownloader();		downloader.authenticate();	}		protected LinkedList findBeaconsImpl(String id) {		Iterator iter = downloader.query("netid=" + id.toUpperCase());		if (!iter.hasNext()) return null;				StringBuffer buffer = new StringBuffer();		while (iter.hasNext()) {			buffer.append(iter.next().toString());			if (iter.hasNext()) buffer.append("\n");		}				LinkedList rv = getBeaconsFromStorageString(buffer.toString());		return rv;	}	protected boolean putBeaconsImpl(String id, LinkedList beacons) {		throw new UnsupportedOperationException("WigleMapper does not support put operations");	}	public boolean open() {		return true;	}	public boolean close() {		return true;	}	public boolean deleteAll() {		throw new UnsupportedOperationException("WigleMapper is not mutable");	}	public boolean isOpened() {		return true;	}	public void startBulkPuts() {}	public void endBulkPuts() {}		public Iterator query(Coordinate c1, Coordinate c2) {		return new WigleMapperIterator(downloader.query((TwoDCoordinate)c1, (TwoDCoordinate)c2));	}		private class WigleMapperIterator implements Iterator {		private Iterator iter;				public WigleMapperIterator(Iterator iterator) {			iter = iterator;		}		public boolean hasNext() {			return iter.hasNext();		}		public Object next() {			return createBeacon(iter.next().toString());		}				public void remove() {			iter.remove();		}	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?