001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.data.projection.datum; 003 004 import static org.openstreetmap.josm.tools.I18n.tr; 005 006 import java.io.InputStream; 007 008 import org.openstreetmap.josm.Main; 009 import org.openstreetmap.josm.io.MirroredInputStream; 010 011 /** 012 * Wrapper for NTV2GridShiftFile. 013 * 014 * Loads the shift file from disk, when it is first accessed. 015 */ 016 public class NTV2GridShiftFileWrapper { 017 018 public final static NTV2GridShiftFileWrapper BETA2007 = new NTV2GridShiftFileWrapper("resource://data/BETA2007.gsb"); 019 public final static NTV2GridShiftFileWrapper ntf_rgf93 = new NTV2GridShiftFileWrapper("resource://data/ntf_r93_b.gsb"); 020 021 022 private NTV2GridShiftFile instance = null; 023 private String gridFileName; 024 025 public NTV2GridShiftFileWrapper(String filename) { 026 this.gridFileName = filename; 027 } 028 029 public NTV2GridShiftFile getShiftFile() { 030 if (instance == null) { 031 try { 032 InputStream is = new MirroredInputStream(gridFileName); 033 if (is == null) 034 throw new RuntimeException(tr("Error: failed to open input stream for resource ''/data/{0}''.", gridFileName)); 035 instance = new NTV2GridShiftFile(); 036 instance.loadGridShiftFile(is, false); 037 } catch (Exception e) { 038 throw new RuntimeException(e); 039 } 040 } 041 return instance; 042 } 043 044 }