/// <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); }
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); }
/// <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); }
public WebFactorTest() { _factor = null; }