Ignore:
Timestamp:
2016-01-15T01:31:57+01:00 (8 years ago)
Author:
Don-vip
Message:

session - refactor duplicated code, add javadoc, fix warnings

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/session/SessionReader.java

    r9231 r9455  
    5454/**
    5555 * Reads a .jos session file and loads the layers in the process.
    56  *
     56 * @since 4668
    5757 */
    5858public class SessionReader {
    5959
    6060    private static final Map<String, Class<? extends SessionLayerImporter>> sessionLayerImporters = new HashMap<>();
     61
     62    private URI sessionFileURI;
     63    private boolean zip; // true, if session file is a .joz file; false if it is a .jos file
     64    private ZipFile zipFile;
     65    private List<Layer> layers = new ArrayList<>();
     66    private int active = -1;
     67    private final List<Runnable> postLoadTasks = new ArrayList<>();
     68    private ViewportData viewport;
    6169
    6270    static {
     
    6876    }
    6977
     78    /**
     79     * Register a session layer importer.
     80     *
     81     * @param layerType layer type
     82     * @param importer importer for this layer class
     83     */
    7084    public static void registerSessionLayerImporter(String layerType, Class<? extends SessionLayerImporter> importer) {
    7185        sessionLayerImporters.put(layerType, importer);
    7286    }
    7387
     88    /**
     89     * Returns the session layer importer for the given layer type.
     90     * @param layerType layer type to import
     91     * @return session layer importer for the given layer
     92     */
    7493    public static SessionLayerImporter getSessionLayerImporter(String layerType) {
    7594        Class<? extends SessionLayerImporter> importerClass = sessionLayerImporters.get(layerType);
     
    85104    }
    86105
    87     private URI sessionFileURI;
    88     private boolean zip; // true, if session file is a .joz file; false if it is a .jos file
    89     private ZipFile zipFile;
    90     private List<Layer> layers = new ArrayList<>();
    91     private int active = -1;
    92     private final List<Runnable> postLoadTasks = new ArrayList<>();
    93     private ViewportData viewport;
    94 
    95106    /**
    96107     * @return list of layers that are later added to the mapview
     
    124135    }
    125136
     137    /**
     138     * A class that provides some context for the individual {@link SessionLayerImporter}
     139     * when doing the import.
     140     */
    126141    public class ImportSupport {
    127142
     
    130145        private final List<LayerDependency> layerDependencies;
    131146
     147        /**
     148         * Path of the file inside the zip archive.
     149         * Used as alternative return value for getFile method.
     150         */
     151        private String inZipPath;
     152
     153        /**
     154         * Constructs a new {@code ImportSupport}.
     155         * @param layerName layer name
     156         * @param layerIndex layer index
     157         * @param layerDependencies layer dependencies
     158         */
    132159        public ImportSupport(String layerName, int layerIndex, List<LayerDependency> layerDependencies) {
    133160            this.layerName = layerName;
     
    135162            this.layerDependencies = layerDependencies;
    136163        }
    137 
    138         /**
    139          * Path of the file inside the zip archive.
    140          * Used as alternative return value for getFile method.
    141          */
    142         private String inZipPath;
    143164
    144165        /**
     
    556577    }
    557578
     579    /**
     580     * Loads session from the given file.
     581     * @param sessionFile session file to load
     582     * @param zip {@code true} if it's a zipped session (.joz)
     583     * @param progressMonitor progress monitor
     584     * @throws IllegalDataException if invalid data is detected
     585     * @throws IOException if any I/O error occurs
     586     */
    558587    public void loadSession(File sessionFile, boolean zip, ProgressMonitor progressMonitor) throws IllegalDataException, IOException {
    559         if (progressMonitor == null) {
    560             progressMonitor = NullProgressMonitor.INSTANCE;
    561         }
    562 
    563588        try (InputStream josIS = createInputStream(sessionFile, zip)) {
    564             loadSession(josIS, sessionFile.toURI(), zip, progressMonitor);
     589            loadSession(josIS, sessionFile.toURI(), zip, progressMonitor != null ? progressMonitor : NullProgressMonitor.INSTANCE);
    565590        }
    566591    }
     
    621646    private static Element getElementByTagName(Element root, String name) {
    622647        NodeList els = root.getElementsByTagName(name);
    623         if (els.getLength() == 0) return null;
    624         return (Element) els.item(0);
     648        return els.getLength() > 0 ? (Element) els.item(0) : null;
    625649    }
    626650}
Note: See TracChangeset for help on using the changeset viewer.