コード例 #1
0
        /**
         * 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);
        }
コード例 #2
0
        public static bool isDatabase(String filePath)
        {
            if (filePath == null)
            {
                String message = Logging.getMessage("nullValue.FilePathIsNull");
                Logging.logger().severe(message);
                throw new ArgumentException(message);
            }

            File file = new File(filePath);

            if (!file.exists())
            {
                return(false);
            }

            VPFBufferedRecordData table = VPFUtils.readTable(file);

            if (table == null)
            {
                return(false);
            }

            file = new File(file.getParent(), VPFConstants.LIBRARY_ATTRIBUTE_TABLE);
            if (!file.exists())
            {
                return(false);
            }

            table = VPFUtils.readTable(file);
            //noinspection RedundantIfStatement
            if (table == null)
            {
                return(false);
            }

            return(true);
        }
コード例 #3
0
        /**
         * Constructs a VPF Coverage from a specified VPF Library and coverage name. This initializes the Coverage's Feature
         * Class Schema table, the Feature Class Attribute table, the Character Value Description table, the Integer Value
         * Descrption table, and the Symbol Related Attribute table.
         *
         * @param library the Library which the Coverage resides in.
         * @param name    the Coverage's name.
         *
         * @return a new Coverage from the specified Library with the specified name.
         *
         * @throws ArgumentException if the library is null, or if the name is null or empty.
         */
        public static VPFCoverage fromFile(VPFLibrary library, String name)
        {
            if (library == null)
            {
                String message = Logging.getMessage("nullValue.LibraryIsNull");
                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(library.getFilePath(), name);

            if (!file.exists())
            {
                String message = Logging.getMessage("generic.FileNotFound", file.getPath());
                Logging.logger().severe(message);
                throw new WWRuntimeException(message);
            }

            // Coverage tables.
            VPFBufferedRecordData fcs = VPFUtils.readTable(new File(file, VPFConstants.FEATURE_CLASS_SCHEMA_TABLE));

            if (fcs == null)
            {
                String message = Logging.getMessage("VPF.FeatureClassSchemaTableMissing");
                throw new WWRuntimeException(message);
            }

            VPFBufferedRecordData fca = VPFUtils.readTable(
                new File(file, VPFConstants.FEATURE_CLASS_ATTRIBUTE_TABLE));
            VPFBufferedRecordData char_vdt = VPFUtils.readTable(
                new File(file, VPFConstants.CHARACTER_VALUE_DESCRIPTION_TABLE));
            VPFBufferedRecordData int_vdt = VPFUtils.readTable(
                new File(file, VPFConstants.INTEGER_VALUE_DESCRIPTION_TABLE));
            VPFBufferedRecordData symbol_rat = VPFUtils.readTable(
                new File(file, "symbol" + VPFConstants.RELATED_ATTRIBUTE_TABLE));

            VPFCoverage coverage = new VPFCoverage(library);

            coverage.setFeatureClassSchemaTable(fcs);
            coverage.setFeatureClassAttributeTable(fca);
            coverage.setCharacterValueDescriptionTable(char_vdt);
            coverage.setIntegerValueDescriptionTable(int_vdt);
            coverage.setSymbolRelatedAttributeTable(symbol_rat);

            // Coverage metadata attributes.
            VPFRecord record = library.getCoverageAttributeTable().getRecord("coverage_name", name);

            if (record != null)
            {
                VPFUtils.checkAndSetValue(record, "coverage_name", AVKey.DISPLAY_NAME, coverage);
                VPFUtils.checkAndSetValue(record, "description", AVKey.DESCRIPTION, coverage);
            }

            return(coverage);
        }
コード例 #4
0
        /**
         * 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);
        }