Changeset 17095 in josm


Ignore:
Timestamp:
2020-10-07T19:44:55+02:00 (4 years ago)
Author:
simon04
Message:

ImageryReader: use StringParser

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java

    r16913 r17095  
    1111import java.util.Map;
    1212import java.util.Objects;
     13import java.util.Optional;
    1314import java.util.Stack;
    1415import java.util.concurrent.ConcurrentHashMap;
     
    2829import org.openstreetmap.josm.tools.Logging;
    2930import org.openstreetmap.josm.tools.MultiMap;
     31import org.openstreetmap.josm.tools.StringParser;
    3032import org.openstreetmap.josm.tools.Utils;
    3133import org.openstreetmap.josm.tools.XmlUtils;
     
    362364                    switch(qName) {
    363365                    case "type":
    364                         boolean found = false;
    365                         for (ImageryType type : ImageryType.values()) {
    366                             if (Objects.equals(accumulator.toString(), type.getTypeString())) {
    367                                 mirrorEntry.setImageryType(type);
    368                                 found = true;
    369                                 break;
    370                             }
    371                         }
    372                         if (!found) {
     366                        Optional<ImageryType> type = Arrays.stream(ImageryType.values())
     367                                .filter(t -> Objects.equals(accumulator.toString(), t.getTypeString()))
     368                                .findFirst();
     369                        if (type.isPresent()) {
     370                            mirrorEntry.setImageryType(type.get());
     371                        } else {
    373372                            mirrorEntry = null;
    374373                        }
     
    385384                    case MIN_ZOOM:
    386385                    case MAX_ZOOM:
    387                         Integer val = null;
    388                         try {
    389                             val = Integer.valueOf(accumulator.toString());
    390                         } catch (NumberFormatException e) {
    391                             val = null;
    392                         }
    393                         if (val == null) {
     386                        Optional<Integer> zoom = tryParseInt();
     387                        if (!zoom.isPresent()) {
    394388                            mirrorEntry = null;
    395389                        } else {
    396390                            if (MIN_ZOOM.equals(qName)) {
    397                                 mirrorEntry.setDefaultMinZoom(val);
     391                                mirrorEntry.setDefaultMinZoom(zoom.get());
    398392                            } else {
    399                                 mirrorEntry.setDefaultMaxZoom(val);
     393                                mirrorEntry.setDefaultMaxZoom(zoom.get());
    400394                            }
    401395                        }
    402396                        break;
    403397                    case TILE_SIZE:
    404                         Integer tileSize = null;
    405                         try {
    406                             tileSize = Integer.valueOf(accumulator.toString());
    407                         } catch (NumberFormatException e) {
    408                             tileSize = null;
    409                         }
    410                         if (tileSize == null) {
     398                        Optional<Integer> tileSize = tryParseInt();
     399                        if (!tileSize.isPresent()) {
    411400                            mirrorEntry = null;
    412401                        } else {
    413                             entry.setTileSize(tileSize.intValue());
     402                            entry.setTileSize(tileSize.get());
    414403                        }
    415404                        break;
     
    462451                case MIN_ZOOM:
    463452                case MAX_ZOOM:
    464                     Integer val = null;
    465                     try {
    466                         val = Integer.valueOf(accumulator.toString());
    467                     } catch (NumberFormatException e) {
    468                         val = null;
    469                     }
    470                     if (val == null) {
     453                    Optional<Integer> zoom = tryParseInt();
     454                    if (!zoom.isPresent()) {
    471455                        skipEntry = true;
    472456                    } else {
    473457                        if (MIN_ZOOM.equals(qName)) {
    474                             entry.setDefaultMinZoom(val);
     458                            entry.setDefaultMinZoom(zoom.get());
    475459                        } else {
    476                             entry.setDefaultMaxZoom(val);
     460                            entry.setDefaultMaxZoom(zoom.get());
    477461                        }
    478462                    }
     
    509493                    break;
    510494                case TILE_SIZE:
    511                     Integer tileSize = null;
    512                     try {
    513                         tileSize = Integer.valueOf(accumulator.toString());
    514                     } catch (NumberFormatException e) {
    515                         tileSize = null;
    516                     }
    517                     if (tileSize == null) {
     495                    Optional<Integer> tileSize = tryParseInt();
     496                    if (!tileSize.isPresent()) {
    518497                        skipEntry = true;
    519498                    } else {
    520                         entry.setTileSize(tileSize.intValue());
     499                        entry.setTileSize(tileSize.get());
    521500                    }
    522501                    break;
     
    573552        private ImageryBounds intern(ImageryBounds imageryBounds) {
    574553            return boundsInterner.computeIfAbsent(imageryBounds, ignore -> imageryBounds);
     554        }
     555
     556        private Optional<Integer> tryParseInt() {
     557            return StringParser.DEFAULT.tryParse(Integer.class, accumulator.toString());
    575558        }
    576559    }
Note: See TracChangeset for help on using the changeset viewer.