public void MockItemWithVariables()
        {
            var variable      = new QueryVariable("Name", "Name1", "Name2", "Name3");
            var nameAttribute = new MockAttributeDefinition("Name");

            var query = new Query(new MockAssetType());

            query.Variables.Add(variable);
            var filter = new FilterTerm(nameAttribute);

            filter.Operate(FilterTerm.Operator.Equal, variable);
            query.Filter = filter;
            query.Selection.Add(new MockAttributeDefinition("Reference"));
            var builder = new QueryURLBuilder(query);

            Assert.AreEqual("Data/Mock?sel=Mock.Reference&where=Mock.Name=$Name&with=$Name=Name1,Name2,Name3", builder.ToString());
        }
예제 #2
0
        private void CreateMultipleScopeFilter(FilterBuilder builder)
        {
            builder.Relation("Scope", projects);

            var metaModel = builder.Instance.ApiClient.MetaModel;
            var epicType  = metaModel.GetAssetType("Epic");

            var scopeAttribute = epicType.GetAttributeDefinition("Scope");
            var scopeTerm      = new FilterTerm(scopeAttribute);

            scopeTerm.Operate(FilterTerm.Operator.Equal, projects.Select(x => x.ToString()).Cast <object>().ToArray());
            var superAndUpAttribute = epicType.GetAttributeDefinition("SuperAndUp").Filter(scopeTerm);

            var superAndUpTerm = builder.Root.Term(superAndUpAttribute);

            superAndUpTerm.NotExists();
        }
        public void DatePrecisionInVariable()
        {
            var date = new DateTime(2012, 6, 21, 15, 17, 53, 504);
            var changeDateAttribute = new MockAttributeDefinition("ChangeDate");

            var query    = new Query(new MockAssetType());
            var variable = new QueryVariable("requestedDate", date);

            query.Selection.Add(new MockAttributeDefinition("Name"));
            query.Variables.Add(variable);
            var filter = new FilterTerm(changeDateAttribute);

            filter.Operate(FilterTerm.Operator.Equal, variable);
            var builder = new QueryURLBuilder(query);

            query.Filter = filter;

            var queryString = builder.ToString();

            Assert.AreEqual("Data/Mock?sel=Mock.Name&where=Mock.ChangeDate=$requestedDate&with=$requestedDate=2012-06-21T15%3a17%3a53.504", queryString);
        }
        public void QueryTrackedEpicsForMultipleProjectsUsingVariables()
        {
            var metaConnector = new V1APIConnector(VersionOneUrl + "meta.v1/", "admin", "admin");
            var metaModel     = new MetaModel(metaConnector);

            var scopeVariable = new QueryVariable("Scope", "Scope:2176");

            var epicType = metaModel.GetAssetType("Epic");

            var query = new Query(epicType);

            var notClosedEpicAttribute = epicType.GetAttributeDefinition("AssetState");

            var notClosedEpicTerm = new FilterTerm(notClosedEpicAttribute);

            notClosedEpicTerm.NotEqual("Closed");

            var scopeAttribute = epicType.GetAttributeDefinition("Scope");
            var scopeTerm      = new FilterTerm(scopeAttribute);

            scopeTerm.Operate(FilterTerm.Operator.Equal, scopeVariable);

            var superAndUpAttribute = epicType.GetAttributeDefinition("SuperAndUp").Filter(scopeTerm);
            var superAndUpTerm      = new FilterTerm(superAndUpAttribute);

            superAndUpTerm.NotExists();

            var filter = new AndFilterTerm(notClosedEpicTerm, scopeTerm, superAndUpTerm);

            query.Filter = filter;
            query.Variables.Add(scopeVariable);
            var builder = new QueryURLBuilder(query);
            var result  = builder.ToString();

            Assert.AreEqual("Data/Epic?sel=&where=(Epic.AssetState!='Closed';Epic.Scope=$Scope;-Epic.SuperAndUp[Scope=$Scope])&with=$Scope=Scope%3A2176", result);
        }
예제 #5
0
        //public void Execute(
        public FreeQuery(
            string assetTypeName,
            object[] select = null,
            IEnumerable <Tuple <string, object, FilterTerm.Operator> > where = null,
            Action <IEnumerable <AssetClassBase> > success = null,
            Action <Exception> error = null
            )
        {
            if (success == null)
            {
                throw new ArgumentNullException("success");
            }

            if (error == null)
            {
                throw new ArgumentNullException("error");
            }

            try
            {
                var query = new Query(MetaModelProvider.Meta.GetAssetType(assetTypeName));

                var attributes = new List <IAttributeDefinition>();
                if (select != null)
                {
                    attributes.AddRange(
                        select.Select(
                            m => MetaModelProvider.Meta.GetAttributeDefinition(assetTypeName
                                                                               + "." + m.ToString())));
                }
                query.Selection.AddRange(attributes);

                if (where != null)
                {
                    var andTerms = new List <FilterTerm>();

                    foreach (var tuple in where)
                    {
                        var attribute = MetaModelProvider.Meta.GetAttributeDefinition(assetTypeName
                                                                                      + "." + tuple.Item1);
                        var item = tuple.Item2;
                        var term = new FilterTerm(attribute);
                        term.Operate(tuple.Item3, item);
                        andTerms.Add(term);
                    }

                    var andTerm = new AndFilterTerm(andTerms.ToArray());
                    query.Filter = andTerm;
                }

                var list = new List <AssetClassBase>();

                var result = ServicesProvider.Services.Retrieve(query);

                if (result.Assets.Count == 0)
                {
                    success(list);
                }

                list.AddRange(result.Assets.Select(a => new AssetClassBase(a, assetTypeName)));

                success(list);
            } catch (Exception exception)
            {
                error(exception);
            }

            //var task = new TaskFactory<List<AssetClassBase>>().StartNew(() =>
            //    {
            //        var result = ServicesProvider.Services.Retrieve(query);

            //        if (result.Assets.Count == 0)
            //        {
            //            return list;
            //        }

            //        list.AddRange(
            //            result.Assets.Select(
            //                a => new AssetClass(a, assetTypeName)));

            //        return list;
            //    });
        }
예제 #6
0
        public FluentQuery Execute(Action <IEnumerable <AssetClassBase> > successCallback = null)
        {
            if (OnSuccess == null && successCallback == null)
            {
                throw new NullReferenceException("Must specify the OnSuccess callback before calling Execute or pass it directly to Execute as a parameter");
            }

            try
            {
                var attributes = new List <IAttributeDefinition>();

                if (SelectFields.Count > 0)
                {
                    attributes.AddRange(
                        SelectFields.Select(
                            m => MetaModelProvider.Meta.GetAttributeDefinition(AssetTypeName
                                                                               + "." + m.ToString())));
                }
                RawQuery.Selection.AddRange(attributes);

                if (WhereCriteria.Count > 0)
                {
                    var andTerms = new List <FilterTerm>();

                    foreach (var tuple in WhereCriteria)
                    {
                        var attribute = MetaModelProvider.Meta.GetAttributeDefinition(AssetTypeName
                                                                                      + "." + tuple.Item1);
                        var item = tuple.Item2;
                        var term = new FilterTerm(attribute);
                        term.Operate(tuple.Item3, item);
                        andTerms.Add(term);
                    }

                    var andTerm = new AndFilterTerm(andTerms.ToArray());
                    RawQuery.Filter = andTerm;
                }

                var list = new List <AssetClassBase>();

                var result = ServicesProvider.Services.Retrieve(RawQuery);

                if (result.Assets.Count == 0)
                {
                    OnSuccess(list);
                }

                list.AddRange(result.Assets.Select(a => new AssetClassBase(a, AssetTypeName)));

                if (list.Count == 0 && OnEmptyResults != null)
                {
                    OnEmptyResults();
                }

                if (successCallback != null)
                {
                    successCallback(list);
                }
                else
                {
                    OnSuccess(list);
                }
            }
            catch (Exception exception)
            {
                if (OnError != null)
                {
                    OnError(exception);
                }
                else
                {
                    throw;
                }
            }

            return(this);
        }
		public void QueryTrackedEpicsForMultipleProjectsUsingVariables() {
			var metaConnector = new V1APIConnector(VersionOneUrl + "meta.v1/", "admin", "admin");
			var metaModel = new MetaModel(metaConnector);

			var scopeVariable = new QueryVariable("Scope", "Scope:2176");

			var epicType = metaModel.GetAssetType("Epic");

			var query = new Query(epicType);

			var notClosedEpicAttribute = epicType.GetAttributeDefinition("AssetState");

			var notClosedEpicTerm = new FilterTerm(notClosedEpicAttribute);
			notClosedEpicTerm.NotEqual("Closed");

			var scopeAttribute = epicType.GetAttributeDefinition("Scope");
			var scopeTerm = new FilterTerm(scopeAttribute);
			scopeTerm.Operate(FilterTerm.Operator.Equal, scopeVariable);

			var superAndUpAttribute = epicType.GetAttributeDefinition("SuperAndUp").Filter(scopeTerm);
			var superAndUpTerm = new FilterTerm(superAndUpAttribute);
			superAndUpTerm.NotExists();
			
			var filter = new AndFilterTerm(notClosedEpicTerm, scopeTerm, superAndUpTerm);
			query.Filter = filter;
			query.Variables.Add(scopeVariable);
			var builder = new QueryURLBuilder(query);
			var result = builder.ToString();
			Assert.AreEqual("Data/Epic?sel=&where=(Epic.AssetState!='Closed';Epic.Scope=$Scope;-Epic.SuperAndUp[Scope=$Scope])&with=$Scope=Scope%3A2176", result);
		}
		public void DatePrecisionInVariable() {
			var date = new DateTime(2012, 6, 21, 15, 17, 53, 504);
			var changeDateAttribute = new MockAttributeDefinition("ChangeDate");

			var query = new Query(new MockAssetType());
			var variable = new QueryVariable("requestedDate", date);
			query.Selection.Add(new MockAttributeDefinition("Name"));
			query.Variables.Add(variable);
			var filter = new FilterTerm(changeDateAttribute);
			filter.Operate(FilterTerm.Operator.Equal, variable);
			var builder = new QueryURLBuilder(query);
			query.Filter = filter;

			var queryString = builder.ToString();
			Assert.AreEqual("Data/Mock?sel=Mock.Name&where=Mock.ChangeDate=$requestedDate&with=$requestedDate=2012-06-21T15%3a17%3a53.504", queryString);
		}
		public void MockItemWithVariables() {
			var variable = new QueryVariable("Name", "Name1", "Name2", "Name3");
			var nameAttribute = new MockAttributeDefinition("Name");

			var query = new Query(new MockAssetType());
			query.Variables.Add(variable);
			var filter = new FilterTerm(nameAttribute);
			filter.Operate(FilterTerm.Operator.Equal, variable);
			query.Filter = filter;
			query.Selection.Add(new MockAttributeDefinition("Reference"));
			var builder = new QueryURLBuilder(query);
			Assert.AreEqual("Data/Mock?sel=Mock.Reference&where=Mock.Name=$Name&with=$Name=Name1,Name2,Name3", builder.ToString());
		}