001// License: GPL. For details, see Readme.txt file.
002package org.openstreetmap.gui.jmapviewer.tilesources;
003
004import java.awt.Image;
005import java.util.List;
006import java.util.Map;
007
008import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
009import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
010
011public abstract class AbstractTileSource implements TileSource {
012
013    protected String attributionText;
014    protected String attributionLinkURL;
015    protected Image attributionImage;
016    protected String attributionImageURL;
017    protected String termsOfUseText;
018    protected String termsOfUseURL;
019
020    @Override
021    public boolean requiresAttribution() {
022        return attributionText != null || attributionLinkURL != null || attributionImage != null
023                || termsOfUseText != null || termsOfUseURL != null;
024    }
025
026    @Override
027    public String getAttributionText(int zoom, ICoordinate topLeft, ICoordinate botRight) {
028        return attributionText;
029    }
030
031    @Override
032    public String getAttributionLinkURL() {
033        return attributionLinkURL;
034    }
035
036    @Override
037    public Image getAttributionImage() {
038        return attributionImage;
039    }
040
041    @Override
042    public String getAttributionImageURL() {
043        return attributionImageURL;
044    }
045
046    @Override
047    public String getTermsOfUseText() {
048        return termsOfUseText;
049    }
050
051    @Override
052    public String getTermsOfUseURL() {
053        return termsOfUseURL;
054    }
055
056    public void setAttributionText(String attributionText) {
057        this.attributionText = attributionText;
058    }
059
060    public void setAttributionLinkURL(String attributionLinkURL) {
061        this.attributionLinkURL = attributionLinkURL;
062    }
063
064    public void setAttributionImage(Image attributionImage) {
065        this.attributionImage = attributionImage;
066    }
067
068    public void setAttributionImageURL(String attributionImageURL) {
069        this.attributionImageURL = attributionImageURL;
070    }
071
072    public void setTermsOfUseText(String termsOfUseText) {
073        this.termsOfUseText = termsOfUseText;
074    }
075
076    public void setTermsOfUseURL(String termsOfUseURL) {
077        this.termsOfUseURL = termsOfUseURL;
078    }
079
080    @Override
081    public boolean isNoTileAtZoom(Map<String, List<String>> headers, int statusCode, byte[] content) {
082        // default handler - when HTTP 404 is returned, then treat this situation as no tile at this zoom level
083        return statusCode == 404;
084    }
085}