Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }