/// <summary> /// Get references that matches search criteria. /// </summary> /// <param name="context">Web service request context.</param> /// <param name="searchCriteria">Reference search criteria.</param> /// <returns>References that matches search criteria.</returns> public static List <WebReference> GetReferencesBySearchCriteria(WebServiceContext context, WebReferenceSearchCriteria searchCriteria) { List <WebReference> references; String whereCondition; WebReference reference; // Check data. searchCriteria.CheckData(); // Get information from database. whereCondition = searchCriteria.GetWhereCondition(); references = new List <WebReference>(); using (DataReader dataReader = context.GetReferenceDatabase().GetReferencesBySearchCriteria(whereCondition)) { while (dataReader.Read()) { reference = new WebReference(); reference.LoadData(dataReader); references.Add(reference); } } return(references); }
/// <summary> /// Get all references. /// </summary> /// <param name="context">Web service request context.</param> /// <returns>All references.</returns> public static List <WebReference> GetReferences(WebServiceContext context) { List <WebReference> references; WebReference reference; references = new List <WebReference>(); using (DataReader dataReader = context.GetReferenceDatabase().GetReferences()) { while (dataReader.Read()) { reference = new WebReference(); reference.LoadData(dataReader); references.Add(reference); } } return(references); }
/// <summary> /// Get specified references. /// </summary> /// <param name="context">Web service request context.</param> /// <param name="referenceIds">Reference ids.</param> /// <returns>Specified references.</returns> public static List <WebReference> GetReferencesByIds(WebServiceContext context, List <Int32> referenceIds) { Dictionary <Int32, WebReference> cachedReferences, loadedReferences; List <Int32> notCachedReferenceIds; List <WebReference> references; WebReference reference; // Check data. referenceIds.CheckNotEmpty("referenceIds"); // Get cached information. cachedReferences = GetCachedReferences(context); notCachedReferenceIds = new List <Int32>(); foreach (Int32 referenceId in referenceIds) { if (!cachedReferences.ContainsKey(referenceId)) { notCachedReferenceIds.Add(referenceId); } } loadedReferences = new Dictionary <Int32, WebReference>(); if (notCachedReferenceIds.IsNotEmpty()) { // Get information from database. using (DataReader dataReader = context.GetReferenceDatabase().GetReferencesByIds(notCachedReferenceIds)) { while (dataReader.Read()) { reference = new WebReference(); reference.LoadData(dataReader); loadedReferences.Add(reference.Id, reference); } } UpdateCachedReferences(context, cachedReferences, loadedReferences); } // Create output. references = new List <WebReference>(); foreach (Int32 referenceId in referenceIds) { if (cachedReferences.ContainsKey(referenceId)) { references.Add(cachedReferences[referenceId]); } else { if (!loadedReferences.ContainsKey(referenceId)) { // Not existing reference requested. // TODO: Remove this code when data has been fixed. WebServiceData.LogManager.LogError(context, new Exception("Not existing reference requested. Reference id = " + referenceId)); } references.Add(loadedReferences[referenceId]); } } return(references); }