Beispiel #1
0
        public GroupFilterTerm And(params IFilterTerm[] terms)
        {
            var term = new AndFilterTerm(terms);

            this.terms.Add(term);
            return(term);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            var dataConnector = new VersionOneAPIConnector(BASE_URL + "/rest-1.v1/").WithOAuth2(SecretsFile, CredsFile);
            var metaConnector = new VersionOneAPIConnector(BASE_URL + "/meta.v1/");

            var metaModel = new MetaModel(metaConnector);
            var services = new Services(metaModel, dataConnector);

            var scopeType = metaModel.GetAssetType("Member");
            var nameAttr = scopeType.GetAttributeDefinition("Name");
            var descAttr = scopeType.GetAttributeDefinition("Nickname");
            var worksItemsNameAttr = scopeType.GetAttributeDefinition("OwnedWorkitems.Name");

            var query = new Query(scopeType);
            var whereAdmin = new FilterTerm(descAttr);
            whereAdmin.Equal("admin");
            var whereNotTheAdmin = new FilterTerm(nameAttr);
            whereNotTheAdmin.NotEqual("theAdmin");
            var andFilter = new AndFilterTerm(whereAdmin, whereNotTheAdmin);
            query.Filter = andFilter;
            query.Selection.AddRange(new[] { nameAttr, descAttr, worksItemsNameAttr });
            var result = services.Retrieve(query);

            foreach (var asset in result.Assets)
            {
                Console.WriteLine("Name: " + asset.GetAttribute(nameAttr).Value);
                Console.WriteLine("Description: " + asset.GetAttribute(descAttr).Value);
                var workItems = asset.GetAttribute(worksItemsNameAttr).ValuesList;
                Console.WriteLine("Workitems count: " + workItems.Count);
                foreach (var workitem in workItems)
                {
                        Console.WriteLine("Workitem: " + workitem);
                }
            }
            Console.ReadLine();
        }
        //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;
            //    });
        }
 public GroupFilterTerm And(params IFilterTerm[] terms) {
     var term = new AndFilterTerm(terms);
     this.terms.Add(term);
     return term;
 }
        //TODO refactor
        public Asset GetProjectByName(string projectName)
        {
            var scopeType = metaModel.GetAssetType(Entity.ScopeProperty);
            var scopeName = scopeType.GetAttributeDefinition(Entity.NameProperty);

            var scopeNameTerm = new FilterTerm(scopeName);
            scopeNameTerm.Equal(projectName);

            var scopeState = scopeType.GetAttributeDefinition(AssetStateAttribute);
            var scopeStateTerm = new FilterTerm(scopeState);
            scopeStateTerm.NotEqual(AssetState.Closed);

            var query = new Query(scopeType);
            query.Selection.Add(scopeName);
            var terms  = new AndFilterTerm(scopeNameTerm, scopeStateTerm);

            var result = queryBuilder.Query(Entity.ScopeProperty, terms);

            return result.FirstOrDefault();
        }
        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;
        }