public GroupFilterTerm And(params IFilterTerm[] terms) { var term = new AndFilterTerm(terms); this.terms.Add(term); return(term); }
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; }