Webové služby, zjišťování souřadnic podniků.
1 package cz.frantovo.nekurak.ejb;
3 import java.io.UnsupportedEncodingException;
4 import java.net.URLEncoder;
5 import java.util.logging.Level;
6 import java.util.logging.Logger;
7 import javax.xml.parsers.DocumentBuilder;
8 import javax.xml.parsers.DocumentBuilderFactory;
9 import org.w3c.dom.Document;
10 import org.w3c.dom.Node;
11 import org.w3c.dom.NodeList;
14 * TODO: přesunout jinam a převést na EJB.
19 private static final Logger log = Logger.getLogger(Geo.class.getSimpleName());
22 * Převede poštovní adresu na zeměpisné souřadnice.
24 * @return souřadnice k dané adrese nebo null, v případě chyby.
26 public Souradnice getSouradnice(String adresa) {
30 * TODO: naprosto zprasené → předělat →
31 * http://code.google.com/intl/cs/apis/maps/documentation/geocoding/#XMLParsing
33 DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
34 Document d = db.parse(sestavURL(adresa));
35 NodeList mista = d.getElementsByTagName("location");
36 Node misto = mista.item(0);
37 NodeList potomci = misto.getChildNodes();
40 for (int i = 0; i < potomci.getLength(); i++) {
41 Node p = potomci.item(i);
42 System.out.println("XML:" + p.getNodeName() + "|" + p.getTextContent());
43 if ("lat".equals(p.getNodeName())) {
44 sirka = p.getTextContent();
46 if ("lng".equals(p.getNodeName())) {
47 delka = p.getTextContent();
51 if (sirka == null || delka == null) {
52 log.log(Level.WARNING, "Selhalo zjišťování souřadnic – šířka nebo délka jsou null – pro adresu: " + adresa);
55 return new Souradnice(Double.parseDouble(sirka), Double.parseDouble(delka));
57 } catch (Exception e) {
58 log.log(Level.WARNING, "Selhalo zjišťování souřadnic pro adresu: " + adresa, e);
63 private static String sestavURL(String adresa) throws UnsupportedEncodingException {
64 return "http://maps.google.com/maps/api/geocode/xml?sensor=false&address=" + URLEncoder.encode(adresa, "UTF-8");
67 public class Souradnice {
73 public String toString() {
74 return "šířka = " + sirka + "; délka = " + delka + ";";
77 public Souradnice(double sirka, double delka) {
82 public String getLoc() {
83 return "Loc: " + sirka + ", " + delka;
86 public double getDelka() {
90 public double getSirka() {
94 public void setDelka(double delka) {
98 public void setSirka(double sirka) {