internal GenericNativeIndexAccessor(PageCache pageCache, FileSystemAbstraction fs, File storeFile, IndexLayout <GenericKey, NativeIndexValue> layout, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, IndexProvider.Monitor monitor, StoreIndexDescriptor descriptor, IndexSpecificSpaceFillingCurveSettingsCache spaceFillingCurveSettings, SpaceFillingCurveConfiguration configuration, IndexDropAction dropAction, bool readOnly) : base(pageCache, fs, storeFile, layout, monitor, descriptor, new SpaceFillingCurveSettingsWriter(spaceFillingCurveSettings), readOnly)
 {
     this._spaceFillingCurveSettings = spaceFillingCurveSettings;
     this._configuration             = configuration;
     this._dropAction = dropAction;
     instantiateTree(recoveryCleanupWorkCollector, HeaderWriter);
 }
Exemple #2
0
 internal GenericNativeIndexProvider(IndexDirectoryStructure.Factory directoryStructureFactory, PageCache pageCache, FileSystemAbstraction fs, Monitor monitor, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, bool readOnly, Config config) : base(Descriptor, directoryStructureFactory, pageCache, fs, monitor, recoveryCleanupWorkCollector, readOnly)
 {
     this._configuredSettings = new ConfiguredSpaceFillingCurveSettingsCache(config);
     this._configuration      = getConfiguredSpaceFillingCurveConfiguration(config);
     this._archiveFailedIndex = config.Get(GraphDatabaseSettings.archive_failed_index);
     this._dropAction         = new FileSystemIndexDropAction(fs, directoryStructure());
 }
Exemple #3
0
        private void AddTilesIntersectingEnvelopeAt(SpaceFillingCurveConfiguration config, SpaceFillingCurveMonitor monitor, int depth, int maxDepth, SearchEnvelope search, SearchEnvelope currentExtent, CurveRule curve, long left, long right, List <LongRange> results)
        {
            if (right - left == 1)
            {
                long[] coord = NormalizedCoordinateFor(left, _maxLevel);
                if (search.Contains(coord))
                {
                    LongRange current = (results.Count > 0) ? results[results.Count - 1] : null;
                    if (current != null && current.Max == left - 1)
                    {
                        current.ExpandToMax(left);
                    }
                    else
                    {
                        current = new LongRange(left);
                        results.Add(current);
                    }
                    if (monitor != null)
                    {
                        monitor.AddRangeAtDepth(depth);
                        monitor.AddToCoveredArea(currentExtent.Area);
                    }
                }
            }
            else if (search.Intersects(currentExtent))
            {
                double overlap = search.FractionOf(currentExtent);
                if (config.StopAtThisDepth(overlap, depth, maxDepth))
                {
                    // Note that LongRange upper bound is inclusive, hence the '-1' in several places
                    LongRange current = (results.Count > 0) ? results[results.Count - 1] : null;
                    if (current != null && current.Max == left - 1)
                    {
                        current.ExpandToMax(right - 1);
                    }
                    else
                    {
                        current = new LongRange(left, right - 1);
                        results.Add(current);
                    }
                    if (monitor != null)
                    {
                        monitor.AddRangeAtDepth(depth);
                        monitor.AddToCoveredArea(currentExtent.Area);
                    }
                }
                else
                {
                    long width = (right - left) / _quadFactor;
                    for (int i = 0; i < _quadFactor; i++)
                    {
                        int npoint = curve.NpointForIndex(i);

                        SearchEnvelope quadrant = currentExtent.Quadrant(BitValues(npoint));
                        AddTilesIntersectingEnvelopeAt(config, monitor, depth + 1, maxDepth, search, quadrant, curve.ChildAt(i), left + i * width, left + (i + 1) * width, results);
                    }
                }
            }
        }
 internal GenericNativeIndexPopulator(PageCache pageCache, FileSystemAbstraction fs, File storeFile, IndexLayout <GenericKey, NativeIndexValue> layout, IndexProvider.Monitor monitor, StoreIndexDescriptor descriptor, IndexSpecificSpaceFillingCurveSettingsCache spatialSettings, IndexDirectoryStructure directoryStructure, SpaceFillingCurveConfiguration configuration, IndexDropAction dropAction, bool archiveFailedIndex) : base(pageCache, fs, storeFile, layout, monitor, descriptor, new SpaceFillingCurveSettingsWriter(spatialSettings))
 {
     this._spatialSettings    = spatialSettings;
     this._directoryStructure = directoryStructure;
     this._configuration      = configuration;
     this._dropAction         = dropAction;
     this._archiveFailedIndex = archiveFailedIndex;
 }
Exemple #5
0
 internal PartAccessor(PageCache pageCache, FileSystemAbstraction fs, SpatialIndexFiles.SpatialFileLayout fileLayout, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, IndexProvider.Monitor monitor, StoreIndexDescriptor descriptor, SpaceFillingCurveConfiguration searchConfiguration, bool readOnly) : base(pageCache, fs, fileLayout.IndexFile, fileLayout.Layout, monitor, descriptor, NO_HEADER_WRITER, readOnly)
 {
     this.Layout              = fileLayout.Layout;
     this.Descriptor          = descriptor;
     this.SearchConfiguration = searchConfiguration;
     this.Crs      = fileLayout.SpatialFile.crs;
     this.Settings = fileLayout.Settings;
     instantiateTree(recoveryCleanupWorkCollector, HeaderWriter);
 }
 internal PartFactory(PageCache pageCache, FileSystemAbstraction fs, SpatialIndexFiles spatialIndexFiles, StoreIndexDescriptor descriptor, IndexProvider.Monitor monitor, SpaceFillingCurveConfiguration configuration)
 {
     this.PageCache         = pageCache;
     this.Fs                = fs;
     this.SpatialIndexFiles = spatialIndexFiles;
     this.Descriptor        = descriptor;
     this.Monitor           = monitor;
     this.Configuration     = configuration;
 }
 public SpatialIndexProvider(PageCache pageCache, FileSystemAbstraction fs, IndexDirectoryStructure.Factory directoryStructure, Monitor monitor, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, bool readOnly, Config config) : base(_spatialProviderDescriptor, directoryStructure)
 {
     this._pageCache = pageCache;
     this._fs        = fs;
     this._monitor   = monitor;
     this._recoveryCleanupWorkCollector = recoveryCleanupWorkCollector;
     this._readOnly           = readOnly;
     this._configuration      = SpaceFillingCurveSettingsFactory.getConfiguredSpaceFillingCurveConfiguration(config);
     this._configuredSettings = GetConfiguredSpaceFillingCurveSettings(config);
 }
Exemple #8
0
 internal PartFactory(PageCache pageCache, FileSystemAbstraction fs, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, IndexProvider.Monitor monitor, StoreIndexDescriptor descriptor, SpatialIndexFiles spatialIndexFiles, SpaceFillingCurveConfiguration searchConfiguration, bool readOnly)
 {
     this.PageCache = pageCache;
     this.Fs        = fs;
     this.RecoveryCleanupWorkCollector = recoveryCleanupWorkCollector;
     this.Monitor             = monitor;
     this.Descriptor          = descriptor;
     this.SpatialIndexFiles   = spatialIndexFiles;
     this.SearchConfiguration = searchConfiguration;
     this.ReadOnly            = readOnly;
 }
Exemple #9
0
        private GenericBlockBasedIndexPopulator InstantiatePopulator(StoreIndexDescriptor indexDescriptor)
        {
            Config config = Config.defaults();
            ConfiguredSpaceFillingCurveSettingsCache    settingsCache   = new ConfiguredSpaceFillingCurveSettingsCache(config);
            IndexSpecificSpaceFillingCurveSettingsCache spatialSettings = new IndexSpecificSpaceFillingCurveSettingsCache(settingsCache, new Dictionary <Org.Neo4j.Values.Storable.CoordinateReferenceSystem, SpaceFillingCurveSettings>());
            GenericLayout layout = new GenericLayout(1, spatialSettings);
            SpaceFillingCurveConfiguration  configuration = SpaceFillingCurveSettingsFactory.getConfiguredSpaceFillingCurveConfiguration(config);
            GenericBlockBasedIndexPopulator populator     = new GenericBlockBasedIndexPopulator(Storage.pageCache(), _fs, _indexFile, layout, EMPTY, indexDescriptor, spatialSettings, _directoryStructure, configuration, _dropAction, false, heapBufferFactory(1024));

            populator.Create();
            return(populator);
        }
Exemple #10
0
        internal virtual IList <LongRange> GetTilesIntersectingEnvelope(Envelope referenceEnvelope, SpaceFillingCurveConfiguration config, SpaceFillingCurveMonitor monitor)
        {
            SearchEnvelope   search      = new SearchEnvelope(this, referenceEnvelope);
            SearchEnvelope   wholeExtent = new SearchEnvelope(0, this.Width, _nbrDim);
            List <LongRange> results     = new List <LongRange>(config.InitialRangesListCapacity());

            if (monitor != null)
            {
                monitor.RegisterSearchArea(search.Area);
            }

            AddTilesIntersectingEnvelopeAt(config, monitor, 0, config.MaxDepth(referenceEnvelope, this._range, _nbrDim, _maxLevel), search, wholeExtent, RootCurve(), 0, this.ValueWidth, results);
            return(results);
        }
Exemple #11
0
        public virtual IList <LongRange> GetTilesIntersectingEnvelope(double[] fromOrNull, double[] toOrNull, SpaceFillingCurveConfiguration config)
        {
            double[] from = fromOrNull == null ? _range.Min : fromOrNull.Clone();
            double[] to   = toOrNull == null ? _range.Max : toOrNull.Clone();

            for (int i = 0; i < from.Length; i++)
            {
                if (from[i] > to[i])
                {
                    if (fromOrNull == null)
                    {
                        to[i] = from[i];
                    }
                    else if (toOrNull == null)
                    {
                        from[i] = to[i];
                    }
                    else
                    {
                        throw new System.ArgumentException("Invalid range, min greater than max: " + from[i] + " > " + to[i]);
                    }
                }
            }
            Envelope referenceEnvelope = new Envelope(from, to);

            return(GetTilesIntersectingEnvelope(referenceEnvelope, config, null));
        }
Exemple #12
0
 internal SpatialIndexPartReader(GBPTree <SpatialIndexKey, VALUE> tree, IndexLayout <SpatialIndexKey, VALUE> layout, IndexDescriptor descriptor, SpaceFillingCurveConfiguration configuration) : base(tree, layout, descriptor)
 {
     _spatial            = ( SpatialLayout )layout;
     this._configuration = configuration;
 }
 internal GenericNativeIndexReader(GBPTree <GenericKey, NativeIndexValue> tree, IndexLayout <GenericKey, NativeIndexValue> layout, IndexDescriptor descriptor, IndexSpecificSpaceFillingCurveSettingsCache spaceFillingCurveSettings, SpaceFillingCurveConfiguration configuration) : base(tree, layout, descriptor)
 {
     this._spaceFillingCurveSettings = spaceFillingCurveSettings;
     this._configuration             = configuration;
 }
 internal SpatialIndexPopulator(StoreIndexDescriptor descriptor, SpatialIndexFiles spatialIndexFiles, PageCache pageCache, FileSystemAbstraction fs, IndexProvider.Monitor monitor, SpaceFillingCurveConfiguration configuration) : base(new PartFactory(pageCache, fs, spatialIndexFiles, descriptor, monitor, configuration))
 {
 }
Exemple #15
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: SpatialIndexAccessor(org.neo4j.storageengine.api.schema.StoreIndexDescriptor descriptor, org.neo4j.io.pagecache.PageCache pageCache, org.neo4j.io.fs.FileSystemAbstraction fs, org.neo4j.index.internal.gbptree.RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, org.neo4j.kernel.api.index.IndexProvider.Monitor monitor, SpatialIndexFiles spatialIndexFiles, org.neo4j.gis.spatial.index.curves.SpaceFillingCurveConfiguration searchConfiguration, boolean readOnly) throws java.io.IOException
        internal SpatialIndexAccessor(StoreIndexDescriptor descriptor, PageCache pageCache, FileSystemAbstraction fs, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, IndexProvider.Monitor monitor, SpatialIndexFiles spatialIndexFiles, SpaceFillingCurveConfiguration searchConfiguration, bool readOnly) : base(new PartFactory(pageCache, fs, recoveryCleanupWorkCollector, monitor, descriptor, spatialIndexFiles, searchConfiguration, readOnly))
        {
            this._descriptor = descriptor;
            spatialIndexFiles.LoadExistingIndexes(this);
        }
Exemple #16
0
 internal GenericBlockBasedIndexPopulator(PageCache pageCache, FileSystemAbstraction fs, File file, IndexLayout <GenericKey, NativeIndexValue> layout, IndexProvider.Monitor monitor, StoreIndexDescriptor descriptor, IndexSpecificSpaceFillingCurveSettingsCache spatialSettings, IndexDirectoryStructure directoryStructure, SpaceFillingCurveConfiguration configuration, IndexDropAction dropAction, bool archiveFailedIndex, ByteBufferFactory bufferFactory) : base(pageCache, fs, file, layout, monitor, descriptor, spatialSettings, directoryStructure, dropAction, archiveFailedIndex, bufferFactory)
 {
     this._spatialSettings = spatialSettings;
     this._configuration   = configuration;
 }
 internal PartPopulator(PageCache pageCache, FileSystemAbstraction fs, SpatialIndexFiles.SpatialFileLayout fileLayout, IndexProvider.Monitor monitor, StoreIndexDescriptor descriptor, SpaceFillingCurveConfiguration configuration) : base(pageCache, fs, fileLayout.IndexFile, fileLayout.Layout, monitor, descriptor, NO_HEADER_WRITER)
 {
     this.Configuration = configuration;
     this.Settings      = fileLayout.Settings;
     this.Crs           = fileLayout.SpatialFile.crs;
 }