/// <summary>
        /// Get all species observation data providers.
        /// </summary>
        /// <param name="context">Web service request context.</param>
        /// <returns>All species observation data providers.</returns>
        public virtual Dictionary <Int32, WebSpeciesObservationDataProvider> GetSpeciesObservationDataProvidersDictionary(WebServiceContext context)
        {
            Dictionary <Int32, WebSpeciesObservationDataProvider> dataProviders;
            String cacheKey;
            WebSpeciesObservationDataProvider dataProvider;

            // Get cached information.
            cacheKey      = Settings.Default.SpeciesObservationDataProviderDictionaryCacheKey + ":" + context.Locale.ISOCode;
            dataProviders = (Dictionary <Int32, WebSpeciesObservationDataProvider>)(context.GetCachedObject(cacheKey));

            if (dataProviders.IsEmpty())
            {
                // Data not in cache. Get information from database.
                dataProviders = new Dictionary <int, WebSpeciesObservationDataProvider>();
                using (DataReader dataReader = context.GetDatabase().GetSpeciesObservationDataProviders(context.Locale.Id))
                {
                    while (dataReader.Read())
                    {
                        dataProvider = new WebSpeciesObservationDataProvider();
                        dataProvider.LoadData(dataReader);
                        dataProviders.Add(dataProvider.Id, dataProvider);
                    }
                }

                // Add information to cache.
                context.AddCachedObject(cacheKey,
                                        dataProviders,
                                        DateTime.Now + new TimeSpan(1, 0, 0, 0),
                                        CacheItemPriority.High);
            }

            return(dataProviders);
        }
Пример #2
0
 /// <summary>
 /// Load data into the WebSpeciesObservationDataProvider instance.
 /// </summary>
 /// <param name='speciesObservationDataProvider'>Species observation data Provider.</param>
 /// <param name='dataReader'>An open data reader.</param>
 public static void LoadData(this WebSpeciesObservationDataProvider speciesObservationDataProvider,
                             DataReader dataReader)
 {
     speciesObservationDataProvider.ContactEmail  = dataReader.GetString(SpeciesObservationDataProviderData.CONTACT_EMAIL);
     speciesObservationDataProvider.ContactPerson = dataReader.GetString(SpeciesObservationDataProviderData.CONTACT_PERSON);
     speciesObservationDataProvider.Description   = dataReader.GetString(SpeciesObservationDataProviderData.DESCRIPTION);
     speciesObservationDataProvider.Guid          = dataReader.GetString(SpeciesObservationDataProviderData.GUID);
     speciesObservationDataProvider.Id            = dataReader.GetInt32(SpeciesObservationDataProviderData.ID);
     speciesObservationDataProvider.Name          = dataReader.GetString(SpeciesObservationDataProviderData.NAME);
     speciesObservationDataProvider.NonPublicSpeciesObservationCount = dataReader.GetInt64(SpeciesObservationDataProviderData.NON_PUBLIC_SPECIES_OBSERVATION_COUNT);
     speciesObservationDataProvider.Organization = dataReader.GetString(SpeciesObservationDataProviderData.ORGANIZATION);
     speciesObservationDataProvider.PublicSpeciesObservationCount = dataReader.GetInt64(SpeciesObservationDataProviderData.PUBLIC_SPECIES_OBSERVATION_COUNT);
     speciesObservationDataProvider.SpeciesObservationCount       = dataReader.GetInt64(SpeciesObservationDataProviderData.SPECIES_OBSERVATION_COUNT);
     speciesObservationDataProvider.Url                    = dataReader.GetString(SpeciesObservationDataProviderData.URL);
     speciesObservationDataProvider.IsActiveHarvest        = dataReader.GetBoolean(SpeciesObservationDataProviderData.IS_ACTIVE_HARVEST);
     speciesObservationDataProvider.LatestHarvestDate      = dataReader.GetDateTime(SpeciesObservationDataProviderData.LATEST_HARVEST_DATE, DateTime.MinValue);
     speciesObservationDataProvider.BeginHarvestFromDate   = dataReader.GetDateTime(SpeciesObservationDataProviderData.BEGIN_HARVEST_FROM_DATE, DateTime.MinValue);
     speciesObservationDataProvider.LatestChangedDate      = dataReader.GetDateTime(SpeciesObservationDataProviderData.LATEST_CHANGED_DATE, DateTime.MinValue);
     speciesObservationDataProvider.IsMaxChangeIdSpecified = dataReader.IsNotDbNull(SpeciesObservationDataProviderData.MAX_CHANGE_ID);
     speciesObservationDataProvider.MaxChangeId            = dataReader.GetInt64(SpeciesObservationDataProviderData.MAX_CHANGE_ID, -1);
 }