Changeset 34 in josm


Ignore:
Timestamp:
2005-12-22T23:54:50+01:00 (18 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.