Ticket #18522: 18522.patch

File 18522.patch, 5.0 KB (added by taylor.smock, 5 months ago)

Initial work on allowing <source> tags in imagery information, to be used when obtaining source information from layers

  • src/org/openstreetmap/josm/data/imagery/ImageryInfo.java

     
    235235    private String origName;
    236236    /** (original) language of the translated name entry */
    237237    private String langName;
     238    /** preferred source tag value (for changeset source) */
     239    private String source;
    238240    /** whether this is a entry activated by default or not */
    239241    private boolean defaultEntry;
    240242    /** Whether this service requires a explicit EULA acceptance before it can be activated */
     
    357359        @StructEntry boolean transparent;
    358360        @StructEntry int minimumTileExpire;
    359361        @StructEntry String category;
     362        @StructEntry
     363        String source;
    360364
    361365        /**
    362366         * Constructs a new empty WMS {@code ImageryPreferenceEntry}.
     
    393397            icon = i.icon;
    394398            description = i.description;
    395399            category = i.category != null ? i.category.getCategoryString() : null;
     400            source = i.source;
    396401            if (i.bounds != null) {
    397402                bounds = i.bounds.encodeAsString(",");
    398403                StringBuilder shapesString = new StringBuilder();
     
    585590        transparent = e.transparent;
    586591        minimumTileExpire = e.minimumTileExpire;
    587592        category = ImageryCategory.fromString(e.category);
     593        source = e.source;
    588594    }
    589595
    590596    /**
     
    633639        this.transparent = i.transparent;
    634640        this.minimumTileExpire = i.minimumTileExpire;
    635641        this.category = i.category;
     642        this.source = i.source;
    636643    }
    637644
    638645    @Override
     
    688695                Objects.equals(this.customHttpHeaders, other.customHttpHeaders) &&
    689696                Objects.equals(this.transparent, other.transparent) &&
    690697                Objects.equals(this.minimumTileExpire, other.minimumTileExpire) &&
    691                 Objects.equals(this.category, other.category);
     698                Objects.equals(this.category, other.category) && Objects.equals(this.source, other.source);
    692699        // CHECKSTYLE.ON: BooleanExpressionComplexity
    693700    }
    694701
     
    984991    }
    985992
    986993    /**
     994     * Returns the entry preferred source tag
     995     *
     996     * @return The preferred source tag. May be null or an empty string.
     997     * @since xxx
     998     */
     999    public String getSource() {
     1000        return source;
     1001    }
     1002
     1003    /**
     1004     * Returns the entry preferred source tag
     1005     *
     1006     * @param source The preferred source tag for the source
     1007     * @since xxx
     1008     */
     1009    public void setSource(String source) {
     1010        this.source = source;
     1011    }
     1012
     1013    /**
    9871014     * Store the id of this info to the preferences and clear it afterwards.
    9881015     */
    9891016    public void clearId() {
     
    16311658                // Retrieve english name, unfortunately not saved in preferences
    16321659                Optional<ImageryInfo> infoEn = ImageryLayerInfo.allDefaultLayers.stream().filter(x -> id.equals(x.getId())).findAny();
    16331660                if (infoEn.isPresent()) {
    1634                     return infoEn.get().getOriginalName();
     1661                    ImageryInfo info = infoEn.get();
     1662                    String sourceTag = info.getSource();
     1663                    return sourceTag == null || sourceTag.trim().isEmpty() ? info.getOriginalName() : sourceTag;
    16351664                }
    16361665            }
    16371666            return getOriginalName();
  • src/org/openstreetmap/josm/gui/layer/ImageryLayer.java

     
    357357
    358358    @Override
    359359    public String getChangesetSourceTag() {
    360         return getInfo().getSourceName();
     360        String potentialSource = getInfo().getSourceName();
     361        return potentialSource != null && !potentialSource.trim().isEmpty() ? potentialSource
     362                : getInfo().getSourceName();
    361363    }
    362364}
  • src/org/openstreetmap/josm/io/imagery/ImageryReader.java

     
    222222                        "permission-ref",
    223223                        "country-code",
    224224                        "category",
     225                        "source",
    225226                        "icon",
    226227                        "date",
    227228                        TILE_SIZE,
     
    528529                        entry.setImageryCategory(category);
    529530                    entry.setImageryCategoryOriginalString(cat);
    530531                    break;
     532                case "source":
     533                    entry.setSource(accumulator.toString());
     534                    break;
    531535                default: // Do nothing
    532536                }
    533537                break;