You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/12/08 23:37:56 UTC

svn commit: r724528 - in /labs/magma/trunk/maps-google: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/magma/ src/main/java/org/apache/magma/maps/ src/main/java/org/apache/magma/maps/google/ src/m...

Author: simoneg
Date: Mon Dec  8 14:37:55 2008
New Revision: 724528

URL: http://svn.apache.org/viewvc?rev=724528&view=rev
Log:
Initial import.

Added:
    labs/magma/trunk/maps-google/pom.xml
    labs/magma/trunk/maps-google/src/
    labs/magma/trunk/maps-google/src/main/
    labs/magma/trunk/maps-google/src/main/java/
    labs/magma/trunk/maps-google/src/main/java/org/
    labs/magma/trunk/maps-google/src/main/java/org/apache/
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/AddMapLink.aj
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/GoogleMapsResolver.java
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/InstallGoogleMapsResolver.aj
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MakeSmartListMapped.aj
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/UseMappedProducer.aj
    labs/magma/trunk/maps-google/src/main/resources/
    labs/magma/trunk/maps-google/src/main/resources/org/
    labs/magma/trunk/maps-google/src/main/resources/org/apache/
    labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/
    labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/
    labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/
    labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css
    labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js
    labs/magma/trunk/maps-google/src/test/
    labs/magma/trunk/maps-google/src/test/java/
    labs/magma/trunk/maps-google/src/test/java/org/
    labs/magma/trunk/maps-google/src/test/java/org/apache/
    labs/magma/trunk/maps-google/src/test/java/org/apache/magma/
    labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/
    labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/
    labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/Address.java
    labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/GoogleResolverTest.java
    labs/magma/trunk/maps-google/src/test/resources/

Added: labs/magma/trunk/maps-google/pom.xml
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/pom.xml?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/pom.xml (added)
+++ labs/magma/trunk/maps-google/pom.xml Mon Dec  8 14:37:55 2008
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <parent>
+    <artifactId>magma-parent</artifactId>
+    <groupId>org.apache.magma</groupId>
+    <version>1</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.magma</groupId>
+  <artifactId>maps-google</artifactId>
+  <name>Magma Google Maps</name>
+  <version>0.0.1-SNAPSHOT</version>
+  <description/>
+  <packaging>magma</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.magma</groupId>
+      <artifactId>foundation-maps</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.magma</groupId>
+      <artifactId>website-beansview</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.5</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.magma</groupId>
+      <artifactId>website-jquery</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file

Added: labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/AddMapLink.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/AddMapLink.aj?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/AddMapLink.aj (added)
+++ labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/AddMapLink.aj Mon Dec  8 14:37:55 2008
@@ -0,0 +1,28 @@
+package org.apache.magma.maps.google;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import org.apache.magma.basics.LocalizableString;
+import org.apache.magma.website.beansview.SmartListProducer;
+
+public aspect AddMapLink {
+
+	public boolean SmartListProducer.mappable = false;
+	
+	before(SmartListProducer prod, OutputStream stream) : execution(* SmartListProducer.produce(..)) && 
+		args(stream) && within(SmartListProducer) && this(prod) {
+		try {
+			if (prod instanceof MappedSmartListProducer) {
+				stream.write("<a href=\"useMap-false\">".getBytes("UTF-8"));
+				stream.write(new LocalizableString("Back to normal list").toString().getBytes("UTF-8"));
+				stream.write("</a>".getBytes("UTF-8"));							
+			} else if (prod.mappable) {
+				stream.write("<a href=\"useMap-true\">".getBytes("UTF-8"));
+				stream.write(new LocalizableString("Show on map").toString().getBytes("UTF-8"));
+				stream.write("</a>".getBytes("UTF-8"));							
+			}
+		} catch (IOException e) {}
+	}
+	
+}

Added: labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/GoogleMapsResolver.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/GoogleMapsResolver.java?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/GoogleMapsResolver.java (added)
+++ labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/GoogleMapsResolver.java Mon Dec  8 14:37:55 2008
@@ -0,0 +1,127 @@
+package org.apache.magma.maps.google;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.magma.maps.GeoCoordinates;
+import org.apache.magma.maps.GeoResolvable;
+import org.apache.magma.maps.GeoResolver;
+import org.apache.magma.maps.GeoCoordinates.Accuracy;
+import org.apache.magma.settings.Settings;
+
+public class GoogleMapsResolver extends GeoResolver {
+
+	private String url = "http://maps.google.com/maps/geo";
+	
+	@Override
+	public ResolveResult resolve(GeoResolvable object) {
+		StringBuilder urlwp = new StringBuilder();
+		urlwp.append(url);
+		if (url.indexOf('?') == -1) {
+			urlwp.append('?'); 
+		} else {
+			urlwp.append('&');
+		}
+		addParameter("sensor", "false", urlwp);
+		addParameter("key", Settings.get("google.maps.key"), urlwp);
+		addParameter("q", object.toAddress(), urlwp);
+		addParameter("output", "csv", urlwp);
+		
+		List<String> lines = new ArrayList<String>();
+		String line = null;
+		try {
+			URL gu = new URL(urlwp.toString());
+			URLConnection conn = gu.openConnection();
+			InputStream in = conn.getInputStream();
+			BufferedReader br = new BufferedReader(new InputStreamReader(in));
+			while ((line = br.readLine()) != null) {
+				line = line.trim();
+				if (line.length() > 0) lines.add(line);
+			}
+			br.close();
+			in.close();
+		} catch (MalformedURLException e) {
+			e.printStackTrace();
+			return ResolveResult.ERROR;
+		} catch (IOException e) {
+			e.printStackTrace();
+			return ResolveResult.ERROR;
+		}
+		if (lines.size() == 0) return ResolveResult.UNRESOLVABLE;
+		int bestaccuracy = 0;
+		line = null;
+		for (String acl : lines) {
+			String[] parts = acl.split(",");
+			if (parts.length < 4) return ResolveResult.ERROR;
+			int acacc = Integer.parseInt(parts[1]);
+			if (acacc > bestaccuracy) {
+				line = acl;
+				bestaccuracy = acacc;
+			}
+		}
+		if (line == null) return ResolveResult.UNRESOLVABLE;
+		if (bestaccuracy == 0) return ResolveResult.UNRESOLVABLE;
+		String[] parts = line.split(",");
+		GeoCoordinates coords = new GeoCoordinates();
+		coords.setLatitude(Double.parseDouble(parts[2]));
+		coords.setLongitude(Double.parseDouble(parts[3]));
+		GeoCoordinates.Accuracy accuracy = null;
+		switch (bestaccuracy) {
+		case 0:
+			accuracy = Accuracy.UNRESOVED;
+			break;
+		case 1:
+			accuracy = Accuracy.COUNTRY;
+			break;
+		case 2:
+			accuracy = Accuracy.REGION;
+			break;
+		case 3:
+			accuracy = Accuracy.SUBREGION;
+			break;
+		case 4:
+			accuracy = Accuracy.TOWN;
+			break;
+		case 5:
+			accuracy = Accuracy.QUARTER;
+			break;
+		case 6:
+			accuracy = Accuracy.STREET;
+			break;
+		case 7:
+			accuracy = Accuracy.INTERSECTION;
+			break;
+		case 8:
+			accuracy = Accuracy.ADDRESS;
+			break;
+		case 9:
+			accuracy = Accuracy.BUILDING;
+			break;
+		}
+		coords.setCoordinatesAccuracy(accuracy);
+		object.setCoordinates(coords);
+		return ResolveResult.DONE;
+	}
+
+	protected void addParameter(String name, String value, StringBuilder url) {
+		url.append(name);
+		url.append('=');
+		try {
+			if (value != null) {
+				url.append(URLEncoder.encode(value, "UTF-8"));
+			}
+		} catch (UnsupportedEncodingException e) {
+		}
+		url.append('&');
+	}
+	
+}

Added: labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/InstallGoogleMapsResolver.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/InstallGoogleMapsResolver.aj?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/InstallGoogleMapsResolver.aj (added)
+++ labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/InstallGoogleMapsResolver.aj Mon Dec  8 14:37:55 2008
@@ -0,0 +1,11 @@
+package org.apache.magma.maps.google;
+
+import org.apache.magma.maps.GeoResolver;
+
+public aspect InstallGoogleMapsResolver {
+
+	GeoResolver around() : call(GeoResolver.new()) {
+		return new GoogleMapsResolver();
+	}
+	
+}

Added: labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MakeSmartListMapped.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MakeSmartListMapped.aj?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MakeSmartListMapped.aj (added)
+++ labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MakeSmartListMapped.aj Mon Dec  8 14:37:55 2008
@@ -0,0 +1,44 @@
+package org.apache.magma.maps.google;
+
+import org.apache.magma.maps.GeoAware;
+import org.apache.magma.maps.GeoLocated;
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.beansview.SmartList;
+
+public privileged aspect MakeSmartListMapped {
+
+	private boolean SmartList.mapped = false;
+	private boolean SmartList.cookieUseMap = false;
+	
+	public SmartList SmartList.setMapped(boolean mapped) {
+		this.mapped = mapped;
+		return this;
+	}
+	
+	public boolean SmartList.isMapped() {
+		return this.mapped;
+	}
+	
+	public void SmartList.setCookieUseMap(Boolean usemap) {
+		this.cookieUseMap = usemap != null ? usemap : false;
+	}
+	
+	public Boolean SmartList.getCookieUseMap() {
+		return this.cookieUseMap;
+	}
+	
+	public HtmlProducer SmartList.doUseMap(boolean usemap) {
+		this.setCookieUseMap(usemap && this.mapped);
+		return doShow();
+	}
+	
+	public boolean SmartList.isMappable() {
+		return GeoAware.class.isAssignableFrom(this.myclass) || GeoLocated.class.isAssignableFrom(this.myclass); 
+	}
+	
+	public boolean SmartList.shouldMap() {
+		return this.isMappable() && this.mapped && this.cookieUseMap;
+	}
+	
+	
+}

Added: labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java (added)
+++ labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java Mon Dec  8 14:37:55 2008
@@ -0,0 +1,79 @@
+package org.apache.magma.maps.google;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.Collection;
+
+import org.apache.magma.basics.LocalizableString;
+import org.apache.magma.beans.MagmaBeanSupport;
+import org.apache.magma.maps.GeoAware;
+import org.apache.magma.maps.GeoCoordinates;
+import org.apache.magma.maps.GeoLocated;
+import org.apache.magma.settings.Settings;
+import org.apache.magma.view.tree.ViewUtils;
+import org.apache.magma.website.Head;
+import org.apache.magma.website.beansview.SmartListProducer;
+
+public class MappedSmartListProducer extends SmartListProducer {
+
+	private String prototype = 
+		"<div style=\"display: none\" class=\"MagmaGoogleMapListContainer\">" +
+		"<div class=\"MagmaGoogleMapListTab\"><ul>" +
+		"</ul></div>" +
+		"<div class=\"MagmaGoogleMap\"></div>" +
+		"</div>";
+
+	public <T> MappedSmartListProducer(Class<T> myclass, Collection<? extends T> list) {
+		super(myclass, list);
+	}
+	
+	@Override
+	public void head(Head head) {
+		head.addCss("magma:/common/googlemaps/magmaGoogleMaps.css");
+		head.addExternalScript("magma:/common/googlemaps/magmaGoogleMaps.js");
+		head.addExternalScript("http://maps.google.com/maps?file=api&v=2&sensor=false&key=" + Settings.get("google.maps.key"));
+		head.addDoOnload("mappize");
+		super.head(head);
+	}
+	
+	@Override
+	public void produce(OutputStream stream) {
+		stream.write("<div class=\"MagmaGoogleMapsList\">".getBytes("UTF-8"));
+		super.produce(stream);
+		sendPrototype(stream);
+		stream.write("</div>".getBytes("UTF-8"));		
+	}
+
+	protected void sendPrototype(OutputStream stream) throws IOException {
+		stream.write(prototype.getBytes("UTF-8"));
+	}
+
+	@Override
+	protected void closeRow(Object o, Writer tables) throws IOException {
+		GeoCoordinates coords = null;
+		if (o instanceof GeoAware) {
+			GeoLocated loc = ((GeoAware)o).getGeoLocatedObject();
+			if (loc != null) {
+				coords = loc.getCoordinates();
+			}
+		}
+		if (o instanceof GeoLocated) {
+			coords = ((GeoLocated)o).getCoordinates();
+		}
+		if (coords != null && coords.getCoordinatesAccuracy() != GeoCoordinates.Accuracy.UNRESOVED) {
+			tables.write("<td class=\"MagmaGoogleMapsCoordsCell\">");
+			tables.write(coords.toString());
+			tables.write("</td>");
+		}
+		if (o instanceof MagmaBeanSupport) {
+			tables.write("<td class=\"MagmaGoogleMapsDescription\">");
+			tables.write(((MagmaBeanSupport)o).toUser());
+			tables.write("</td>");
+		}
+		super.closeRow(o, tables);
+	}
+	
+	
+
+}

Added: labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/UseMappedProducer.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/UseMappedProducer.aj?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/UseMappedProducer.aj (added)
+++ labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/UseMappedProducer.aj Mon Dec  8 14:37:55 2008
@@ -0,0 +1,23 @@
+package org.apache.magma.maps.google;
+
+import java.util.Collection;
+
+import org.apache.magma.website.beansview.SmartList;
+import org.apache.magma.website.beansview.SmartListProducer;
+
+public aspect UseMappedProducer {
+
+	SmartListProducer around(SmartList list, Class clzz, Collection coll) : 
+		call(SmartListProducer.new(Class, Collection)) 
+		&& this(list)
+		&& args(clzz, coll) {
+		if (list.shouldMap()) {
+			return new MappedSmartListProducer(clzz, coll);
+		} else {
+			SmartListProducer prod = proceed(list, clzz, coll);
+			prod.mappable = list.isMappable() && list.isMapped();
+			return prod;
+		}
+	}
+	
+}

Added: labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css (added)
+++ labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css Mon Dec  8 14:37:55 2008
@@ -0,0 +1,61 @@
+.MagmaGoogleMapListTab {
+	float: left;
+	border: 1px solid gray;
+	border-right: none;
+	width: 19%;
+	height: 100%;
+}
+
+.MagmaGoogleMap {
+	float: left;
+	border: 1px solid black;
+	width: 80%;
+	height: 100%;
+}
+
+.MagmaGoogleMapListTab ul {
+	padding: 0px;
+	margin: 0px;	
+}
+
+.MagmaGoogleMapListTab ul li {
+	list-style: none;
+	padding: 5px;
+	border-bottom: 1px dashed gray;
+	float: left;
+	width: 100%;
+}
+
+.MagmaGoogleMapListTab ul li div {
+	float: left;
+	width: 90%;
+}
+
+.MagmaGoogleMapListTab ul li a {
+	display: block;
+	float: right;
+	font-size: 200%;
+	width: 10%;
+}
+
+
+
+li.MappedElement {
+	background-color: white;
+	color: black;
+	cursor: pointer;
+}
+
+li:hover.MappedElement {
+	background-color: #FFFFBB;
+}
+
+li.NotMappedElement {
+	background-color: #EEEEEE;
+}
+
+.MagmaGoogleMap a {
+	display: block;
+	float: right;
+	font-size: 200%;
+}

Added: labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js (added)
+++ labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js Mon Dec  8 14:37:55 2008
@@ -0,0 +1,117 @@
+function mappize() {
+	$('div.MagmaGoogleMapsList table.MagmaList').each(function() {
+		goWithMap(this);
+	});
+}
+
+function createMarker(point,html) {
+	var marker = new GMarker(point);
+	GEvent.addListener(marker, "click", function() {
+		marker.openInfoWindowHtml(html);
+	});
+	return marker;
+}
+
+function goWithMap(mytbl) {
+	var width = mytbl.offsetWidth;
+	var height = (width * 0.50);
+	
+	var parent = mytbl.parentNode;
+	var container = $('div.MagmaGoogleMapListContainer', parent).get(0);
+	parent.insertBefore(container, mytbl);
+	
+	mytbl.style.display = 'none';
+	container.style.display = 'block';
+	container.style.width = width + 'px';
+	container.style.height = height + 'px';
+
+	var sublist = $('div.MagmaGoogleMapListTab', container).get(0);
+	
+	var sublistul = document.createElement('ul');
+	sublist.appendChild(sublistul);
+	
+	var ndiv = $('div.MagmaGoogleMap', container).get(0);
+	ndiv.id = mytbl.id + '-map';
+	
+	var map = new GMap2(ndiv);
+	map.setCenter(new GLatLng(37,-122), 13);
+	map.addControl(new GLargeMapControl());
+	map.addControl(new GMapTypeControl());
+	
+	var bounds = new GLatLngBounds();
+	
+	var headers = [];
+	var lines = mytbl.getElementsByTagName('tr');
+	for (var j = 0; j < lines.length; j++) {
+		var line = lines[j];
+		var data = {text:'', header:''};
+		var cells = line.getElementsByTagName('td');
+		if (cells.length > 0) {
+			for (var k = 0; k < cells.length; k++) {
+				var cell = cells[k];
+				if (cell.className == 'MagmaGoogleMapsCoordsCell') {
+					var str = cell.childNodes[0].data;
+					str = str.replace(';',',');
+					data.coords = eval(str);
+				} else if (cell.className == 'MagmaGoogleMapsDescription') {
+					var str = cell.childNodes[0].data;
+					data.header = str;						 	
+				} else {
+					var link = extractLink(cell);
+					data.link = link != null ? link : data.link;
+					data.text += '<b>' + headers[k] + '</b> : ' + stripHtml(cell.innerHTML) + '<br/>'; 
+				}
+			}
+			if (data.coords && data.coords[0] != 0) {
+				var point = new GLatLng(data.coords[0], data.coords[1]);
+				var html = '<h1>' + data.header + '</h1><div>' + data.text + '</div>';
+				if (data.link && data.link != null && data.link != '') {
+					html += '<a href="' + data.link + '">&gt;</a>';
+				}
+				data.marker = createMarker(point, html);
+          		map.addOverlay(data.marker);
+          		bounds.extend(point);
+          	}
+          	var li = document.createElement('li');
+          	if (data.marker && data.marker != null) {
+          		li.className="MappedElement";
+          		li.marker = data.marker;
+          		data.marker.li = li;
+	          	jQuery(li).click(function() { this.marker.openInfoWindowHtml(html); return true; });
+          	} else {
+          		li.className="NotMappedElement";          	
+          	}
+          	var div = document.createElement('div');
+          	li.appendChild(div); 
+          	var txt = document.createTextNode(data.header);
+          	div.appendChild(txt);
+			if (data.link && data.link != null && data.link != '') {
+				var link = document.createElement('a');
+				link.href = data.link;
+				var lnktxt = document.createTextNode('>');
+				link.appendChild(lnktxt);
+				li.appendChild(link);
+			}
+          	sublistul.appendChild(li);
+        } else {
+			cells = line.getElementsByTagName('th');
+			for (var k = 0; k < cells.length; k++) {
+				var cell = cells[k];
+				headers[headers.length] = stripHtml(cell.innerHTML);
+			}					
+		}
+	}
+	map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); 
+}
+
+
+var HtmlStrippingRegExp = /<\/?[^>]+>/gi;
+function stripHtml(str){
+  str = str.replace(HtmlStrippingRegExp,"");
+  return str;
+}
+
+function extractLink(ele) {
+	var aele = $('a',ele).get(0);
+	return aele != null ? aele.href : null;
+}

Added: labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/Address.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/Address.java?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/Address.java (added)
+++ labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/Address.java Mon Dec  8 14:37:55 2008
@@ -0,0 +1,22 @@
+package org.apache.magma.maps.google;
+
+import org.apache.magma.maps.GeoCoordinates;
+import org.apache.magma.maps.GeoResolvable;
+
+public class Address implements GeoResolvable {
+
+	private String address;
+	
+	public String toAddress() {
+		return getAddress();
+	}
+
+
+	public String getAddress() {
+		return address;
+	}
+	public void setAddress(String address) {
+		this.address = address;
+	}
+
+}

Added: labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/GoogleResolverTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/GoogleResolverTest.java?rev=724528&view=auto
==============================================================================
--- labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/GoogleResolverTest.java (added)
+++ labs/magma/trunk/maps-google/src/test/java/org/apache/magma/maps/google/GoogleResolverTest.java Mon Dec  8 14:37:55 2008
@@ -0,0 +1,31 @@
+package org.apache.magma.maps.google;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.*;
+import static org.junit.matchers.JUnitMatchers.*;
+
+import org.apache.magma.maps.GeoCoordinates;
+import org.apache.magma.maps.GeoCoordinates.Accuracy;
+import org.apache.magma.maps.GeoResolver.ResolveResult;
+import org.junit.Test;
+
+
+public class GoogleResolverTest {
+
+	@Test
+	public void simpleResolve() throws Exception {
+		GoogleMapsResolver resolver = new GoogleMapsResolver();
+		Address address = new Address();
+		address.setAddress("Via Tiburtina 1238, 00131, Roma, Italia");
+		ResolveResult result = resolver.resolve(address);
+		assertNotNull(result);
+		assertEquals(ResolveResult.DONE, result);
+		GeoCoordinates coords = address.getCoordinates();
+		assertNotNull(coords);
+		assertThat(coords.getCoordinatesAccuracy(), 
+				either(equalTo(Accuracy.ADDRESS))
+				.or(equalTo(Accuracy.INTERSECTION))
+				.or(equalTo(Accuracy.BUILDING)));
+	}
+	
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org