Beispiel #1
0
        /// <summary>
        /// Get all factors.
        /// </summary>
        /// <param name="context">Web service request context.</param>
        /// <returns>All factors.</returns>
        public static List <WebFactor> GetFactors(WebServiceContext context)
        {
            List <WebFactor> factors;
            WebFactor        factor;
            Boolean          getOnlyPublicFactors = !IsUserAuthorizedToReadNonPublicFactors(context);

            // Get cached information.
            factors = null;
            if (!context.IsInTransaction())
            {
                factors = GetFactorInformation(context, getOnlyPublicFactors).Factors;
            }

            if (factors.IsNull())
            {
                // Get information from database.
                factors = new List <WebFactor>();
                using (DataReader dataReader = context.GetTaxonAttributeDatabase().GetFactors(getOnlyPublicFactors))
                {
                    while (dataReader.Read())
                    {
                        factor = new WebFactor();
                        factor.LoadData(dataReader);
                        factors.Add(factor);
                    }
                }
            }

            return(factors);
        }
Beispiel #2
0
 public WebFactor GetFactor(Boolean refresh)
 {
     if (_factor.IsNull() || refresh)
     {
         _factor = FactorManagerTest.GetOneFactor(GetContext());
     }
     return(_factor);
 }
 /// <summary>
 /// Load data into the WebFactor instance.
 /// </summary>
 /// <param name="factor">The factor instance.</param>
 /// <param name='dataReader'>An open data reader.</param>
 public static void LoadData(this WebFactor factor,
                             DataReader dataReader)
 {
     factor.DataTypeId = dataReader.GetInt32(FactorData.FACTOR_DATA_TYPE_ID, -1);
     factor.DefaultHostParentTaxonId = dataReader.GetInt32(FactorData.DEFAULT_HOST_PARENT_TAXON_ID, 0);
     factor.HostLabel             = dataReader.GetString(FactorData.HOST_LABEL);
     factor.Id                    = dataReader.GetInt32(FactorData.ID);
     factor.Information           = dataReader.GetString(FactorData.INFORMATION);
     factor.IsDataTypeIdSpecified = dataReader.IsNotDbNull(FactorData.FACTOR_DATA_TYPE_ID);
     factor.IsLeaf                = dataReader.GetBoolean(FactorData.IS_LEAF, false);
     factor.IsPeriodic            = dataReader.GetBoolean(FactorData.IS_PERIODIC, false);
     factor.IsPublic              = dataReader.GetBoolean(FactorData.IS_PUBLIC, false);
     factor.IsTaxonomic           = factor.HostLabel.IsNotNull();
     factor.Label                 = dataReader.GetString(FactorData.LABEL);
     factor.Name                  = dataReader.GetString(FactorData.NAME);
     factor.OriginId              = dataReader.GetInt32(FactorData.FACTOR_ORIGIN_ID);
     factor.SortOrder             = dataReader.GetInt32(FactorData.SORT_ORDER);
     factor.UpdateModeId          = dataReader.GetInt32(FactorData.FACTOR_UPDATE_MODE_ID);
 }
        /// <summary>
        /// Convert a WebFactor instance into
        /// an IFactor instance.
        /// </summary>
        /// <param name="userContext">
        /// Information about the user that makes this method call.
        /// </param>
        /// <param name="webFactor">A WebFactor instance.</param>
        /// <param name="factorDataTypes">List of factor data types.</param>
        /// <param name="factorOrigins">List of factor origins.</param>
        /// <param name="factorUpdateModes">List of factor update modes.</param>
        /// <returns>An IFactor instance.</returns>
        private IFactor GetFactor(IUserContext userContext, WebFactor webFactor, FactorDataTypeList factorDataTypes, FactorOriginList factorOrigins, FactorUpdateModeList factorUpdateModes)
        {
            IFactor factor = new Factor
            {
                DataContext = GetDataContext(userContext),
                Id          = webFactor.Id,
                DefaultHostParentTaxonId = webFactor.DefaultHostParentTaxonId,
                DataType    = webFactor.IsDataTypeIdSpecified ? factorDataTypes.Get(webFactor.DataTypeId) : null,
                Origin      = factorOrigins.Get(webFactor.OriginId),
                UpdateMode  = factorUpdateModes.Get(webFactor.UpdateModeId),
                HostLabel   = webFactor.HostLabel,
                Information = webFactor.Information,
                IsLeaf      = webFactor.IsLeaf,
                IsPeriodic  = webFactor.IsPeriodic,
                IsPublic    = webFactor.IsPublic,
                IsTaxonomic = webFactor.IsTaxonomic,
                Label       = webFactor.Label,
                Name        = webFactor.Name,
                SortOrder   = webFactor.SortOrder
            };

            return(factor);
        }
Beispiel #5
0
        /// <summary>
        /// Get information about factors that matches the search criteria.
        /// </summary>
        /// <param name="context">Web service request context.</param>
        /// <param name="searchCriteria">The factor search criteria.</param>
        /// <returns>Factors that matches the search criteria.</returns>
        public static List <WebFactor> GetFactorsBySearchCriteria(WebServiceContext context,
                                                                  WebFactorSearchCriteria searchCriteria)
        {
            List <WebFactor> factors;
            Int32            factorId;
            String           nameSearchMethodString, nameSearchString;
            WebFactor        factor;

            // Check arguments.
            searchCriteria.CheckNotNull("searchCriteria");
            searchCriteria.CheckData();

            // Test if name search string is a factor id.
            if (searchCriteria.NameSearchString.IsNotNull() &&
                searchCriteria.NameSearchString.SearchString.IsNotEmpty() &&
                searchCriteria.IsIdInNameSearchString &&
                Int32.TryParse(searchCriteria.NameSearchString.SearchString, out factorId))
            {
                if (searchCriteria.RestrictSearchToFactorIds.IsNull())
                {
                    searchCriteria.RestrictSearchToFactorIds = new List <Int32>();
                }

                searchCriteria.RestrictSearchToFactorIds.Add(factorId);
                searchCriteria.NameSearchString = null;
            }

            // Get information about factors from database.
            factors = new List <WebFactor>();
            if (searchCriteria.NameSearchString.IsNotNull())
            {
                // ReSharper disable once PossibleNullReferenceException
                foreach (StringCompareOperator compareOperator in searchCriteria.NameSearchString.CompareOperators)
                {
                    switch (compareOperator)
                    {
                    case StringCompareOperator.BeginsWith:
                        nameSearchMethodString = "Like";
                        nameSearchString       = searchCriteria.NameSearchString.SearchString + "%";
                        break;

                    case StringCompareOperator.Contains:
                        nameSearchMethodString = "Like";
                        nameSearchString       = "%" + searchCriteria.NameSearchString.SearchString + "%";
                        break;

                    case StringCompareOperator.EndsWith:
                        nameSearchMethodString = "Like";
                        nameSearchString       = "%" + searchCriteria.NameSearchString.SearchString;
                        break;

                    case StringCompareOperator.Equal:
                        nameSearchMethodString = "Exact";
                        nameSearchString       = searchCriteria.NameSearchString.SearchString;
                        break;

                    case StringCompareOperator.Like:
                        nameSearchMethodString = "Like";
                        nameSearchString       = searchCriteria.NameSearchString.SearchString;
                        break;

                    default:
                        throw new ArgumentException("GetFactorsBySearchCriteria Not supported string compare operator = " + compareOperator);
                    }

                    using (DataReader dataReader = context.GetTaxonAttributeDatabase().GetFactorsBySearchCriteria(searchCriteria.RestrictSearchToFactorIds,
                                                                                                                  nameSearchString,
                                                                                                                  nameSearchMethodString,
                                                                                                                  searchCriteria.RestrictSearchToScope.ToString(),
                                                                                                                  searchCriteria.RestrictReturnToScope.ToString()))
                    {
                        while (dataReader.Read())
                        {
                            factor = new WebFactor();
                            factor.LoadData(dataReader);
                            factors.Add(factor);
                        }
                    }

                    if (factors.IsNotEmpty())
                    {
                        break;
                    }
                }
            }
            else
            {
                using (DataReader dataReader = context.GetTaxonAttributeDatabase().GetFactorsBySearchCriteria(searchCriteria.RestrictSearchToFactorIds,
                                                                                                              null,
                                                                                                              "Exact",
                                                                                                              searchCriteria.RestrictSearchToScope.ToString(),
                                                                                                              searchCriteria.RestrictReturnToScope.ToString()))
                {
                    while (dataReader.Read())
                    {
                        factor = new WebFactor();
                        factor.LoadData(dataReader);
                        factors.Add(factor);
                    }
                }
            }

            return(factors);
        }
Beispiel #6
0
 public WebFactorTest()
 {
     _factor = null;
 }