Esempio n. 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);
        }
        /// <summary>
        /// Get string that can be added as part of a SQL where condition.
        /// Returned string matches specified search criteria.
        /// This procedure only handles one string compare operator.
        /// </summary>
        /// <param name="searchCriteria">Search criteria.</param>
        /// <returns>String that can be added as part of a SQL where condition.</returns>
        public static String GetWhereCondition(this WebReferenceSearchCriteria searchCriteria)
        {
            String        condition;
            StringBuilder whereCondition;

            whereCondition = new StringBuilder();
            if (searchCriteria.IsNotNull())
            {
                whereCondition.Append(searchCriteria.NameSearchString.GetWhereCondition(ReferenceData.NAME_COLUMN_NAME));
                condition = searchCriteria.TitleSearchString.GetWhereCondition(ReferenceData.TITLE_COLUMN_NAME);
                if (whereCondition.ToString().IsNotEmpty() &&
                    condition.IsNotEmpty())
                {
                    whereCondition.Append(" " + searchCriteria.LogicalOperator + " ");
                }

                whereCondition.Append(condition);
                condition = searchCriteria.Years.GetWhereCondition(ReferenceData.YEAR_COLUMN_NAME);
                if (whereCondition.ToString().IsNotEmpty() &&
                    condition.IsNotEmpty())
                {
                    whereCondition.Append(" " + searchCriteria.LogicalOperator + " ");
                }

                whereCondition.Append(condition);
            }

            return(whereCondition.ToString());
        }
Esempio n. 3
0
 /// <summary>
 /// Get references that matches search criteria.
 /// </summary>
 /// <param name="clientInformation">Information about the client that makes this web service call.</param>
 /// <param name="searchCriteria">Reference search criteria.</param>
 /// <returns>References that matches search criteria.</returns>
 public List <WebReference> GetReferencesBySearchCriteria(WebClientInformation clientInformation,
                                                          WebReferenceSearchCriteria searchCriteria)
 {
     using (ClientProxy client = new ClientProxy(this, 2))
     {
         return(client.Client.GetReferencesBySearchCriteria(clientInformation, searchCriteria));
     }
 }
        public void GetReferencesBySearchCriteria()
        {
            List <WebReference>        references;
            WebReferenceSearchCriteria searchCriteria;

            // Test name search criteria.
            searchCriteria = new WebReferenceSearchCriteria();
            searchCriteria.NameSearchString = new WebStringSearchCriteria();
            searchCriteria.NameSearchString.SearchString     = "2003";
            searchCriteria.NameSearchString.CompareOperators = new List <StringCompareOperator>();
            searchCriteria.NameSearchString.CompareOperators.Add(StringCompareOperator.Contains);
            references = ReferenceManager.GetReferencesBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());

            // Test title search criteria.
            searchCriteria = new WebReferenceSearchCriteria();
            searchCriteria.TitleSearchString = new WebStringSearchCriteria();
            searchCriteria.TitleSearchString.SearchString     = "2003";
            searchCriteria.TitleSearchString.CompareOperators = new List <StringCompareOperator>();
            searchCriteria.TitleSearchString.CompareOperators.Add(StringCompareOperator.Contains);
            references = ReferenceManager.GetReferencesBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());

            // Test year search criteria.
            searchCriteria       = new WebReferenceSearchCriteria();
            searchCriteria.Years = new List <Int32>();
            searchCriteria.Years.Add(2003);
            references = ReferenceManager.GetReferencesBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());
            searchCriteria.Years.Add(2004);
            references = ReferenceManager.GetReferencesBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());

            // Test logical operator.
            searchCriteria = new WebReferenceSearchCriteria();
            searchCriteria.NameSearchString = new WebStringSearchCriteria();
            searchCriteria.NameSearchString.SearchString     = "2003";
            searchCriteria.NameSearchString.CompareOperators = new List <StringCompareOperator>();
            searchCriteria.NameSearchString.CompareOperators.Add(StringCompareOperator.Contains);
            searchCriteria.TitleSearchString = new WebStringSearchCriteria();
            searchCriteria.TitleSearchString.SearchString     = "2003";
            searchCriteria.TitleSearchString.CompareOperators = new List <StringCompareOperator>();
            searchCriteria.TitleSearchString.CompareOperators.Add(StringCompareOperator.Contains);
            searchCriteria.Years = new List <Int32>();
            searchCriteria.Years.Add(2003);

            searchCriteria.LogicalOperator = LogicalOperator.Or;
            references = ReferenceManager.GetReferencesBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(references.IsNotEmpty());

            searchCriteria.LogicalOperator = LogicalOperator.And;
            references = ReferenceManager.GetReferencesBySearchCriteria(GetContext(), searchCriteria);
            Assert.IsTrue(references.IsEmpty());
        }
 /// <summary>
 /// Get references that matches search criteria.
 /// </summary>
 /// <param name="clientInformation">Information about the client that makes this web service call.</param>
 /// <param name="searchCriteria">Reference search criteria.</param>
 /// <returns>References that matches search criteria.</returns>
 public List <WebReference> GetReferencesBySearchCriteria(WebClientInformation clientInformation,
                                                          WebReferenceSearchCriteria searchCriteria)
 {
     using (WebServiceContext context = GetWebServiceContext(clientInformation))
     {
         try
         {
             return(ReferenceManager.GetReferencesBySearchCriteria(context, searchCriteria));
         }
         catch (Exception exception)
         {
             WebServiceData.LogManager.LogError(context, exception);
             throw;
         }
     }
 }
        /// <summary>
        /// Convert an IReferenceSearchCriteria instance
        /// to a WebReferenceSearchCriteria instance.
        /// </summary>
        /// <param name="searchCriteria">An IReferenceSearchCriteria instance.</param>
        /// <returns>A WebReferenceSearchCriteria instance.</returns>
        private WebReferenceSearchCriteria GetReferenceSearchCriteria(IReferenceSearchCriteria searchCriteria)
        {
            WebReferenceSearchCriteria webSearchCriteria;

            webSearchCriteria = null;
            if (searchCriteria.IsNotNull())
            {
                webSearchCriteria = new WebReferenceSearchCriteria();
                webSearchCriteria.LogicalOperator   = searchCriteria.LogicalOperator;
                webSearchCriteria.NameSearchString  = GetStringSearchCriteria(searchCriteria.NameSearchString);
                webSearchCriteria.TitleSearchString = GetStringSearchCriteria(searchCriteria.TitleSearchString);
                webSearchCriteria.Years             = searchCriteria.Years;
            }

            return(webSearchCriteria);
        }
        /// <summary>
        /// Check that data is valid.
        /// </summary>
        /// <param name="searchCriteria">The reference instance.</param>
        public static void CheckData(this WebReferenceSearchCriteria searchCriteria)
        {
            searchCriteria.CheckNotNull("searchCriteria");
            searchCriteria.NameSearchString.CheckData(true);
            searchCriteria.TitleSearchString.CheckData(true);

            if (searchCriteria.NameSearchString.IsNull() &&
                searchCriteria.TitleSearchString.IsNull() &&
                searchCriteria.Years.IsEmpty())
            {
                throw new ArgumentException("WebReferenceSearchCriteria: At least one search criteria must be specified.");
            }

            if (searchCriteria.LogicalOperator == LogicalOperator.Not)
            {
                throw new ArgumentException("WebReferenceSearchCriteria: Logical operator not is not supported.");
            }
        }