Changeset 19666 in josm


Ignore:
Timestamp:
2026-10-26T16:33:27+01:00 (2 days ago)
Author:
stoecker
Message:

fix #24971 - fix SOANR issues - patch by DanProgs (modified)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java

    r19123 r19666  
    9494            fc = createAndOpenFileChooser(true, true, null, null, FILES_AND_DIRECTORIES, true, null);
    9595        }
    96         if (fc == null)
     96        if (fc == null) {
    9797            return;
    98         File[] files = fc.getSelectedFiles();
    99         OpenFileTask task = new OpenFileTask(Arrays.asList(files), fc.getFileFilter());
     98        }
     99        final File[] files = fc.getSelectedFiles();
     100        final OpenFileTask task = new OpenFileTask(Arrays.asList(files), fc.getFileFilter());
    100101        task.setOptions(Options.RECORD_HISTORY);
    101102        MainApplication.worker.submit(task);
    … …  
    126127     */
    127128    public static Future<?> openFiles(List<File> fileList, Options... options) {
    128         OpenFileTask task = new OpenFileTask(fileList, null);
     129        final OpenFileTask task = new OpenFileTask(fileList, null);
    129130        task.setOptions(options);
    130131        return MainApplication.worker.submit(task);
    … …  
    168169                    }
    169170                } else {
    170                     String message = tr("Unable to locate file  ''{0}''.", file.getPath());
     171                    final String message = tr("Unable to locate file  ''{0}''.", file.getPath());
    171172                    Logging.warn(message);
    172173                    new Notification(message).setIcon(JOptionPane.WARNING_MESSAGE).show();
    … …  
    221222        @Override
    222223        protected void finish() {
    223             MapFrame map = MainApplication.getMap();
     224            final MapFrame map = MainApplication.getMap();
    224225            if (map != null) {
    225226                map.repaint();
    … …  
    276277        @Override
    277278        protected void realRun() throws SAXException, IOException, OsmTransferException {
    278             if (Utils.isEmpty(files)) return;
    279             List<Layer> oldLayers = MainApplication.getLayerManager().getLayers();
     279            if (Utils.isEmpty(files)) {
     280                return;
     281            }
     282            final List<Layer> oldLayers = MainApplication.getLayerManager().getLayers();
    280283
    281284            /*
    … …  
    301304            if (chosenImporter != null) {
    302305                // The importer was explicitly chosen, so use it.
    303                 List<File> filesNotMatchingWithImporter = new LinkedList<>();
    304                 List<File> filesMatchingWithImporter = new LinkedList<>();
     306                final List<File> filesNotMatchingWithImporter = new LinkedList<>();
     307                final List<File> filesMatchingWithImporter = new LinkedList<>();
    305308                for (final File f : files) {
    306309                    if (!chosenImporter.acceptFile(f)) {
    … …  
    328331            } else {
    329332                // find appropriate importer
    330                 MultiMap<FileImporter, File> importerMap = new MultiMap<>();
    331                 List<File> filesWithUnknownImporter = new LinkedList<>();
    332                 List<File> urlFiles = new LinkedList<>();
    333                 FILES: for (File f : files) {
     333                final MultiMap<FileImporter, File> importerMap = new MultiMap<>();
     334                final List<File> filesWithUnknownImporter = new LinkedList<>();
     335                final List<File> urlFiles = new LinkedList<>();
     336                for (File f : files) {
     337                    boolean imported = false;
    334338                    for (FileImporter importer : ExtensionFileFilter.getImporters()) {
    335339                        if (importer.acceptFile(f)) {
    336340                            importerMap.put(importer, f);
    337                             continue FILES;
     341                            imported = true;
     342                            break;
    338343                        }
    339344                    }
    340                     if (URL_FILE_FILTER.accept(f)) {
    341                         urlFiles.add(f);
    342                     } else {
    343                         filesWithUnknownImporter.add(f);
    344                     }
    345                 }
     345                    if (!imported) {
     346                        if (URL_FILE_FILTER.accept(f)) {
     347                            urlFiles.add(f);
     348                        } else {
     349                            filesWithUnknownImporter.add(f);
     350                        }
     351                    }
     352                }
     353
    346354                if (!filesWithUnknownImporter.isEmpty()) {
    347355                    alertFilesWithUnknownImporter(filesWithUnknownImporter);
    348356                }
    349                 List<FileImporter> importers = new ArrayList<>(importerMap.keySet());
    350                 Collections.sort(importers);
    351                 Collections.reverse(importers);
     357                final List<FileImporter> importers = new ArrayList<>(importerMap.keySet());
     358                importers.sort(Collections.reverseOrder());
    352359
    353360                for (FileImporter importer : importers) {
    … …  
    355362                }
    356363
    357                 Pattern urlPattern = Pattern.compile(".*(https?://.*)");
     364                final Pattern urlPattern = Pattern.compile(".*(https?://.*)");
    358365                for (File urlFile: urlFiles) {
    359366                    try (BufferedReader reader = Files.newBufferedReader(urlFile.toPath(), StandardCharsets.UTF_8)) {
    360367                        String line;
    361368                        while ((line = reader.readLine()) != null) {
    362                             Matcher m = urlPattern.matcher(line);
     369                            final Matcher m = urlPattern.matcher(line);
    363370                            if (m.matches()) {
    364                                 String url = m.group(1);
     371                                final String url = m.group(1);
    365372                                MainApplication.getMenu().openLocation.openUrl(false, url);
    366373                            }
    … …  
    375382
    376383            if (this.options.contains(Options.RECORD_HISTORY)) {
    377                 Collection<String> oldFileHistory = Config.getPref().getList("file-open.history");
     384                final Collection<String> oldFileHistory = Config.getPref().getList("file-open.history");
    378385                fileHistory.addAll(oldFileHistory);
    379386                // remove the files which failed to load from the list
    380387                fileHistory.removeAll(failedAll);
    381                 int maxsize = Math.max(0, Config.getPref().getInt("file-open.history.max-size", 15));
     388                final int maxsize = Math.max(0, Config.getPref().getInt("file-open.history.max-size", 15));
    382389                PreferencesUtils.putListBounded(Config.getPref(), "file-open.history", maxsize, new ArrayList<>(fileHistory));
    383390            }
    … …  
    391398            // And the layer(s) must be added to the layer list in order for the dialog to work properly.
    392399            MainApplication.worker.execute(() -> GuiHelper.runInEDT(() -> {
    393                 List<Layer> newLayers = MainApplication.getLayerManager().getLayers();
     400                final List<Layer> newLayers = MainApplication.getLayerManager().getLayers();
    394401                // see #23728: open first image of topmost new image layer
    395402                for (Layer l : newLayers) {
    396                     if (oldLayers.contains(l))
     403                    if (oldLayers.contains(l)) {
    397404                        return;
     405                    }
    398406                    if (l instanceof GeoImageLayer) {
    399                         GeoImageLayer imageLayer = (GeoImageLayer) l;
     407                        final GeoImageLayer imageLayer = (GeoImageLayer) l;
    400408                        imageLayer.jumpToNextMarker();
    401409                        return;
    … …  
    413421            importer.setOptions(this.options.toArray(new Options[0]));
    414422            if (importer.isBatchImporter()) {
    415                 if (canceled) return;
    416                 String msg = trn("Opening {0} file...", "Opening {0} files...", files.size(), files.size());
     423                if (canceled) {
     424                    return;
     425                }
     426                final String msg = trn("Opening {0} file...", "Opening {0} files...", files.size(), files.size());
    417427                getProgressMonitor().setCustomText(msg);
    418428                getProgressMonitor().indeterminateSubTask(msg);
    … …  
    422432            } else {
    423433                for (File f : files) {
    424                     if (canceled) return;
     434                    if (canceled) {
     435                        return;
     436                    }
    425437                    getProgressMonitor().indeterminateSubTask(tr("Opening file ''{0}'' ...", f.getAbsolutePath()));
    426438                    if (importer.importDataHandleExceptions(f, getProgressMonitor().createSubTaskMonitor(1, false))) {
Note: See TracChangeset for help on using the changeset viewer.