예제 #1
0
        private static Criteria GetCriteriaObject(IClassDef classDef, string criteriaString)
        {
            var criteria = CriteriaParser.CreateCriteria(criteriaString);

            QueryBuilder.PrepareCriteria(classDef, criteria);
            return(criteria);
        }
예제 #2
0
        public void TestFind_UsingGuidCriteriaString_Typed()
        {
            //---------------Set up test pack-------------------
            BORegistry.DataAccessor = new DataAccessorInMemory(new DataStoreInMemory());
            ClassDef.ClassDefs.Clear();
            ContactPersonTestBO.LoadDefaultClassDef_WOrganisationID();
            OrganisationTestBO.LoadDefaultClassDef();
            ContactPersonTestBO cp = new ContactPersonTestBO {
                Surname = Guid.NewGuid().ToString("N")
            };

            cp.OrganisationID = OrganisationTestBO.CreateSavedOrganisation().OrganisationID;
            cp.Save();
            DataStoreInMemory dataStore = new DataStoreInMemory();

            dataStore.Add(cp);
            Criteria criteria = CriteriaParser.CreateCriteria("OrganisationID = " + cp.OrganisationID);

            //---------------Assert Precondtions---------------
            Assert.IsNotNull(cp.OrganisationID);
            //---------------Execute Test ----------------------
            ContactPersonTestBO loadedCP = dataStore.Find <ContactPersonTestBO>(criteria);

            //---------------Test Result -----------------------
            Assert.IsNotNull(loadedCP);
            Assert.AreSame(cp.ID, loadedCP.ID);
        }
예제 #3
0
 public void PopulateCollectionAsync <T>(string criteria, string order = null, Action afterPopulation = null) where T : class, IBusinessObject, new()
 {
     this.RunAsyncOperationStartedHandler();
     this.PopulateCollectionAsync <T>(CriteriaParser.CreateCriteria(criteria), OrderCriteria.FromString(order));
     this.RunAsyncOperationCompleteHandler();
     if (afterPopulation != null)
     {
         afterPopulation();
     }
 }
예제 #4
0
        public void Test_CreateCriteria_ThreeParts_WithBrackets()
        {
            //---------------Set up test pack-------------------
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria         = CriteriaParser.CreateCriteria("(FirstName = firstNameValue and MiddleName = middleNameValue) and Surname = surnameValue");
            string   criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            StringAssert.AreEqualIgnoringCase("((FirstName = 'firstNameValue') AND (MiddleName = 'middleNameValue')) AND (Surname = 'surnameValue')", criteriaAsString);
        }
예제 #5
0
        public void Test_CreateCriteria_TwoParts_WithOr()
        {
            //---------------Set up test pack-------------------
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria         = CriteriaParser.CreateCriteria("FirstName = firstNameValue or Surname = surnameValue");
            string   criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            StringAssert.AreEqualIgnoringCase("(FirstName = 'firstNameValue') OR (Surname = 'surnameValue')", criteriaAsString);
        }
예제 #6
0
        public void Test_CreateCriteria_Simple_PropNameDiff()
        {
            //---------------Set up test pack-------------------
            const string propName = "OtherPropName";
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria         = CriteriaParser.CreateCriteria(propName + " = surnameValue");
            string   criteriaAsString = criteria.ToString();

            StringAssert.AreEqualIgnoringCase(propName + " = 'surnameValue'", criteriaAsString);
        }
예제 #7
0
        public void Test_CreateCriteria_Simple()
        {
            //---------------Set up test pack-------------------
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria         = CriteriaParser.CreateCriteria("Surname = surnameValue");
            string   criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            StringAssert.AreEqualIgnoringCase("Surname = 'surnameValue'", criteriaAsString);
        }
예제 #8
0
        private BOSequenceNumberLocking LoadSequenceNumber(string numberType)
        {
            var searchCriteria           = string.Format("NumberType = '{0}'", numberType);
            var criteria                 = CriteriaParser.CreateCriteria(searchCriteria);
            var sequenceBOSequenceNumber =
                BORegistry.DataAccessor.BusinessObjectLoader.GetBusinessObject <BOSequenceNumberLocking>(criteria);

            if (sequenceBOSequenceNumber == null)
            {
                sequenceBOSequenceNumber = CreateSequenceForType(numberType);
            }
            return(sequenceBOSequenceNumber);
        }
예제 #9
0
        public void Test_CreateCriteria_FourParts()
        {
            //---------------Set up test pack-------------------
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria = CriteriaParser.CreateCriteria("FirstName = firstNameValue and MiddleName = middleNameValue " +
                                                              "and Surname = surnameValue and Nickname = nicknameValue");
            string criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            StringAssert.AreEqualIgnoringCase("(FirstName = 'firstNameValue') AND ((MiddleName = 'middleNameValue') " +
                                              "AND ((Surname = 'surnameValue') AND (Nickname = 'nicknameValue')))", criteriaAsString);
        }
예제 #10
0
        public void Test_CreateCriteria_Simple_WithIn_MultipleValues_QuoteInsideValue()
        {
            //---------------Set up test pack-------------------

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria         = CriteriaParser.CreateCriteria("Surname in ('Bob, \' Bob2', 'Name2', 'Name3')");
            string   criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            Assert.AreEqual(Criteria.ComparisonOp.In, criteria.ComparisonOperator);
            StringAssert.AreEqualIgnoringCase("Surname in ('Bob, \' Bob2', 'Name2', 'Name3')", criteriaAsString);
        }
예제 #11
0
        public void Test_CreateCriteria_Simple_WithNotIn()
        {
            //---------------Set up test pack-------------------

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria         = CriteriaParser.CreateCriteria("Surname not in ('Bob')");
            string   criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            Assert.AreEqual(Criteria.ComparisonOp.NotIn, criteria.ComparisonOperator);
            StringAssert.AreEqualIgnoringCase("Surname NOT IN ('Bob')", criteriaAsString);
        }
예제 #12
0
        public void Test_CreateCriteria_Simple_WithIsNot()
        {
            //---------------Set up test pack-------------------

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria         = CriteriaParser.CreateCriteria("Surname Is Not Null");
            string   criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            Assert.AreEqual(Criteria.ComparisonOp.IsNot, criteria.ComparisonOperator);
            StringAssert.AreEqualIgnoringCase("Surname IS NOT NULL", criteriaAsString);
        }
예제 #13
0
        public void Test_CreateCriteria_FourParts_WithBrackets_MultipleOperators()
        {
            //---------------Set up test pack-------------------
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria = CriteriaParser.CreateCriteria("(FirstName < firstNameValue and MiddleName >= middleNameValue) " +
                                                              "or (Surname > surnameValue and Nickname <> nicknameValue)");
            string criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            StringAssert.AreEqualIgnoringCase("((FirstName < 'firstNameValue') AND (MiddleName >= 'middleNameValue')) " +
                                              "OR ((Surname > 'surnameValue') AND (Nickname <> 'nicknameValue'))", criteriaAsString);
        }
예제 #14
0
        public void Test_CreateCriteria_Simple_WithGreaterThanEqual()
        {
            //---------------Set up test pack-------------------
            string surnameValue = Guid.NewGuid().ToString("N");

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            Criteria criteria         = CriteriaParser.CreateCriteria("Surname >= " + surnameValue + "");
            string   criteriaAsString = criteria.ToString();

            //---------------Test Result -----------------------
            Assert.AreEqual(Criteria.ComparisonOp.GreaterThanEqual, criteria.ComparisonOperator);
            StringAssert.AreEqualIgnoringCase("Surname >= '" + surnameValue + "'", criteriaAsString);
        }
예제 #15
0
        public void Test_CreateCriteria_Invalid()
        {
            //---------------Set up test pack-------------------

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            try
            {
                CriteriaParser.CreateCriteria("surnameValue");
                Assert.Fail("expected Err");
            }
            //---------------Test Result -----------------------
            catch (HabaneroDeveloperException ex)
            {
                StringAssert.Contains("The criteria string surnameValue is not a valid criteria string", ex.DeveloperMessage);
            }
            //---------------Test Result -----------------------
        }
예제 #16
0
        public void Test_CreateCriteria_Simple_WithInvalid()
        {
            //---------------Set up test pack-------------------
            string surnameValue = Guid.NewGuid().ToString("N");

            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            try
            {
                CriteriaParser.CreateCriteria("Surname INALID " + surnameValue + "");
                Assert.Fail("expected Err");
            }
            //---------------Test Result -----------------------
            catch (HabaneroDeveloperException ex)
            {
                StringAssert.Contains("is not a valid criteria string", ex.DeveloperMessage);
            }
        }
 public void PopulateCollectionAsync <T>(string criteria, string order, Action afterPopulation = null) where T : class, IBusinessObject, new()
 {
     this.PopulateCollectionAsync <T>(CriteriaParser.CreateCriteria(criteria), OrderCriteria.FromString(order), afterPopulation);
 }
        /// <summary>
        /// Loads a business object of the type identified by a <see cref="ClassDef"/>, using the criteria given
        /// </summary>
        /// <param name="classDef">The ClassDef of the object to load.</param>
        /// <param name="criteriaString">The criteria to use to load the business object must be of formst "PropName = criteriaValue" e.g. "Surname = Powell"</param>
        /// <returns>The business object that was found. If none was found, null is returned. If more than one is found an error is raised</returns>
        public IBusinessObject GetBusinessObject(IClassDef classDef, string criteriaString)
        {
            Criteria criteriaObject = CriteriaParser.CreateCriteria(criteriaString);

            return(GetBusinessObjectShared(classDef, criteriaObject));
        }
예제 #19
0
 public void PopulateObjectAsync <T>(string criteria, Action afterPopulation = null) where T : class, IBusinessObject, new()
 {
     this.PopulateObjectAsync <T>(CriteriaParser.CreateCriteria(criteria), afterPopulation);
 }
예제 #20
0
 public void Populate <T>(string criteria) where T : class, IBusinessObject, new()
 {
     this.Populate <T>(CriteriaParser.CreateCriteria(criteria));
 }
        /// <summary>
        /// Loads a business object of type T, using the SelectQuery given. It's important to make sure that T (meaning the ClassDef set up for T)
        /// has the properties defined in the fields of the select query.
        /// This method allows you to define a custom query to load a business object
        /// </summary>
        /// <typeparam name="T">The type of object to load. This must be a class that implements IBusinessObject and has a parameterless constructor</typeparam>
        /// <param name="criteriaString">The select query to use to load from the data source</param>
        /// <returns>The business object that was found. If none was found, null is returned. If more than one is found an <see cref="HabaneroDeveloperException"/> error is throw</returns>
        public T GetBusinessObject <T>(string criteriaString) where T : class, IBusinessObject, new()
        {
            Criteria criteriaObject = CriteriaParser.CreateCriteria(criteriaString);

            return(GetBusinessObjectShared <T>(criteriaObject));
        }