示例#1
0
文件: Field.cs 项目: Oleg-Avdeev/Digg
        public void Destroy()
        {
            _layersBuilder = null;
            _currentHeight = 0;
            _currentWidth  = 0;

            foreach (var kvp in _cells)
            {
                kvp.Value.Free();
            }

            _cells.Clear();
        }
示例#2
0
        public void GeoserverServiceLayerTest()
        {
            ModulesFactory modulesFactory = new ModulesFactory();

            LayersBuilder builder = new LayersBuilder();

            builder.LayerName   = "constanta:coasta_constanta_labeled";
            builder.SingleLayer = true;


            GeoserverClient geoserverClient = new GeoserverClient("http://localhost:8080", "admin", "geoserver");


            var result = geoserverClient.Get <Layer>(modulesFactory.CreateLayerModule(builder));
        }
示例#3
0
        public void LayersBuilderTest()
        {
            LayersBuilder layersBuilder = new LayersBuilder();

            layersBuilder.LayerName = "constanta_labeled";
            layersBuilder.Workspace = "constanta";
            layersBuilder.Styles    = new List <string>()
            {
                "population"
            };

            string value = layersBuilder.ToXml();

            Assert.IsNotNull(value);
        }
示例#4
0
        /// <summary>
        /// Create an empty dataset in the database. Created dataset will wave status Pending
        /// </summary>
        /// <param name="datasetName">Name of the dataset</param>
        /// <param name="username">The username of the user which create the dataset</param>
        /// <returns>A boolean which indicates if the insert was succesufully and a return message</returns>
        public CreateDatasetResultCode CreateDataSet(string datasetName,
                                                     string username,
                                                     PointsSource pointsSource,
                                                     string serviceUrl       = null,
                                                     string colorPaletteUser = null,
                                                     string colorPaletteName = null)
        {
            int datasetId = this.userRepository.CreateUserPointsDataset(username, datasetName, pointsSource);

            if (pointsSource == PointsSource.Geoserver)
            {
                LayersBuilder builder = new LayersBuilder
                {
                    LayerName   = datasetName,
                    SingleLayer = true
                };
                string          serverUrl = Helper.GetSourceFromUrl(serviceUrl);
                GeoserverClient client    = geoserverClient(serverUrl, null, null);

                if (client.Get <Layer>(new ModulesFactory().CreateLayerModule(builder)) == null)
                {
                    CoreContainers.LogsRepository.LogWarning($"Failed to get {datasetName} from Geoserver: {Helper.GetSourceFromUrl(serverUrl)}.");
                    return(CreateDatasetResultCode.GeoserverError);
                }

                //if dataset already exists in database
                if (datasetId == -1)
                {
                    datasetId = this.userRepository.GetDatasetID(username, datasetName);
                }

                int defaultColorPaletteId = this.userRepository.GetColorMapID(colorPaletteUser, colorPaletteName);
                if (defaultColorPaletteId == -1)
                {
                    return(CreateDatasetResultCode.BadPaletteError);
                }

                datasetId = this.userRepository.RaiseToGeoserverDataset(datasetId,
                                                                        defaultColorPaletteId,
                                                                        serviceUrl);
            }

            return(datasetId != -1 ? CreateDatasetResultCode.Ok : CreateDatasetResultCode.DatasetError);
        }
示例#5
0
文件: Field.cs 项目: Oleg-Avdeev/Digg
        public void ResizeField(int width, int height, LayersBuilder layersBuilder)
        {
            _cellsPool.Initialize();

            _layersBuilder = layersBuilder;

            if (_currentWidth == 0)
            {
                CreateCell(0, 0);
                _currentWidth  = 1;
                _currentHeight = 1;
            }

            ChangeSize(_currentWidth, _currentHeight, width - _currentWidth, true);
            ChangeSize(_currentHeight, width, height - _currentHeight, false);

            _fieldScaler.Scale(width, height);
            _currentHeight = height;
            _currentWidth  = width;
        }
 public LayersModule(LayersBuilder layersBuilder)
 {
     this.layersBuilder = layersBuilder;
 }
示例#7
0
        /// <summary>
        /// Use this method to associate a style with a layer in geoserver or to validate a layer
        /// </summary>
        /// <param name="datasetId"></param>
        /// <param name="paletteName"></param>
        /// <param name="paletteUsername"></param>
        /// <returns></returns>
        public bool ValidateGeoserverLayer(string datasetName, string datasetUsername, string paletteName, string paletteUsername)
        {
            /**
             * Steps: 1. check if palette is already asociated. If yes, return true
             *        2. if the palette is not associated, retrieve it from db and associate it with layer.
             *        3. if insert succeed, count the palette in the database and return true
             *        4. if insert fail, return false
             */

            try
            {
                if (string.IsNullOrEmpty(paletteName) || string.IsNullOrEmpty(paletteUsername))
                {
                    return(false);
                }

                int datasetId   = userRepository.GetDatasetID(datasetUsername, datasetName);
                int geoserverId = userRepository.GetGeoserverDatasetID(datasetId);

                if (geoserverId == -1)
                {
                    return(false);
                }

                var datasetHeader     = userRepository.GetDatasetHeader(datasetId);
                var geoserverPalettes = userRepository.GetGeoserverColorMaps(geoserverId);

                var selectedPalette = geoserverPalettes.Where(p => p.Item1 == paletteUsername && p.Item2.Name == paletteName).FirstOrDefault();
                if (selectedPalette != null)
                {
                    return(true);
                }
                selectedPalette = getUserColorMap(paletteUsername, paletteName);

                string serverUrl = Helper.GetSourceFromUrl((datasetHeader.OptionalData as GeoserverOptionalData).ServerUrl);

                GeoserverClient client = geoserverClient(
                    serverUrl,
                    null,
                    null);

                if (!insertGeoserverStyle(client, selectedPalette.Item1, selectedPalette.Item2))
                {
                    CoreContainers.LogsRepository.LogWarning($"Failed to associate palette {selectedPalette.Item2.Name} with the dataset found at {serverUrl}");
                }

                ModulesFactory modulesFactory = new ModulesFactory();

                LayersBuilder builder = new LayersBuilder();
                builder.LayerName   = userRepository.GetDatasetHeader(datasetId).Name;
                builder.SingleLayer = true;

                builder.Styles = geoserverPalettes.Select(p => p.Item1 + '_' + p.Item2.Name).ToList();
                builder.Styles.Add(paletteUsername + '_' + paletteName);

                return(client.Put(modulesFactory.CreateLayerModule(builder)) ?
                       userRepository.InsertGeoserverColorMap(
                           geoserverId,
                           paletteName,
                           paletteUsername
                           ) != -1
                    : false);
            }
            catch (Exception exception)
            {
                return(false);
            }
        }
 public IGeoserverModule CreateLayerModule(LayersBuilder layersBuilder)
 {
     return(new LayersModule(layersBuilder));
 }