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 || attributionImage != null || termsOfUseText != null || termsOfUseURL != null;
023    }
024
025    @Override
026    public String getAttributionText(int zoom, ICoordinate topLeft, ICoordinate botRight) {
027        return attributionText;
028    }
029
030    @Override
031    public String getAttributionLinkURL() {
032        return attributionLinkURL;
033    }
034
035    @Override
036    public Image getAttributionImage() {
037        return attributionImage;
038    }
039
040    @Override
041    public String getAttributionImageURL() {
042        return attributionImageURL;
043    }
044
045    @Override
046    public String getTermsOfUseText() {
047        return termsOfUseText;
048    }
049
050    @Override
051    public String getTermsOfUseURL() {
052        return termsOfUseURL;
053    }
054
055    public void setAttributionText(String attributionText) {
056        this.attributionText = attributionText;
057    }
058
059    public void setAttributionLinkURL(String attributionLinkURL) {
060        this.attributionLinkURL = attributionLinkURL;
061    }
062
063    public void setAttributionImage(Image attributionImage) {
064        this.attributionImage = attributionImage;
065    }
066
067    public void setAttributionImageURL(String attributionImageURL) {
068        this.attributionImageURL = attributionImageURL;
069    }
070
071    public void setTermsOfUseText(String termsOfUseText) {
072        this.termsOfUseText = termsOfUseText;
073    }
074
075    public void setTermsOfUseURL(String termsOfUseURL) {
076        this.termsOfUseURL = termsOfUseURL;
077    }
078
079    @Override
080    public boolean isNoTileAtZoom(Map<String, List<String>> headers, int statusCode, byte[] content) {
081        // default handler - when HTTP 404 is returned, then treat this situation as no tile at this zoom level
082        return statusCode == 404;
083    }
084}