Changeset 34 in josm


Ignore:
Timestamp:
Dec 22, 2005 11:54:50 PM (7 years ago)
Author:
imi
Message:
  • fixed bug in movement that lat/lon was not updated
  • upload of nodes (disabled since untested)
Location:
src/org/openstreetmap/josm
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/actions/DownloadAction.java

    r33 r34  
    6161                dlg.add(new JLabel("Bounding box"), GBC.eol()); 
    6262 
     63                dlg.add(new JLabel("min lon"), GBC.std().insets(10,0,5,0)); 
     64                dlg.add(latlon[0], GBC.std()); 
    6365                dlg.add(new JLabel("min lat"), GBC.std().insets(10,0,5,0)); 
    64                 dlg.add(latlon[0], GBC.std()); 
     66                dlg.add(latlon[1], GBC.eol()); 
     67                dlg.add(new JLabel("max lon"), GBC.std().insets(10,0,5,0)); 
     68                dlg.add(latlon[2], GBC.std()); 
    6569                dlg.add(new JLabel("max lat"), GBC.std().insets(10,0,5,0)); 
    66                 dlg.add(latlon[1], GBC.eol()); 
    67                 dlg.add(new JLabel("min lon"), GBC.std().insets(10,0,5,0)); 
    68                 dlg.add(latlon[2], GBC.std()); 
    69                 dlg.add(new JLabel("max lon"), GBC.std().insets(10,0,5,0)); 
    7070                dlg.add(latlon[3], GBC.eop()); 
    7171 
     
    144144                        return; 
    145145                } 
    146                 OsmServerReader osmReader = new OsmServerReader(Main.pref.osmDataServer, 
    147                                 b.latlon[0], b.latlon[1], b.latlon[2], b.latlon[3]); 
     146                OsmServerReader osmReader = new OsmServerReader(b.latlon[0], b.latlon[1], b.latlon[2], b.latlon[3]); 
    148147                try { 
    149148                        String name = latlon[0].getText()+" "+latlon[1].getText()+" x "+ 
  • src/org/openstreetmap/josm/actions/UploadAction.java

    r33 r34  
    1515import javax.swing.KeyStroke; 
    1616 
     17import org.jdom.JDOMException; 
    1718import org.openstreetmap.josm.Main; 
    1819import org.openstreetmap.josm.data.osm.OsmPrimitive; 
    1920import org.openstreetmap.josm.gui.GBC; 
    2021import org.openstreetmap.josm.gui.OsmPrimitivRenderer; 
     22import org.openstreetmap.josm.io.OsmServerWriter; 
    2123 
    2224/** 
     
    6163                        return; 
    6264                 
    63                 JOptionPane.showMessageDialog(Main.main, "not implemented yet."); 
     65                OsmServerWriter server = new OsmServerWriter(); 
     66                try { 
     67                        Collection<OsmPrimitive> all = new LinkedList<OsmPrimitive>(); 
     68                        all.addAll(add); 
     69                        all.addAll(update); 
     70                        all.addAll(delete); 
     71                        server.uploadOsm(all); 
     72                } catch (JDOMException x) { 
     73                        x.printStackTrace(); 
     74                        JOptionPane.showMessageDialog(Main.main, x.getMessage()); 
     75                } 
    6476        } 
    6577         
  • src/org/openstreetmap/josm/command/MoveCommand.java

    r32 r34  
    66import java.util.List; 
    77 
     8import org.openstreetmap.josm.Main; 
    89import org.openstreetmap.josm.data.osm.Node; 
    910import org.openstreetmap.josm.data.osm.OsmPrimitive; 
     
    3839        class OldState 
    3940        { 
    40                 double x,y; 
     41                double x,y,lat,lon; 
    4142                boolean modified; 
    4243        } 
     
    5758                        os.x = n.coor.x; 
    5859                        os.y = n.coor.y; 
     60                        os.lat = n.coor.lat; 
     61                        os.lon = n.coor.lon; 
    5962                        os.modified = n.modified; 
    6063                        oldState.add(os); 
     
    8588                        n.coor.x += x; 
    8689                        n.coor.y += y; 
     90                        Main.pref.getProjection().xy2latlon(n.coor); 
    8791                } 
    8892                this.x += x; 
     
    9498                        n.coor.x += x; 
    9599                        n.coor.y += y; 
     100                        Main.pref.getProjection().xy2latlon(n.coor); 
    96101                        n.modified = true; 
    97102                } 
     
    104109                        n.coor.x = os.x; 
    105110                        n.coor.y = os.y; 
     111                        n.coor.lat = os.lat; 
     112                        n.coor.lon = os.lon; 
    106113                        n.modified = os.modified; 
    107114                } 
  • src/org/openstreetmap/josm/io/OsmServerReader.java

    r31 r34  
    1010 
    1111import org.jdom.JDOMException; 
     12import org.openstreetmap.josm.Main; 
    1213import org.openstreetmap.josm.data.GeoPoint; 
    1314import org.openstreetmap.josm.data.osm.DataSet; 
     
    2122 
    2223        /** 
    23          * The url string of the desired map data. 
     24         * The boundings of the desired map data. 
    2425         */ 
    25         private String urlStr; 
    2626        private final double lat1; 
    2727        private final double lon1; 
     
    3232         * Construct the reader and store the information for attaching 
    3333         */ 
    34         public OsmServerReader(String server,  
    35                         double lat1, double lon1, double lat2, double lon2) { 
     34        public OsmServerReader(double lat1, double lon1, double lat2, double lon2) { 
    3635                this.lon2 = lon2; 
    3736                this.lat2 = lat2; 
    3837                this.lon1 = lon1; 
    3938                this.lat1 = lat1; 
    40                 urlStr = server.endsWith("/") ? server : server+"/"; 
    4139        } 
    4240 
     
    4947         */ 
    5048        public Collection<Collection<GeoPoint>> parseRawGps() throws IOException, JDOMException { 
    51                 String url = urlStr+"trackpoints?bbox="+lon1+","+lat1+","+lon2+","+lat2+"&page="; 
     49                String url = Main.pref.osmDataServer+"/trackpoints?bbox="+lon1+","+lat1+","+lon2+","+lat2+"&page="; 
    5250                Collection<Collection<GeoPoint>> data = new LinkedList<Collection<GeoPoint>>(); 
    5351                Collection<GeoPoint> list = new LinkedList<GeoPoint>(); 
     
    8078         */ 
    8179        public DataSet parseOsm() throws JDOMException, IOException { 
    82                 Reader r = getReader(urlStr+"map?bbox="+lon1+","+lat1+","+lon2+","+lat2); 
     80                Reader r = getReader(Main.pref.osmDataServer+"/map?bbox="+lon1+","+lat1+","+lon2+","+lat2); 
    8381                if (r == null) 
    8482                        return null; 
     
    9593        private Reader getReader(String urlStr) throws IOException { 
    9694                initAuthentication(); 
     95                System.out.println(urlStr); 
    9796                URL url = new URL(urlStr); 
    9897                HttpURLConnection con = (HttpURLConnection)url.openConnection(); 
  • src/org/openstreetmap/josm/io/OsmServerWriter.java

    r33 r34  
    11package org.openstreetmap.josm.io; 
    22 
     3import java.io.BufferedReader; 
    34import java.io.IOException; 
     5import java.io.InputStream; 
     6import java.io.InputStreamReader; 
     7import java.io.OutputStream; 
     8import java.net.HttpURLConnection; 
     9import java.net.URL; 
     10import java.util.Collection; 
    411 
     12import org.jdom.Document; 
     13import org.jdom.Element; 
    514import org.jdom.JDOMException; 
    6 import org.openstreetmap.josm.data.osm.DataSet; 
     15import org.jdom.output.Format; 
     16import org.jdom.output.XMLOutputter; 
     17import org.openstreetmap.josm.Main; 
     18import org.openstreetmap.josm.data.osm.Key; 
     19import org.openstreetmap.josm.data.osm.LineSegment; 
     20import org.openstreetmap.josm.data.osm.Node; 
     21import org.openstreetmap.josm.data.osm.OsmPrimitive; 
     22import org.openstreetmap.josm.data.osm.Track; 
     23import org.openstreetmap.josm.data.osm.visitor.OsmXmlVisitor; 
     24import org.openstreetmap.josm.data.osm.visitor.Visitor; 
    725 
    826/** 
     
    1533 * - All remaining objects with modified flag set are updated. 
    1634 *  
     35 * This class implements visitor and will perform the correct upload action 
     36 * on the visited element.  
     37 *  
    1738 * @author imi 
    1839 */ 
    19 public class OsmServerWriter extends OsmConnection { 
     40public class OsmServerWriter extends OsmConnection implements Visitor { 
    2041 
    21          
    2242        /** 
    2343         * Send the dataset to the server. Ask the user first and does nothing if 
    2444         * he does not want to send the data. 
    2545         */ 
    26         public void uploadOsm(DataSet dataSet) throws IOException, JDOMException { 
     46        public void uploadOsm(Collection<OsmPrimitive> list) throws JDOMException { 
    2747                initAuthentication(); 
     48 
     49                try { 
     50//                      for (OsmPrimitive osm : list) 
     51//                              osm.visit(this); 
     52                } catch (RuntimeException e) { 
     53                        throw new JDOMException("An error occoured: ", e); 
     54                } 
     55        } 
     56 
     57        /** 
     58         * Upload a single node. 
     59         */ 
     60        @SuppressWarnings("unchecked") 
     61        public void visit(Node n) { 
     62                if (n.id == 0) { 
     63                        sendRequest("PUT", "newnode", n); 
     64                } else if (Main.main.ds.deleted.contains(n)) { 
     65                        sendRequest("DELETE", "node/"+n.id, n); 
     66                } else { 
     67                        sendRequest("PUT", "node/"+n.id, n); 
     68                } 
     69        } 
     70 
     71        public void visit(LineSegment ls) { 
     72        } 
     73 
     74        public void visit(Track t) { 
     75        } 
     76 
     77        public void visit(Key k) { 
     78        } 
     79 
     80        /** 
     81         * Read an long from the input stream and return it. 
     82         */ 
     83        private long readId(InputStream inputStream) throws IOException { 
     84                BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); 
     85                String s = in.readLine(); 
     86                if (s == null) 
     87                        return 0; 
     88                try { 
     89                        return Long.parseLong(s); 
     90                } catch (NumberFormatException e) { 
     91                        return 0; 
     92                } 
     93        } 
     94         
     95        @SuppressWarnings("unchecked") 
     96        private void sendRequest(String requestMethod, String urlSuffix, OsmPrimitive osm) { 
     97                try { 
     98                        URL url = new URL(Main.pref.osmDataServer + "/" + urlSuffix); 
     99                        HttpURLConnection con = (HttpURLConnection)url.openConnection(); 
     100                        con.setConnectTimeout(20000); 
     101                        con.setRequestMethod(requestMethod); 
     102                        con.setDoOutput(true); 
     103                        con.connect(); 
     104 
     105                        OsmXmlVisitor visitor = new OsmXmlVisitor(false); 
     106                        osm.visit(visitor); 
     107                        Element root = new Element("osm"); 
     108                        root.setAttribute("version", "0.2"); 
     109                        root.getChildren().add(visitor.element); 
     110                        XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat()); 
     111                        OutputStream out = con.getOutputStream(); 
     112                        Document doc = new Document(root); 
     113                        xmlOut.output(doc, out); 
     114                        xmlOut.output(doc, System.out); 
     115                        out.close(); 
     116                         
     117                        int retCode = con.getResponseCode(); 
     118                        System.out.println(retCode+" "+con.getResponseMessage()); 
     119                        if (retCode == 200 && osm.id == 0) 
     120                                osm.id = readId(con.getInputStream()); 
     121                        con.disconnect(); 
     122                } catch (Exception e) { 
     123                        throw new RuntimeException(e.getMessage(), e); 
     124                } 
    28125        } 
    29126} 
Note: See TracChangeset for help on using the changeset viewer.