public void GetQueryComplexityEstimate_ObservationMapWithoutTaxaFilter_ReturnSlowEstimate()
        {
            SpeciesObservationResultCalculator resultCalculator = new SpeciesObservationResultCalculator(SessionHandler.UserContext, SessionHandler.MySettings);
            QueryComplexityEstimate            result           = resultCalculator.GetQueryComplexityEstimate();

            //var result = QueryComplexityManager.GetQueryComplexityEstimate(ResultType.SpeciesObservationMap, SessionHandler.UserContext, SessionHandler.MySettings);
            Assert.AreEqual(QueryComplexityExecutionTime.Slow, result.QueryComplexityExecutionTime);
        }
        public void GetQueryComplexityEstimate_ObservationMapWith100Taxa_ReturnMediumEstimate()
        {
            SessionHandler.MySettings.Filter.Taxa.AddTaxonIds(Enumerable.Range(1, 100));
            //var result = QueryComplexityManager.GetQueryComplexityEstimate(ResultType.SpeciesObservationMap, SessionHandler.UserContext, SessionHandler.MySettings);
            SpeciesObservationResultCalculator resultCalculator = new SpeciesObservationResultCalculator(SessionHandler.UserContext, SessionHandler.MySettings);
            QueryComplexityEstimate            result           = resultCalculator.GetQueryComplexityEstimate();

            Assert.AreEqual(QueryComplexityExecutionTime.Medium, result.QueryComplexityExecutionTime);
        }
        public void GetQueryComplexityEstimate_ObservationMapWithoutTaxaFilter_ReturnGridMapResultViewSuggestion()
        {
            SpeciesObservationResultCalculator resultCalculator = new SpeciesObservationResultCalculator(SessionHandler.UserContext, SessionHandler.MySettings);
            QueryComplexityEstimate            result           = resultCalculator.GetQueryComplexityEstimate(false);

            //QueryComplexityEstimate result;
            //result = QueryComplexityManager.GetQueryComplexityEstimate(
            //    ResultType.SpeciesObservationMap,
            //    SessionHandler.UserContext,
            //    SessionHandler.MySettings);
            Assert.AreEqual(ResultType.SpeciesObservationGridMap, result.ComplexityDescription.SuggestedResultViews[0].ResultType);
        }
        public void GetQueryComplexityEstimate_ObservationMapWith1TaxaWithSpatialFilter_ReturnMediumEstimate()
        {
            DataPolygon dataPolygon = CreateSampleDataPolygon();

            SessionHandler.MySettings.Filter.Taxa.AddTaxonId(1);
            SessionHandler.MySettings.Filter.Spatial.Polygons.Add(dataPolygon);
            //var result = QueryComplexityManager.GetQueryComplexityEstimate(ResultType.SpeciesObservationMap, SessionHandler.UserContext, SessionHandler.MySettings);
            SpeciesObservationResultCalculator resultCalculator = new SpeciesObservationResultCalculator(SessionHandler.UserContext, SessionHandler.MySettings);
            QueryComplexityEstimate            result           = resultCalculator.GetQueryComplexityEstimate();

            Assert.AreEqual(QueryComplexityExecutionTime.Medium, result.QueryComplexityExecutionTime);
        }
        public void GetQueryComplexityEstimate_ObservationMapWithoutTaxaFilterButWithCachedResult_ReturnFastEstimate()
        {
            SpeciesObservationsData speciesObservationsData;

            //QueryComplexityEstimate result;
            LoginApplicationUser();

            speciesObservationsData = CreateSpeciesObservationData(SessionHandler.UserContext, SessionHandler.MySettings);
            CalculatedDataItemCacheManager.GetSpeciesObservationData(SessionHandler.MySettings, "").Data = speciesObservationsData;
            SpeciesObservationResultCalculator resultCalculator = new SpeciesObservationResultCalculator(SessionHandler.UserContext, SessionHandler.MySettings);
            QueryComplexityEstimate            result           = resultCalculator.GetQueryComplexityEstimate();

            //result = QueryComplexityManager.GetQueryComplexityEstimate(ResultType.SpeciesObservationMap, SessionHandler.UserContext, SessionHandler.MySettings);
            Assert.AreEqual(QueryComplexityExecutionTime.Fast, result.QueryComplexityExecutionTime);
        }
Пример #6
0
        /// <summary>
        /// Creates an excel file.
        /// Writes the content of a list into a worksheet of an excelfile and save the file.
        /// </summary>
        /// <param name="autosizeColumnWidth">
        /// If true, the columns will be autosized.
        /// </param>
        /// <returns>
        /// The <see cref="MemoryStream"/>.
        /// </returns>
        private MemoryStream CreateExcelFile(bool autosizeColumnWidth = false)
        {
            var memoryStream = new MemoryStream();

            try
            {
                using (ExcelPackage package = new ExcelPackage(memoryStream))
                {
                    var resultCalculator = new SpeciesObservationResultCalculator(currentUser, SessionHandler.MySettings);
                    List <Dictionary <ViewTableField, string> > speciesObservations = resultCalculator.GetTableResult(this.coordinateSystemId, this.speciesObservationTableColumnsSetId);

                    // Add a new worksheet to the empty workbook.
                    // The name of the sheet can not be longer than 31 characters.
                    var worksheet = package.Workbook.Worksheets.Add("SLW Data");
                    AddHeaders(worksheet, speciesObservations);
                    AddSpeciesObservationsData(worksheet, speciesObservations);
                    FormatHeader(worksheet, 1, speciesObservations.Any() ? speciesObservations.First().Keys.Count : 1);

                    if (autosizeColumnWidth)
                    {
                        worksheet.Cells.AutoFitColumns(0);
                    }

                    //Add aditional sheets if user has request that
                    AddAditionalSheets(package);

                    package.Save();
                }

                memoryStream.Position = 0;
                return(memoryStream);
            }
            catch (Exception)
            {
                memoryStream.Dispose();

                throw;
            }
        }
Пример #7
0
        /// <summary>
        /// Method that generates an CSV file with species observations.
        /// </summary>
        /// <param name="presentationCoordinateSystem">Coordinate system to use.</param>
        /// <param name="columnsSet">Which columns set to use.</param>
        /// <param name="columnsHeadersType">Columns headers type to use.</param>
        /// <returns>A CSV file.</returns>
        public FileResult SpeciesObservationsAsCsv(
            int?presentationCoordinateSystem,
            int?columnsSet,
            int?columnsHeadersType)
        {
            if (NoFilterSelected)
            {
                throw new Exception("Too much data! You must set taxa filter or spatial filter.");
            }
            var coordinateSystemId = GetCoordinateSystemIdFromArgument(
                presentationCoordinateSystem,
                SessionHandler.MySettings.Presentation.Map.DownloadCoordinateSystemId);

            SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId =
                GetSpeciesObservationTableColumnsSetIdFromArgument(
                    columnsSet,
                    SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.SpeciesObservationTableColumnsSetId);

            bool useLabelAsColumnHeader = GetUselabelAsColumnHeaderFromArgument(
                columnsHeadersType,
                SessionHandler.MySettings.Presentation.Table.SpeciesObservationTable.UseLabelAsColumnHeader);

            SpeciesObservationResultCalculator          resultCalculator = new SpeciesObservationResultCalculator(GetCurrentUser(), SessionHandler.MySettings);
            List <Dictionary <ViewTableField, string> > result           =
                resultCalculator.GetTableResult(
                    coordinateSystemId,
                    speciesObservationTableColumnsSetId);

            SpeciesObservationsCsv file = FileExportManager.GetSpeciesObservationsAsCsv(
                result,
                useLabelAsColumnHeader);
            MemoryStream returnStream = file.ToStream();

            SetServerDone();
            return(File(
                       returnStream.ToArray(),
                       "text/csv",
                       FilenameGenerator.CreateFilename("SpeciesObservations", FileType.Csv)));
        }
        public static string GetLayerGeojson(
            IUserContext currentUser,
            int layerId,
            CoordinateSystemId coordinateSystemId,
            IDictionary <string, object> parameters,
            out string layerName,
            MapExportModel.Extent mapExtent)
        {
            string geoJson = null;

            layerName = null;

            if (layerId == null)
            {
                return(null);
            }

            if (layerId >= CustomLayersStartLayerId)
            {
                var viewManager = new WfsLayersViewManager(currentUser, SessionHandler.MySettings);

                var layer = viewManager.GetWfsLayers().FirstOrDefault(l => l.Id == layerId);
                layerName = layer.Name;

                if (layer.IsFile)
                {
                    geoJson = JsonConvert.SerializeObject(MySettingsManager.GetMapDataFeatureCollection(currentUser, layer.GeometryName, coordinateSystemId));
                }
                else
                {
                    var url = WFSFilterUtils.GetResultingUrl(layer.ServerUrl, layer.TypeName, "1.1.0", layer.Filter, "application%2Fjson", null, string.Format("EPSG%3A{0}", coordinateSystemId.Srid()));

                    var request = WebRequest.Create(url);
                    request.Credentials = CredentialCache.DefaultCredentials;
                    // Get the response.

                    using (var response = request.GetResponse())
                    {
                        using (var dataStream = response.GetResponseStream())
                        {
                            using (var reader = new StreamReader(dataStream))
                            {
                                geoJson = reader.ReadToEnd();
                                reader.Close();
                            }
                        }
                        response.Close();
                    }
                }
            }
            else
            {
                switch (layerId)
                {
                case SpeciesRichnessGridLayerId:
                    var taxonGridCalculator = new TaxonGridCalculator(currentUser, SessionHandler.MySettings);
                    geoJson = taxonGridCalculator.GetTaxonGridAsGeoJson();

                    var attribute = (string)(parameters.ContainsKey("attribute") ? parameters["attribute"] : null);

                    layerName = Resource.ResultViewSpeciesRichnessGridMapLayerName;
                    if (attribute != null)
                    {
                        switch (attribute.ToLower().Trim())
                        {
                        case "speciescount":
                            layerName = Resource.ResultDownloadSpeciesRichnessGridMap;
                            break;

                        case "observationcount":
                            layerName = Resource.ResultDownloadObservationsGridMap;
                            break;
                        }
                    }

                    break;

                case SpeciesObservationGridMapLayerId:
                case EooConvexHullLayerId:
                case EooConcaveHullLayerId:
                    var speciesObservationGridCalculator = new SpeciesObservationGridCalculator(currentUser, SessionHandler.MySettings);
                    if (layerId == SpeciesObservationGridMapLayerId)
                    {
                        geoJson   = speciesObservationGridCalculator.GetSpeciesObservationGridAsGeoJson();
                        layerName = Resource.ResultViewSpeciesObservationGridMap;
                    }
                    else
                    {
                        var alphaValue     = (int?)(parameters.ContainsKey("alphaValue") ? parameters["alphaValue"] : null);
                        var useCenterPoint = (bool?)(parameters.ContainsKey("useCenterPoint") ? parameters["useCenterPoint"] : null);
                        geoJson = speciesObservationGridCalculator.GetSpeciesObservationAOOEOOAsGeoJson(
                            layerId == EooConcaveHullLayerId ? alphaValue : 0,
                            useCenterPoint ?? true);
                        layerName = Resource.MapEOOLayer;
                    }

                    break;

                case ObservationsLayerId:     //Observations
                case SpeciesObservationClusterPointMapLayerId:
                    SpeciesObservationResultCalculator resultCalculator = null;
                    try
                    {
                        var displayCoordinateSystemId = SessionHandler.MySettings.Presentation.Map.PresentationCoordinateSystemId;
                        resultCalculator = new SpeciesObservationResultCalculator(currentUser, SessionHandler.MySettings);
                        geoJson          = resultCalculator.GetSpeciesObservationsAsGeoJson(displayCoordinateSystemId);
                        layerName        = Resource.MapLayerObservations;
                    }
                    catch (Exception)
                    {
                    }
                    break;
                }
            }

            return(geoJson);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="SpeciesObservationsExcelXml"/> class.
        /// </summary>
        /// <param name="currentUser">Current user context.</param>
        /// <param name="addSettings">True if settings sheet should be included</param>
        /// <param name="addProvenance">True if provenance sheet should be included.</param>
        /// <param name="coordinateSystemId">The coordinate system.</param>
        /// <param name="speciesObservationTableColumnsSetId">The table columns set to use.</param>
        /// <param name="useLabelAsColumnHeader">Use label as column header.</param>
        public SpeciesObservationsExcelXml(
            IUserContext currentUser,
            bool addSettings,
            bool addProvenance,
            CoordinateSystemId coordinateSystemId,
            SpeciesObservationTableColumnsSetId speciesObservationTableColumnsSetId,
            bool useLabelAsColumnHeader)
        {
            var resultCalculator    = new SpeciesObservationResultCalculator(currentUser, SessionHandler.MySettings);
            var speciesObservations = resultCalculator.GetTableResult(coordinateSystemId, speciesObservationTableColumnsSetId);

            _xmlBuilder = new StringBuilder();

            // Add file definitions and basic format settings
            _xmlBuilder.AppendLine(GetInitialSection());

            // Specify column and row counts
            List <string> columns = new List <string>();

            if (speciesObservations.Count > 0)
            {
                foreach (ViewTableField tableField in speciesObservations[0].Keys)
                {
                    if (useLabelAsColumnHeader)
                    {
                        columns.Add(tableField.Title);
                    }
                    else
                    {
                        columns.Add(tableField.DataField);
                    }
                }
            }

            _xmlBuilder.AppendLine(GetColumnInitialSection(columns.Count, speciesObservations.Count));

            // Specify column widths
            foreach (string column in columns)
            {
                _xmlBuilder.AppendLine(GetColumnWidthLine(100));
            }

            // Add row with column headers
            _xmlBuilder.AppendLine(GetRowStart());
            foreach (string column in columns)
            {
                _xmlBuilder.AppendLine(GetColumnNameRowLine(column));
            }

            _xmlBuilder.AppendLine(GetRowEnd());

            // Data values
            foreach (Dictionary <ViewTableField, string> speciesObservation in speciesObservations)
            {
                _xmlBuilder.AppendLine(GetRowStart());
                foreach (var val in speciesObservation.Values)
                {
                    _xmlBuilder.AppendLine(GetDataRowLine("String", val));
                }

                _xmlBuilder.AppendLine(GetRowEnd());
            }

            _xmlBuilder.AppendLine(GetFinalSection(GetAditionalSheets(currentUser, addSettings, addProvenance)));
        }