public static VPFLibrary readLibrary(VPFDatabase database, String name) { if (database == null) { String message = Logging.getMessage("nullValue.DatabaseIsNull"); Logging.logger().severe(message); throw new ArgumentException(message); } if (name == null) { String message = Logging.getMessage("nullValue.NameIsNull"); Logging.logger().severe(message); throw new ArgumentException(message); } try { return(VPFLibrary.fromFile(database, name)); } catch (WWRuntimeException e) { // Exception already logged by VPFLibrary. return(null); } }
/** * Constructs a VPF Database from a path to the Database Header table. This initializes the Database Header Table * and the Library Attribute Table. * * @param filePath the path to the Database Header Table. * * @return a new Database from the specified Database Header Table path. * * @throws ArgumentException if the file path is null or empty. */ public static VPFDatabase fromFile(String filePath) { if (WWUtil.isEmpty(filePath)) { String message = Logging.getMessage("nullValue.FilePathIsNull"); Logging.logger().severe(message); throw new ArgumentException(message); } File file = new File(filePath); if (!file.exists()) { String message = Logging.getMessage("generic.FileNotFound", filePath); Logging.logger().severe(message); throw new WWRuntimeException(message); } // Database tables. VPFBufferedRecordData dht = VPFUtils.readTable(file); if (dht == null) { String message = Logging.getMessage("VPF.DatabaseHeaderTableMissing"); throw new WWRuntimeException(message); } VPFBufferedRecordData lat = VPFUtils.readTable( new File(file.getParent(), VPFConstants.LIBRARY_ATTRIBUTE_TABLE)); if (lat == null) { String message = Logging.getMessage("VPF.LibraryAttributeTableMissing"); throw new WWRuntimeException(message); } VPFDatabase database = new VPFDatabase(file.getParent()); database.setDatabaseHeaderTable(dht); database.setLibraryAttributeTable(lat); // Database metadata attributes. VPFRecord record = dht.getRecord(1); if (record != null) { VPFUtils.checkAndSetValue(record, "database_name", AVKey.DISPLAY_NAME, database); VPFUtils.checkAndSetValue(record, "database_desc", AVKey.DESCRIPTION, database); } // Database Libraries. Collection <VPFLibrary> col = createLibraries(database, lat); if (col != null) { database.setLibraries(col); } return(database); }
protected VPFLibrary(VPFDatabase database) { if (database == null) { String message = Logging.getMessage("nullValue.DatabaseIsNull"); Logging.logger().severe(message); throw new ArgumentException(message); } this.database = database; }
public static VPFDatabase readDatabase(File file) { if (file == null) { String message = Logging.getMessage("nullValue.FileIsNull"); Logging.logger().severe(message); throw new ArgumentException(message); } if (!file.exists()) { return(null); } try { return(VPFDatabase.fromFile(file.getPath())); } catch (WWRuntimeException e) { // Exception already logged by VPFLibrary. return(null); } }
/** * Constructs a VPF Library from the specified VPF Database and library name. This initializes the Library Header * Table, the Coverage Attribute Table, and the Geographic Reference Table. * * @param database the Database which the Library resides in. * @param name the Library's name. * * @return a new Library from the specified Database with the specified name. * * @throws ArgumentException if the database is null, or if the name is null or empty. */ public static VPFLibrary fromFile(VPFDatabase database, String name) { if (database == null) { String message = Logging.getMessage("nullValue.DatabaseIsNull"); Logging.logger().severe(message); throw new ArgumentException(message); } if (WWUtil.isEmpty(name)) { String message = Logging.getMessage("nullValue.NameIsNull"); Logging.logger().severe(message); throw new ArgumentException(message); } File file = new File(database.getFilePath(), name); if (!file.exists()) { String message = Logging.getMessage("generic.FileNotFound", file.getPath()); Logging.logger().severe(message); throw new WWRuntimeException(message); } // Library tables. VPFBufferedRecordData lht = VPFUtils.readTable(new File(file, VPFConstants.LIBRARY_HEADER_TABLE)); if (lht == null) { String message = Logging.getMessage("VPF.LibraryHeaderTableMissing"); throw new WWRuntimeException(message); } VPFBufferedRecordData cat = VPFUtils.readTable(new File(file, VPFConstants.COVERAGE_ATTRIBUTE_TABLE)); if (cat == null) { String message = Logging.getMessage("VPF.CoverageAttributeTableMissing"); throw new WWRuntimeException(message); } VPFBufferedRecordData grt = VPFUtils.readTable(new File(file, VPFConstants.GEOGRAPHIC_REFERENCE_TABLE)); if (grt == null) { String message = Logging.getMessage("VPF.GeographicReferenceTableMissing"); throw new WWRuntimeException(message); } VPFLibrary library = new VPFLibrary(database); library.setLibraryHeaderTable(lht); library.setCoverageAttributeTable(cat); library.setGeographicReferenceTable(grt); // Library metadata attributes. VPFRecord record = database.getLibraryAttributeTable().getRecord("library_name", name); if (record != null) { library.bounds = VPFUtils.getExtent(record); } record = lht.getRecord(1); if (record != null) { VPFUtils.checkAndSetValue(record, "library_name", AVKey.DISPLAY_NAME, library); VPFUtils.checkAndSetValue(record, "description", AVKey.DESCRIPTION, library); } // Library Coverages. Collection <VPFCoverage> col = createCoverages(library, cat); if (col != null) { library.setCoverages(col); } // Library tiles. VPFCoverage cov = library.getCoverage(VPFConstants.TILE_REFERENCE_COVERAGE); if (cov != null) { VPFTile[] tiles = createTiles(cov); if (tiles != null) { library.setTiles(tiles); } else { String message = Logging.getMessage("VPF.NoTilesInTileReferenceCoverage"); Logging.logger().warning(message); } } // Coverage tiled attributes. foreach (VPFCoverage coverage in library.getCoverages()) { bool tiled = isCoverageTiled(library, coverage); coverage.setTiled(tiled); } return(library); }