public void ConstructorSucceeds()
        {
            MockRepository  mocks   = new MockRepository();
            IRasterProvider adapted = mocks.CreateMock <IRasterProvider>();

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);
        }
Esempio n. 2
0
 public RasterQueryExpression(IGeometry geometry, SpatialOperation op, IRasterProvider provider)
     : base(new AllBandsExpression(), new SpatialBinaryExpression(new GeometryExpression(geometry),
                                                                  op,
                                                                  new ProviderExpression(provider)))
 {
     checkOp(op);
 }
        public void BeginExecuteQueryBlockUntilDone()
        {
            MockRepository  mocks        = new MockRepository();
            IRasterProvider adapted      = mocks.CreateMock <IRasterProvider>();
            IExtents        iExtentsStub =
                MockRepository.GenerateStub <IExtents>();
            RasterQueryExpression RasterQueryExpressionStub =
                MockRepository.GenerateStub <RasterQueryExpression>(iExtentsStub, SpatialOperation.Intersects);

            _returnStreamStub = MockRepository.GenerateStub <Stream>();
            _sleepInterval    = 750;

            using (mocks.Unordered())
            {
                Expect.Call(adapted.ExecuteRasterQuery(RasterQueryExpressionStub))
                .Do(new ExecuteQueryDelegate(executeQueryMock));
            }
            mocks.ReplayAll();

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);
            IAsyncResult ar = adapter.BeginExecuteQuery(RasterQueryExpressionStub, null);

            Assert.NotNull(ar);

            Stopwatch timer = Stopwatch.StartNew();

            Assert.Same(_returnStreamStub, adapter.EndExecuteQuery(ar));
            timer.Stop();

            Assert.True(ar.IsCompleted);
            Assert.False(ar.CompletedSynchronously);
            Assert.True(timer.ElapsedMilliseconds > 500L);

            mocks.VerifyAll();
        }
Esempio n. 4
0
        /// <summary>
        /// This can help determine what kind of file format a file is, without actually opening the file.
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public virtual DataFormat GetFileFormat(string fileName)
        {
            string ext = Path.GetExtension(fileName);

            foreach (IDataProvider dp in DataProviders)
            {
                if (GetSupportedExtensions(dp.DialogReadFilter).Contains(ext))
                {
                    IVectorProvider vp = dp as IVectorProvider;
                    if (vp != null)
                    {
                        return(DataFormat.Vector);
                    }
                    IRasterProvider rp = dp as IRasterProvider;
                    if (rp != null)
                    {
                        return(DataFormat.Raster);
                    }
                    IImageDataProvider ip = dp as IImageDataProvider;
                    if (ip != null)
                    {
                        return(DataFormat.Image);
                    }
                    return(DataFormat.Custom);
                }
            }
            return(DataFormat.Custom);
        }
        public void BeginExecuteQueryPollingNotification()
        {
            MockRepository  mocks        = new MockRepository();
            IRasterProvider adapted      = mocks.CreateMock <IRasterProvider>();
            IExtents        iExtentsStub =
                MockRepository.GenerateStub <IExtents>();
            RasterQueryExpression RasterQueryExpressionStub =
                MockRepository.GenerateStub <RasterQueryExpression>(iExtentsStub, SpatialOperation.Intersects);

            _returnStreamStub = MockRepository.GenerateStub <Stream>();
            _sleepInterval    = 1000;

            using (mocks.Unordered())
            {
                Expect.Call(adapted.ExecuteRasterQuery(RasterQueryExpressionStub))
                .Do(new ExecuteQueryDelegate(executeQueryMock));
            }
            mocks.ReplayAll();

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);
            IAsyncResult ar = adapter.BeginExecuteQuery(RasterQueryExpressionStub, null);

            Assert.NotNull(ar);
            Assert.False(ar.IsCompleted);
            while (!ar.IsCompleted)
            {
                Thread.Sleep(350);
            }

            Assert.True(ar.IsCompleted);
            Assert.Same(_returnStreamStub, adapter.EndExecuteQuery(ar));

            mocks.VerifyAll();
        }
        public void EndExecuteQueryThrowsOnInvalidExpression()
        {
            MockRepository  mocks   = new MockRepository();
            IRasterProvider adapted = MockRepository.GenerateStub <IRasterProvider>();
            AsyncResult     result  = new AsyncResult(null, this);

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);

            Assert.Throws <ArgumentException>(delegate { adapter.EndExecuteQuery(result); });
        }
        public void IProviderMethodsPassThroughAdapter()
        {
            MockRepository            mocks         = new MockRepository();
            IRasterProvider           adapted       = mocks.CreateMock <IRasterProvider>();
            ICoordinateTransformation transformStub =
                MockRepository.GenerateStub <ICoordinateTransformation>();
            Expression queryStub =
                MockRepository.GenerateStub <Expression>();
            Object objectStub =
                MockRepository.GenerateStub <Object>();
            IExtents extentsStub =
                MockRepository.GenerateStub <IExtents>();
            ICoordinateSystem coordinateSystemStub =
                MockRepository.GenerateStub <ICoordinateSystem>();

            using (mocks.Unordered())
            {
                adapted.Close();
                Expect.Call(adapted.ConnectionId)
                .Return("connectionid");
                adapted.CoordinateTransformation = transformStub;
                Expect.Call(adapted.CoordinateTransformation)
                .Return(transformStub);
                Expect.Call(adapted.ExecuteQuery(queryStub))
                .Return(objectStub);
                Expect.Call(adapted.GetExtents())
                .Return(extentsStub);
                Expect.Call(adapted.IsOpen)
                .Return(true);
                adapted.Open();
                Expect.Call(adapted.SpatialReference)
                .Return(coordinateSystemStub);
                //adapted.Srid = 1;
                Expect.Call(adapted.Srid)
                .Return("2");
            }

            mocks.ReplayAll();

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);

            adapter.Close();
            Assert.Equal("connectionid", adapter.ConnectionId);
            adapter.CoordinateTransformation = transformStub;
            Assert.Same(transformStub, adapter.CoordinateTransformation);
            Assert.Same(objectStub, adapter.ExecuteQuery(queryStub));
            Assert.Same(extentsStub, adapter.GetExtents());
            Assert.True(adapter.IsOpen);
            adapter.Open();
            Assert.Same(coordinateSystemStub, adapter.SpatialReference);
            //adapter.Srid = 1;
            Assert.Equal("2", adapter.Srid);

            mocks.VerifyAll();
        }
        public void BeginExecuteQueryThrowsOnInvalidExpression()
        {
            MockRepository  mocks          = new MockRepository();
            IRasterProvider adapted        = MockRepository.GenerateStub <IRasterProvider>();
            Expression      expressionStub =
                MockRepository.GenerateStub <Expression>();

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);

            Assert.Throws <ArgumentException>(delegate { adapter.BeginExecuteQuery(expressionStub, null); });
        }
 /// <summary>
 /// Performs an actions need to be done for finalization of the raster provider.
 /// <para>
 /// Holders can provide various scenarious of disposing resources
 /// for raster providers of the same class.
 /// </para>
 /// </summary>
 /// <param name="providerName">A name of the raster provider</param>
 /// <param name="provider">A provider instance for finalization</param>
 public void ReleaseProviderIfNeeded(string providerName, IRasterProvider provider)
 {
     lock (_syncRoot)
     {
         foreach (RasterProviderHolderBase info in _registeredProviders)
         {
             if (info.Name == providerName)
             {
                 info.ReleaseProviderIfNeeded(provider);
                 return;
             }
         }
     }
 }
        public void IDisposableMethodsPassThroughAdapter()
        {
            MockRepository  mocks   = new MockRepository();
            IRasterProvider adapted = mocks.CreateMock <IRasterProvider>();

            using (mocks.Unordered())
            {
                adapted.Dispose();
            }
            mocks.ReplayAll();

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);

            adapter.Dispose();

            mocks.VerifyAll();
        }
Esempio n. 11
0
        /// <summary>
        /// Creates a new raster using the specified raster provider and the Data Manager's Progress Handler,
        /// as well as its LoadInRam property.
        /// </summary>
        /// <param name="name">The fileName of the new file to create.</param>
        /// <param name="driverCode">The string code identifying the driver to use to create the raster.  If no code is specified
        /// the manager will attempt to match the extension with a code specified in the Dialog write filter.  </param>
        /// <param name="xSize">The number of columns in the raster</param>
        /// <param name="ySize">The number of rows in the raster</param>
        /// <param name="numBands">The number of bands in the raster</param>
        /// <param name="dataType">The data type for the raster</param>
        /// <param name="options">Any additional, driver specific options for creation</param>
        /// <returns>An IRaster representing the created raster.</returns>
        public virtual IRaster CreateRaster(string name, string driverCode, int xSize, int ySize, int numBands, Type dataType, string[] options)
        {
            // First check for the extension in the preferred plugins list
            string ext = Path.GetExtension(name).ToLower();

            if (ext != null)
            {
                IRaster result;
                if (PreferredProviders.ContainsKey(ext))
                {
                    IRasterProvider rp = PreferredProviders[ext] as IRasterProvider;
                    if (rp != null)
                    {
                        result = rp.Create(name, driverCode, xSize, ySize, numBands, dataType, options);
                        if (result != null)
                        {
                            return(result);
                        }
                    }

                    // if we get here, we found the provider, but it did not succeed in opening the file.
                }

                // Then check the general list of developer specified providers... but not the directory providers

                foreach (IDataProvider dp in DataProviders)
                {
                    if (GetSupportedExtensions(dp.DialogWriteFilter).Contains(ext))
                    {
                        IRasterProvider rp = dp as IRasterProvider;
                        if (rp != null)
                        {
                            // attempt to open with the fileName.
                            result = rp.Create(name, driverCode, xSize, ySize, numBands, dataType, options);
                            if (result != null)
                            {
                                return(result);
                            }
                        }
                    }
                }
            }

            throw new ApplicationException(DataStrings.FileTypeNotSupported);
        }
        public void EndExecuteQueryThrowsTerminatingException()
        {
            MockRepository  mocks        = new MockRepository();
            IRasterProvider adapted      = mocks.CreateMock <IRasterProvider>();
            IExtents        iExtentsStub =
                MockRepository.GenerateStub <IExtents>();
            RasterQueryExpression RasterQueryExpressionStub =
                MockRepository.GenerateStub <RasterQueryExpression>(iExtentsStub, SpatialOperation.Intersects);

            using (mocks.Unordered())
            {
                Expect.Call(adapted.ExecuteRasterQuery(RasterQueryExpressionStub))
                .Do(new ExecuteQueryDelegate(executeQueryExceptionMock));
            }
            mocks.ReplayAll();

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);
            IAsyncResult ar = adapter.BeginExecuteQuery(RasterQueryExpressionStub, null);

            Assert.NotNull(ar);

            Assert.Throws <InvalidOperationException>(delegate { adapter.EndExecuteQuery(ar); });
        }
        public void IRasterProviderMethodsPassThroughAdapter()
        {
            MockRepository  mocks      = new MockRepository();
            IRasterProvider adapted    = mocks.CreateMock <IRasterProvider>();
            Stream          streamStub =
                MockRepository.GenerateStub <Stream>();
            IExtents iExtentsStub =
                MockRepository.GenerateStub <IExtents>();
            RasterQueryExpression rasterQueryExpressionStub =
                MockRepository.GenerateStub <RasterQueryExpression>(iExtentsStub, SpatialOperation.Intersects);

            using (mocks.Unordered())
            {
                Expect.Call(adapted.ExecuteRasterQuery(rasterQueryExpressionStub))
                .Return(streamStub);
            }
            mocks.ReplayAll();

            AsyncRasterProviderAdapter adapter = new AsyncRasterProviderAdapter(adapted);

            Assert.Same(streamStub, adapter.ExecuteRasterQuery(rasterQueryExpressionStub));

            mocks.VerifyAll();
        }
 /// <summary>
 /// Performs a finalization procedure for the raster provider.
 /// This implementation do nothing.
 /// </summary>
 /// <param name="provider">Raster provider instance</param>
 public override void ReleaseProviderIfNeeded(IRasterProvider provider)
 {
 }
Esempio n. 15
0
 /// <summary>
 /// Performs a finalization procedure for the raster provider, if needed.
 /// </summary>
 /// <param name="provider">Spatial data provider instance</param>
 public abstract void ReleaseProviderIfNeeded(IRasterProvider provider);
Esempio n. 16
0
 /// <summary>
 /// Performs an actions need to be done for finalization of the raster provider.
 /// <para>
 /// Holders can provide various scenarious of disposing resources 
 /// for raster providers of the same class.
 /// </para>
 /// </summary>
 /// <param name="providerName">A name of the raster provider</param>
 /// <param name="provider">A provider instance for finalization</param>
 public void ReleaseProviderIfNeeded(string providerName, IRasterProvider provider)
 {
     lock (_syncRoot)
     {
         foreach (RasterProviderHolderBase info in _registeredProviders)
             if (info.Name == providerName)
             {
                 info.ReleaseProviderIfNeeded(provider);
                 return;
             }
     }
 }
Esempio n. 17
0
 /// <summary>
 /// Performs a finalization procedure for the raster provider.
 /// This implementation do nothing.
 /// </summary>
 /// <param name="provider">Raster provider instance</param>
 public override void ReleaseProviderIfNeeded(IRasterProvider provider)
 {
 }
Esempio n. 18
0
 public AsyncRasterProviderAdapter(IRasterProvider provider)
     : base(provider)
 {
 }
 /// <summary>
 /// Performs a finalization procedure for the raster provider.
 /// This implementation call Dispose method of the provider.
 /// </summary>
 /// <param name="provider">Raster provider instance</param>
 public override void ReleaseProviderIfNeeded(IRasterProvider provider)
 {
     GDALRasterProvider p = provider as GDALRasterProvider;
     if (p != null)
         p.Dispose();
 }
 /// <summary>
 /// Performs a finalization procedure for the raster provider, if needed.
 /// </summary>
 /// <param name="provider">Spatial data provider instance</param>
 public abstract void ReleaseProviderIfNeeded(IRasterProvider provider);