Ignore:
Timestamp:
2011-10-08T18:22:33+02:00 (13 years ago)
Author:
donvip
Message:

JOSM Imagery XML Bounds plugin version 1.1

Location:
applications/editors/josm/plugins/imagery-xml-bounds/src/org/openstreetmap/josm/plugins/imageryxmlbounds
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/imagery-xml-bounds/src/org/openstreetmap/josm/plugins/imageryxmlbounds/ImageryXmlBoundsPlugin.java

    r26776 r26808  
    2727
    2828/**
    29  * Main class of Imagery XLM bounds plugin.
     29 * Main class of Imagery XML bounds plugin.
    3030 * @author Don-vip
    31  * @version 1.0
     31 * @version 1.1
    3232 * History:
    33  * 2.0 03-Oct-2011 first version
     33 * 1.1 08-Oct-2011 Update for #6934 and JOSM 4506, code refactorisation, removing debug code
     34 * 1.0 03-Oct-2011 first version
    3435 */
    3536public class ImageryXmlBoundsPlugin extends Plugin {
  • applications/editors/josm/plugins/imagery-xml-bounds/src/org/openstreetmap/josm/plugins/imageryxmlbounds/XmlBoundsConstants.java

    r26776 r26808  
    3333         * Plugin version.
    3434         */
    35         public static final String PLUGIN_VERSION = "1.0";
     35        public static final String PLUGIN_VERSION = "1.1";
    3636       
    3737        /**
     
    4545        public static final String XML_SCHEMA = "resource://data/maps.xsd";
    4646       
    47         /**
    48          * Prefix used in front of OSM keys.
    49          */
    50         public static final String PREFIX = "imagery:";
    51        
     47    /**
     48     * XML tags
     49     */
     50    public static final String XML_NAME = "name";
     51    public static final String XML_TYPE = "type";
     52    public static final String XML_URL = "url";
     53    public static final String XML_DEFAULT = "default";
     54    public static final String XML_EULA = "eula";
     55    public static final String XML_ATTR_TEXT = "attribution-text";
     56    public static final String XML_ATTR_URL = "attribution-url";
     57    public static final String XML_TERMS_TEXT = "terms-of-use-text";
     58    public static final String XML_TERMS_URL = "terms-of-use-url";
     59    public static final String XML_PROJECTIONS = "projections";
     60    public static final String XML_MAX_ZOOM = "max-zoom";
     61    public static final String XML_MIN_ZOOM = "min-zoom";
     62    public static final String XML_COUNTRY_CODE = "country-code";
     63    public static final String XML_LOGO_IMAGE = "logo-image";// TODO
     64    public static final String XML_LOGO_URL = "logo-url";
     65
     66    /**
     67     * Prefix used in front of OSM keys.
     68     */
     69    public static final String PREFIX = "imagery:";
     70
    5271        /**
    5372         * OSM keys, equivalent to those used in XML schema, but prefixed (except for name).
    5473         */
    55         public static final String KEY_NAME = "name";
    56         public static final String KEY_TYPE = PREFIX + "type";
    57         public static final String KEY_URL = PREFIX + "url";
    58         public static final String KEY_DEFAULT = PREFIX + "default";
    59         public static final String KEY_EULA = PREFIX + "eula";
    60         public static final String KEY_ATTR_TEXT = PREFIX + "attribution-text";
    61         public static final String KEY_ATTR_URL = PREFIX + "attribution-url";
    62         public static final String KEY_TERMS_URL = PREFIX + "terms-of-use-url";
    63         public static final String KEY_PROJECTIONS = PREFIX + "projections";
    64         public static final String KEY_MAX_ZOOM = PREFIX + "max-zoom";
    65         public static final String KEY_MIN_ZOOM = PREFIX + "min-zoom";
    66         public static final String KEY_COUNTRY_CODE = PREFIX + "country-code";
     74        public static final String KEY_NAME = XML_NAME;
     75        public static final String KEY_TYPE = PREFIX + XML_TYPE;
     76        public static final String KEY_URL = PREFIX + XML_URL;
     77        public static final String KEY_DEFAULT = PREFIX + XML_DEFAULT;
     78        public static final String KEY_EULA = PREFIX + XML_EULA;
     79        public static final String KEY_ATTR_TEXT = PREFIX + XML_ATTR_TEXT;
     80        public static final String KEY_ATTR_URL = PREFIX + XML_ATTR_URL;
     81    public static final String KEY_TERMS_TEXT = PREFIX + XML_TERMS_TEXT;
     82        public static final String KEY_TERMS_URL = PREFIX + XML_TERMS_URL;
     83        public static final String KEY_PROJECTIONS = PREFIX + XML_PROJECTIONS;
     84        public static final String KEY_MAX_ZOOM = PREFIX + XML_MAX_ZOOM;
     85        public static final String KEY_MIN_ZOOM = PREFIX + XML_MIN_ZOOM;
     86        public static final String KEY_COUNTRY_CODE = PREFIX + XML_COUNTRY_CODE;
     87    public static final String KEY_LOGO_IMAGE = PREFIX + XML_LOGO_IMAGE;// TODO
     88    public static final String KEY_LOGO_URL = PREFIX + XML_LOGO_URL;
    6789       
    6890        /**
  • applications/editors/josm/plugins/imagery-xml-bounds/src/org/openstreetmap/josm/plugins/imageryxmlbounds/XmlBoundsImporter.java

    r26776 r26808  
    148148                safePut(osmImagery, KEY_PROJECTIONS, imagery.getServerProjections());
    149149                safePut(osmImagery, KEY_EULA, imagery.getEulaAcceptanceRequired());
    150                 safePut(osmImagery, KEY_ATTR_TEXT, imagery.getAttributionText());
     150                safePut(osmImagery, KEY_ATTR_TEXT, imagery.getAttributionText(0, null, null));
    151151                safePut(osmImagery, KEY_ATTR_URL, imagery.getAttributionLinkURL());
     152        safePut(osmImagery, KEY_TERMS_TEXT, imagery.getTermsOfUseText());
    152153                safePut(osmImagery, KEY_TERMS_URL, imagery.getTermsOfUseURL());
    153154                safePut(osmImagery, KEY_COUNTRY_CODE, imagery.getCountryCode());
     155                safePut(osmImagery, KEY_LOGO_URL, imagery.getAttributionImageURL());
    154156
    155157                if (imagery.getImageryType().equals(ImageryType.TMS)) {
  • applications/editors/josm/plugins/imagery-xml-bounds/src/org/openstreetmap/josm/plugins/imageryxmlbounds/actions/ComputeBoundsAction.java

    r26776 r26808  
    120120        }
    121121       
     122    protected static final String startTag(String tag) {
     123        return "<" + tag + ">";
     124    }
     125
     126    protected static final String startMandatoryTag(String tag) {
     127        return "<" + tag + " mandatory='true'>";
     128    }
     129
     130    protected static final String endTag(String tag) {
     131        return "</" + tag + ">";
     132    }
     133
     134    protected static final String simpleTag(String tag, String content) {
     135        return simpleTag(tag, content, "");
     136    }
     137
     138    protected static final String simpleTag(String tag, String content, boolean escape) {
     139        return simpleTag(tag, content, "", escape);
     140    }
     141
     142    protected static final String simpleTag(String tag, String content, String def) {
     143        return simpleTag(tag, content, def, true);
     144    }
     145
     146    protected static final String simpleTag(String tag, String content, String def, boolean escape) {
     147        return startTag(tag) + (content != null
     148                ? (escape ? escapeReservedCharacters(content) : content)
     149                : def
     150                ) + endTag(tag);
     151    }
     152
     153    protected static final String mandatoryTag(String tag, String content) {
     154        return mandatoryTag(tag, content, true);
     155    }
     156
     157    protected static final String mandatoryTag(String tag, String content, boolean escape) {
     158        return startMandatoryTag(tag) + (escape ? escapeReservedCharacters(content) : content) + endTag(tag);
     159    }
     160
     161    public static String escapeReservedCharacters(String s) {
     162        return s == null ? "" : s.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
     163    }
     164   
    122165        protected static final String getXml(OsmPrimitive ... primitives) {
    123166                List<String> entries = new ArrayList<String>();
     
    144187       
    145188        protected static final String getEntry(OsmPrimitive p, String bounds) {
    146                 return getEntry(p.get(KEY_NAME), p.get(KEY_TYPE), p.get(KEY_URL), bounds, p.get(KEY_PROJECTIONS), p.get(KEY_EULA), p.get(KEY_ATTR_TEXT), p.get(KEY_ATTR_URL), p.get(KEY_COUNTRY_CODE));
    147         }
    148        
    149         protected static final String getEntry(String name, String type, String url, String bounds, String projections, String eula, String attributionText, String attributionUrl, String countryCode) {
     189                return getEntry(p.get(KEY_NAME), p.get(KEY_TYPE), p.get(KEY_DEFAULT), p.get(KEY_URL), bounds, p.get(KEY_PROJECTIONS), p.get(KEY_LOGO_URL),
     190                        p.get(KEY_EULA), p.get(KEY_ATTR_TEXT), p.get(KEY_ATTR_URL),  p.get(KEY_TERMS_TEXT), p.get(KEY_TERMS_URL), p.get(KEY_COUNTRY_CODE), p.get(KEY_MAX_ZOOM), p.get(KEY_MIN_ZOOM));
     191        }
     192       
     193        protected static final boolean isSet(String tag) {
     194            return tag != null && !tag.isEmpty();
     195        }
     196       
     197        protected static final String getEntry(String name, String type, String def, String url, String bounds, String projections, String logoURL,
     198                String eula, String attributionText, String attributionUrl, String termsText, String termsUrl, String countryCode, String maxZoom, String minZoom) {
    150199                String result =
    151200            "    <entry>\n"+
    152             "        <name>"+ (name != null ? name : "") +"</name>\n"+
    153             "        <type>"+ (type != null ? type : "wms") +"</type>\n"+
    154             "        <url>" + (url != null ? encodeUrl(url) : "") +"</url>\n"+
     201        "        " + simpleTag(XML_NAME, name) + "\n"+
     202        "        " + simpleTag(XML_TYPE, type, "wms") + "\n"+
     203        "        " + simpleTag(XML_URL, url != null ? encodeUrl(url) : "") + "\n"+
    155204                     bounds+"\n";
    156205                if (projections != null && !projections.isEmpty()) {
    157                         result += "        <projections>\n";
     206                        result += "        "+startTag(XML_PROJECTIONS)+"\n";
    158207                        int i = 0;
    159208                        String[] codes = projections.split(";");
     
    162211                                        result += "            ";
    163212                                }
    164                                 result += "<code>"+code.trim()+"</code>";
     213                                result += simpleTag("code", code.trim());
    165214                                if (i%6 == 5 || i == codes.length-1 ) {
    166215                                        result += "\n";
     
    168217                                i++;
    169218                        }
    170                         result += "        </projections>\n";
    171                 }
    172                 if (eula != null && !eula.isEmpty()) {
    173                         result += "        <eula mandatory='true'>"+encodeUrl(eula)+"></eula>\n";
    174                 }
    175                 if (attributionText != null && !attributionText.isEmpty()) {
    176                         result += "        <attribution-text mandatory='true'>"+attributionText+"</attribution-text>\n";
    177                 }
    178                 if (attributionUrl != null && !attributionUrl.isEmpty()) {
    179                         result += "        <attribution-url>"+encodeUrl(attributionUrl)+"</attribution-url>\n";
    180                 }
    181                 if (countryCode != null && !countryCode.isEmpty()) {
    182                         result += "        <country-code>"+countryCode+"</country-code>\n";
     219                        result += "        "+endTag(XML_PROJECTIONS)+"\n";
     220                }
     221        if (isSet(def) && def.equals("true")) {
     222            result += "        " + simpleTag(XML_DEFAULT, def) + "\n";
     223        }
     224                if (isSet(eula)) {
     225                        result += "        " + mandatoryTag(XML_EULA, encodeUrl(eula), false) + "\n";
     226                }
     227                if (isSet(attributionText)) {
     228            result += "        " + mandatoryTag(XML_ATTR_TEXT, attributionText) + "\n";
     229                }
     230                if (isSet(attributionUrl)) {
     231            result += "        " + simpleTag(XML_ATTR_URL, encodeUrl(attributionUrl), false) + "\n";
     232                }
     233        if (isSet(termsText)) {
     234            result += "        " + simpleTag(XML_TERMS_TEXT, termsText) + "\n";
     235        }
     236        if (isSet(termsUrl)) {
     237            result += "        " + simpleTag(XML_TERMS_URL, encodeUrl(termsUrl), false) + "\n";
     238        }
     239        if (isSet(logoURL)) {
     240            result += "        " + simpleTag(XML_LOGO_URL, encodeUrl(logoURL), false) + "\n";
     241        }
     242                if (isSet(countryCode)) {
     243            result += "        " + simpleTag(XML_COUNTRY_CODE, countryCode) + "\n";
     244                }
     245                if ("tms".equals(type)) {
     246                    if (isSet(maxZoom)) {
     247                        result += "        " + simpleTag(XML_MAX_ZOOM, maxZoom) + "\n";
     248                    }
     249            if (isSet(minZoom)) {
     250                result += "        " + simpleTag(XML_MIN_ZOOM, minZoom) + "\n";
     251            }
    183252                }
    184253            result += "    </entry>";
     
    253322                        }
    254323                       
    255                         boolean result = latMap.size() == 2 && lonMap.size() == 2
     324                        return latMap.size() == 2 && lonMap.size() == 2
    256325                                        && latMap.containsKey(bBox.getBottomRight().lat()) && latMap.containsKey(bBox.getTopLeft().lat())
    257326                                        && lonMap.containsKey(bBox.getBottomRight().lon()) && lonMap.containsKey(bBox.getTopLeft().lon());
    258                         System.out.println(result);
    259                         return result;
    260327                }
    261328                return false;
Note: See TracChangeset for help on using the changeset viewer.