Ticket #19545: josm-units.patch

File josm-units.patch, 4.7 KB (added by anonymous, 5 years ago)

Core patch for UnitScale plugin

  • src/org/openstreetmap/josm/data/SystemOfMeasurement.java

     
    7474     * Known systems of measurement.
    7575     * @since 3406
    7676     */
    77     public static final Map<String, SystemOfMeasurement> ALL_SYSTEMS = Collections.unmodifiableMap(
     77    public static final Map<String, SystemOfMeasurement> ALL_SYSTEMS =
    7878            Stream.of(METRIC, CHINESE, IMPERIAL, NAUTICAL_MILE)
    79             .collect(Collectors.toMap(SystemOfMeasurement::getName, Function.identity())));
     79            .collect(Collectors.toMap(SystemOfMeasurement::getName, Function.identity()));
    8080
    8181    /**
    8282     * Preferences entry for system of measurement.
  • src/org/openstreetmap/josm/data/osm/DataSet.java

     
    333333        checkModifiable();
    334334        this.version = version;
    335335    }
     336   
     337    private double scale = 1;
     338   
     339    @Override
     340    public double getScale() {
     341        return scale;
     342    }
     343   
     344    @Override
     345    public void setScale(double scale) {
     346        if (scale > 0) {
     347            this.scale = scale;
     348        }
     349    }
    336350
    337351    @Override
    338352    public DownloadPolicy getDownloadPolicy() {
  • src/org/openstreetmap/josm/data/osm/OsmData.java

     
    3535     * @return the API version this dataset was created from. May be null.
    3636     */
    3737    String getVersion();
     38   
     39    double getScale();
     40   
     41    void setScale(double scale);
    3842
    3943    /**
    4044     * Returns the name of this data set (optional).
  • src/org/openstreetmap/josm/io/AbstractReader.java

     
    390390            ds.lock();
    391391        }
    392392    }
     393   
     394    protected final void parseScale(String scale) {
     395        if (scale != null) {
     396            double sc = 1;
     397            try {
     398                sc = Double.parseDouble(scale);
     399            } catch (NumberFormatException e) {
     400                sc = 1;
     401            }
     402            ds.setScale(sc);
     403        }
     404    }
    393405
    394406    protected final void parseBounds(String generator, String minlon, String minlat, String maxlon, String maxlat, String origin)
    395407            throws IllegalDataException {
  • src/org/openstreetmap/josm/io/OsmReader.java

     
    144144            parseDownloadPolicy("download", parser.getAttributeValue(null, "download"));
    145145            parseUploadPolicy("upload", parser.getAttributeValue(null, "upload"));
    146146            parseLocked(parser.getAttributeValue(null, "locked"));
     147            parseScale(parser.getAttributeValue(null, "scale"));
    147148        } catch (IllegalDataException e) {
    148149            throwException(e);
    149150        }
  • src/org/openstreetmap/josm/io/OsmWriter.java

     
    108108    }
    109109
    110110    private void header(DownloadPolicy download, UploadPolicy upload, boolean locked) {
     111        header(download, upload, locked, 1);
     112    }
     113
     114    private void header(DownloadPolicy download, UploadPolicy upload, boolean locked, double scale) {
    111115        out.println("<?xml version='1.0' encoding='UTF-8'?>");
    112116        out.print("<osm version='");
    113117        out.print(version);
     
    122126        if (locked) {
    123127            out.print("' locked='true");
    124128        }
     129        if (scale != 1 && scale > 0) {
     130            out.print("' scale='");
     131            out.print(Double.toString(scale));
     132        }
    125133        out.println("' generator='JOSM'>");
    126134    }
    127135
     
    158166     * @since 12800
    159167     */
    160168    public void write(DataSet data) {
    161         header(data.getDownloadPolicy(), data.getUploadPolicy(), data.isLocked());
     169        header(data.getDownloadPolicy(), data.getUploadPolicy(), data.isLocked(), data.getScale());
    162170        writeDataSources(data);
    163171        writeContent(data);
    164172        footer();