Ignore:
Timestamp:
2018-12-17T16:15:05+01:00 (5 years ago)
Author:
Don-vip
Message:

see #16073 - improve WMTS parsing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java

    r14507 r14572  
    22package org.openstreetmap.josm.data.imagery;
    33
     4import static org.openstreetmap.josm.data.imagery.GetCapabilitiesParseHelper.QN_OWS_DCP;
     5import static org.openstreetmap.josm.data.imagery.GetCapabilitiesParseHelper.QN_OWS_GET;
     6import static org.openstreetmap.josm.data.imagery.GetCapabilitiesParseHelper.QN_OWS_HTTP;
     7import static org.openstreetmap.josm.data.imagery.GetCapabilitiesParseHelper.QN_OWS_IDENTIFIER;
     8import static org.openstreetmap.josm.data.imagery.GetCapabilitiesParseHelper.QN_OWS_OPERATION;
     9import static org.openstreetmap.josm.data.imagery.GetCapabilitiesParseHelper.QN_OWS_OPERATIONS_METADATA;
     10import static org.openstreetmap.josm.data.imagery.GetCapabilitiesParseHelper.QN_OWS_SUPPORTED_CRS;
     11import static org.openstreetmap.josm.data.imagery.GetCapabilitiesParseHelper.QN_OWS_TITLE;
    412import static org.openstreetmap.josm.tools.I18n.tr;
    513
     
    7482
    7583    // CHECKSTYLE.OFF: SingleSpaceSeparator
    76     private static final QName QN_CONTENTS            = new QName(WMTSTileSource.WMTS_NS_URL, "Contents");
    77     private static final QName QN_DEFAULT             = new QName(WMTSTileSource.WMTS_NS_URL, "Default");
    78     private static final QName QN_DIMENSION           = new QName(WMTSTileSource.WMTS_NS_URL, "Dimension");
    79     private static final QName QN_FORMAT              = new QName(WMTSTileSource.WMTS_NS_URL, "Format");
    80     private static final QName QN_LAYER               = new QName(WMTSTileSource.WMTS_NS_URL, "Layer");
    81     private static final QName QN_MATRIX_WIDTH        = new QName(WMTSTileSource.WMTS_NS_URL, "MatrixWidth");
    82     private static final QName QN_MATRIX_HEIGHT       = new QName(WMTSTileSource.WMTS_NS_URL, "MatrixHeight");
    83     private static final QName QN_RESOURCE_URL        = new QName(WMTSTileSource.WMTS_NS_URL, "ResourceURL");
    84     private static final QName QN_SCALE_DENOMINATOR   = new QName(WMTSTileSource.WMTS_NS_URL, "ScaleDenominator");
    85     private static final QName QN_STYLE               = new QName(WMTSTileSource.WMTS_NS_URL, "Style");
    86     private static final QName QN_TILEMATRIX          = new QName(WMTSTileSource.WMTS_NS_URL, "TileMatrix");
    87     private static final QName QN_TILEMATRIXSET       = new QName(WMTSTileSource.WMTS_NS_URL, "TileMatrixSet");
    88     private static final QName QN_TILEMATRIX_SET_LINK = new QName(WMTSTileSource.WMTS_NS_URL, "TileMatrixSetLink");
    89     private static final QName QN_TILE_WIDTH          = new QName(WMTSTileSource.WMTS_NS_URL, "TileWidth");
    90     private static final QName QN_TILE_HEIGHT         = new QName(WMTSTileSource.WMTS_NS_URL, "TileHeight");
    91     private static final QName QN_TOPLEFT_CORNER      = new QName(WMTSTileSource.WMTS_NS_URL, "TopLeftCorner");
    92     private static final QName QN_VALUE               = new QName(WMTSTileSource.WMTS_NS_URL, "Value");
     84    private static final QName QN_CONTENTS            = new QName(WMTS_NS_URL, "Contents");
     85    private static final QName QN_DEFAULT             = new QName(WMTS_NS_URL, "Default");
     86    private static final QName QN_DIMENSION           = new QName(WMTS_NS_URL, "Dimension");
     87    private static final QName QN_FORMAT              = new QName(WMTS_NS_URL, "Format");
     88    private static final QName QN_LAYER               = new QName(WMTS_NS_URL, "Layer");
     89    private static final QName QN_MATRIX_WIDTH        = new QName(WMTS_NS_URL, "MatrixWidth");
     90    private static final QName QN_MATRIX_HEIGHT       = new QName(WMTS_NS_URL, "MatrixHeight");
     91    private static final QName QN_RESOURCE_URL        = new QName(WMTS_NS_URL, "ResourceURL");
     92    private static final QName QN_SCALE_DENOMINATOR   = new QName(WMTS_NS_URL, "ScaleDenominator");
     93    private static final QName QN_STYLE               = new QName(WMTS_NS_URL, "Style");
     94    private static final QName QN_TILEMATRIX          = new QName(WMTS_NS_URL, "TileMatrix");
     95    private static final QName QN_TILEMATRIXSET       = new QName(WMTS_NS_URL, "TileMatrixSet");
     96    private static final QName QN_TILEMATRIX_SET_LINK = new QName(WMTS_NS_URL, "TileMatrixSetLink");
     97    private static final QName QN_TILE_WIDTH          = new QName(WMTS_NS_URL, "TileWidth");
     98    private static final QName QN_TILE_HEIGHT         = new QName(WMTS_NS_URL, "TileHeight");
     99    private static final QName QN_TOPLEFT_CORNER      = new QName(WMTS_NS_URL, "TopLeftCorner");
     100    private static final QName QN_VALUE               = new QName(WMTS_NS_URL, "Value");
    93101    // CHECKSTYLE.ON: SingleSpaceSeparator
    94102
     
    298306    private TileMatrixSet currentTileMatrixSet;
    299307    private double crsScale;
    300     private final GetCapabilitiesParseHelper.TransferMode transferMode;
     308    private final TransferMode transferMode;
    301309
    302310    private ScaleList nativeScaleList;
     
    417425                for (int event = reader.getEventType(); reader.hasNext(); event = reader.next()) {
    418426                    if (event == XMLStreamReader.START_ELEMENT) {
    419                         if (GetCapabilitiesParseHelper.QN_OWS_OPERATIONS_METADATA.equals(reader.getName())) {
     427                        QName qName = reader.getName();
     428                        if (QN_OWS_OPERATIONS_METADATA.equals(qName)) {
    420429                            ret = parseOperationMetadata(reader);
    421                         }
    422 
    423                         if (QN_CONTENTS.equals(reader.getName())) {
     430                        } else if (QN_CONTENTS.equals(qName)) {
    424431                            layers = parseContents(reader);
    425432                        }
     
    466473                event = reader.next()) {
    467474            if (event == XMLStreamReader.START_ELEMENT) {
    468                 if (QN_LAYER.equals(reader.getName())) {
     475                QName qName = reader.getName();
     476                if (QN_LAYER.equals(qName)) {
    469477                    Layer l = parseLayer(reader);
    470478                    if (l != null) {
    471479                        layers.add(l);
    472480                    }
    473                 }
    474                 if (QN_TILEMATRIXSET.equals(reader.getName())) {
     481                } else if (QN_TILEMATRIXSET.equals(qName)) {
    475482                    TileMatrixSet entry = parseTileMatrixSet(reader);
    476483                    matrixSetById.put(entry.identifier, entry);
     
    512519                event = reader.next()) {
    513520            if (event == XMLStreamReader.START_ELEMENT) {
    514                 tagStack.push(reader.getName());
     521                QName qName = reader.getName();
     522                tagStack.push(qName);
    515523                if (tagStack.size() == 2) {
    516                     if (QN_FORMAT.equals(reader.getName())) {
     524                    if (QN_FORMAT.equals(qName)) {
    517525                        String format = reader.getElementText();
    518526                        if (supportedMimeTypes.contains(format)) {
     
    521529                            unsupportedFormats.add(format);
    522530                        }
    523                     } else if (GetCapabilitiesParseHelper.QN_OWS_IDENTIFIER.equals(reader.getName())) {
     531                    } else if (QN_OWS_IDENTIFIER.equals(qName)) {
    524532                        layer.identifier = reader.getElementText();
    525                     } else if (GetCapabilitiesParseHelper.QN_OWS_TITLE.equals(reader.getName())) {
     533                    } else if (QN_OWS_TITLE.equals(qName)) {
    526534                        layer.title = reader.getElementText();
    527                     } else if (QN_RESOURCE_URL.equals(reader.getName()) &&
     535                    } else if (QN_RESOURCE_URL.equals(qName) &&
    528536                            "tile".equals(reader.getAttributeValue("", "resourceType"))) {
    529537                        layer.baseUrl = reader.getAttributeValue("", "template");
    530                     } else if (QN_STYLE.equals(reader.getName()) &&
     538                    } else if (QN_STYLE.equals(qName) &&
    531539                            "true".equals(reader.getAttributeValue("", "isDefault"))) {
    532                         if (GetCapabilitiesParseHelper.moveReaderToTag(reader, GetCapabilitiesParseHelper.QN_OWS_IDENTIFIER)) {
     540                        if (GetCapabilitiesParseHelper.moveReaderToTag(reader, QN_OWS_IDENTIFIER)) {
    533541                            layer.style = reader.getElementText();
    534542                            tagStack.push(reader.getName()); // keep tagStack in sync
    535543                        }
    536                     } else if (QN_DIMENSION.equals(reader.getName())) {
     544                    } else if (QN_DIMENSION.equals(qName)) {
    537545                        layer.dimensions.add(parseDimension(reader));
    538                     } else if (QN_TILEMATRIX_SET_LINK.equals(reader.getName())) {
     546                    } else if (QN_TILEMATRIX_SET_LINK.equals(qName)) {
    539547                        layer.tileMatrixSetLinks.add(parseTileMatrixSetLink(reader));
    540548                    } else {
     
    579587                event = reader.next()) {
    580588            if (event == XMLStreamReader.START_ELEMENT) {
    581                 if (GetCapabilitiesParseHelper.QN_OWS_IDENTIFIER.equals(reader.getName())) {
     589                QName qName = reader.getName();
     590                if (QN_OWS_IDENTIFIER.equals(qName)) {
    582591                    ret.identifier = reader.getElementText();
    583                 } else if (QN_DEFAULT.equals(reader.getName())) {
     592                } else if (QN_DEFAULT.equals(qName)) {
    584593                    ret.defaultValue = reader.getElementText();
    585                 } else if (QN_VALUE.equals(reader.getName())) {
     594                } else if (QN_VALUE.equals(qName)) {
    586595                    ret.values.add(reader.getElementText());
    587596                }
     
    623632                event = reader.next()) {
    624633                    if (event == XMLStreamReader.START_ELEMENT) {
    625                         if (GetCapabilitiesParseHelper.QN_OWS_IDENTIFIER.equals(reader.getName())) {
     634                        QName qName = reader.getName();
     635                        if (QN_OWS_IDENTIFIER.equals(qName)) {
    626636                            matrixSet.identifier = reader.getElementText();
    627                         }
    628                         if (GetCapabilitiesParseHelper.QN_OWS_SUPPORTED_CRS.equals(reader.getName())) {
     637                        } else if (QN_OWS_SUPPORTED_CRS.equals(qName)) {
    629638                            matrixSet.crs = GetCapabilitiesParseHelper.crsToCode(reader.getElementText());
    630                         }
    631                         if (QN_TILEMATRIX.equals(reader.getName())) {
     639                        } else if (QN_TILEMATRIX.equals(qName)) {
    632640                            matrixSet.tileMatrix.add(parseTileMatrix(reader, matrixSet.crs));
    633641                        }
     
    652660                event = reader.next()) {
    653661            if (event == XMLStreamReader.START_ELEMENT) {
    654                 if (GetCapabilitiesParseHelper.QN_OWS_IDENTIFIER.equals(reader.getName())) {
     662                QName qName = reader.getName();
     663                if (QN_OWS_IDENTIFIER.equals(qName)) {
    655664                    ret.identifier = reader.getElementText();
    656                 }
    657                 if (QN_SCALE_DENOMINATOR.equals(reader.getName())) {
     665                } else if (QN_SCALE_DENOMINATOR.equals(qName)) {
    658666                    ret.scaleDenominator = Double.parseDouble(reader.getElementText());
    659                 }
    660                 if (QN_TOPLEFT_CORNER.equals(reader.getName())) {
     667                } else if (QN_TOPLEFT_CORNER.equals(qName)) {
    661668                    String[] topLeftCorner = reader.getElementText().split(" ");
    662669                    if (matrixProj.switchXY()) {
     
    665672                        ret.topLeftCorner = new EastNorth(Double.parseDouble(topLeftCorner[0]), Double.parseDouble(topLeftCorner[1]));
    666673                    }
    667                 }
    668                 if (QN_TILE_HEIGHT.equals(reader.getName())) {
     674                } else if (QN_TILE_HEIGHT.equals(qName)) {
    669675                    ret.tileHeight = Integer.parseInt(reader.getElementText());
    670                 }
    671                 if (QN_TILE_WIDTH.equals(reader.getName())) {
     676                } else if (QN_TILE_WIDTH.equals(qName)) {
    672677                    ret.tileWidth = Integer.parseInt(reader.getElementText());
    673                 }
    674                 if (QN_MATRIX_HEIGHT.equals(reader.getName())) {
     678                } else if (QN_MATRIX_HEIGHT.equals(qName)) {
    675679                    ret.matrixHeight = Integer.parseInt(reader.getElementText());
    676                 }
    677                 if (QN_MATRIX_WIDTH.equals(reader.getName())) {
     680                } else if (QN_MATRIX_WIDTH.equals(qName)) {
    678681                    ret.matrixWidth = Integer.parseInt(reader.getElementText());
    679682                }
     
    698701        for (int event = reader.getEventType();
    699702                reader.hasNext() && !(event == XMLStreamReader.END_ELEMENT &&
    700                         GetCapabilitiesParseHelper.QN_OWS_OPERATIONS_METADATA.equals(reader.getName()));
     703                        QN_OWS_OPERATIONS_METADATA.equals(reader.getName()));
    701704                event = reader.next()) {
    702705            if (event == XMLStreamReader.START_ELEMENT &&
    703                     GetCapabilitiesParseHelper.QN_OWS_OPERATION.equals(reader.getName()) &&
     706                    QN_OWS_OPERATION.equals(reader.getName()) &&
    704707                    "GetTile".equals(reader.getAttributeValue("", "name")) &&
    705                     GetCapabilitiesParseHelper.moveReaderToTag(reader,
    706                             GetCapabilitiesParseHelper.QN_OWS_DCP,
    707                             GetCapabilitiesParseHelper.QN_OWS_HTTP,
    708                             GetCapabilitiesParseHelper.QN_OWS_GET
    709                     )) {
     708                    GetCapabilitiesParseHelper.moveReaderToTag(reader, QN_OWS_DCP, QN_OWS_HTTP, QN_OWS_GET)) {
    710709                return new WMTSCapabilities(
    711710                        reader.getAttributeValue(GetCapabilitiesParseHelper.XLINK_NS_URL, "href"),
Note: See TracChangeset for help on using the changeset viewer.