public void Complex1() { var termA = new FilterTerm(WorkitemParent); termA.Equal(Oid.FromToken("Theme:5", Meta)); termA.Equal(Oid.FromToken("Theme:6", Meta)); var termB = new FilterTerm(WorkitemScope); termB.Equal(Oid.FromToken("Scope:0", Meta)); var termC = new FilterTerm(WorkitemParent); termC.NotEqual(Oid.FromToken("Theme:7", Meta)); termC.NotEqual(Oid.FromToken("Theme:8", Meta)); var termD = new FilterTerm(WorkitemScope); termD.NotEqual(Oid.FromToken("Scope:1", Meta)); var and1 = new AndFilterTerm(termA, termB); var and2 = new AndFilterTerm(termC, termD); var o = new OrFilterTerm(and1, and2); Assert.AreEqual( "((Workitem.Parent='Theme%3a5','Theme%3a6';Workitem.Scope='Scope%3a0')|(Workitem.Parent!='Theme%3a7','Theme%3a8';Workitem.Scope!='Scope%3a1'))", o.Token); }
protected Object GetSingleListValue(VersionOne.SDK.APIClient.Attribute attribute) { if (attribute.Value != null && attribute.Value.ToString() != "NULL") { IAssetType assetType = _metaAPI.GetAssetType("List"); Query query = new Query(assetType); IAttributeDefinition assetIDAttribute = assetType.GetAttributeDefinition("ID"); query.Selection.Add(assetIDAttribute); IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name"); query.Selection.Add(nameAttribute); FilterTerm assetName = new FilterTerm(assetIDAttribute); assetName.Equal(attribute.Value.ToString()); query.Filter = assetName; QueryResult result = _dataAPI.Retrieve(query); return(result.Assets[0].GetAttribute(nameAttribute).Value.ToString()); } else { return(DBNull.Value); } }
public GroupFilterTerm GetFilter(IAssetType type) { var terms = new List <IFilterTerm>(); foreach (var value in values) { var term = new FilterTerm(type.GetAttributeDefinition(Name)); switch (value.Action) { case FilterValuesActions.Equal: term.Equal(value.Value); break; case FilterValuesActions.NotEqual: term.NotEqual(value.Value); break; case FilterValuesActions.Greater: term.Greater(value.Value); break; default: throw new NotSupportedException(); } terms.Add(term); } return(Operation == FilterActions.And ? (GroupFilterTerm) new AndFilterTerm(terms.ToArray()) : new OrFilterTerm(terms.ToArray())); }
/// <summary> /// Get collection of reference fields for asset type. /// </summary> /// <param name="assetTypeToken">AssetType token</param> public List <string> GetReferenceFieldList(string assetTypeToken) { var attributeDefinitionAssetType = services.Meta.GetAssetType("AttributeDefinition"); var nameAttributeDef = attributeDefinitionAssetType.GetAttributeDefinition("Name"); var assetNameAttributeDef = attributeDefinitionAssetType.GetAttributeDefinition("Asset.AssetTypesMeAndDown.Name"); var isCustomAttributeDef = attributeDefinitionAssetType.GetAttributeDefinition("IsCustom"); var attributeTypeAttributeDef = attributeDefinitionAssetType.GetAttributeDefinition("AttributeType"); var assetTypeTerm = new FilterTerm(assetNameAttributeDef); assetTypeTerm.Equal(assetTypeToken); var isCustomTerm = new FilterTerm(isCustomAttributeDef); isCustomTerm.Equal("true"); var attributeTypeTerm = new FilterTerm(attributeTypeAttributeDef); attributeTypeTerm.Equal("Text"); var result = GetFieldList(new AndFilterTerm(assetTypeTerm, isCustomTerm, attributeTypeTerm), new List <IAttributeDefinition> { nameAttributeDef }); var fieldList = new List <string>(); result.ForEach(x => fieldList.Add(x.GetAttribute(nameAttributeDef).Value.ToString())); return(fieldList); }
/// <summary> /// Returns an Entity of Type T with the given ID or null if the ID is invalid /// </summary> /// <typeparam name="T">Entity Type to retrieve</typeparam> /// <param name="displayID">DisplayID of the Entity to retrieve</param> /// <returns>an instance of an Entity of Type T or null if ID is invalid</returns> public T GetByDisplayID <T>(string displayID) where T : ProjectAsset { var assetTypeToken = GetAssetTypeToken(typeof(T)); var projectAssetType = instance.MetaModel.GetAssetType(assetTypeToken); var idDef = projectAssetType.GetAttributeDefinition("Number"); var query = new Query(projectAssetType); var idTerm = new FilterTerm(idDef); idTerm.Equal(displayID); query.Filter = idTerm; var result = instance.Services.Retrieve(query); if (result.Assets.Count == 0) { return(null); } var asset = result.Assets[0]; // need to validate here to make sure the DisplayID is for the proper type // This is a problem with Epics and Stories. return(instance.wrapperManager.Create <T>(asset.Oid.Token, true)); }
/// <summary> /// Attempts to match owners of the workitem in the external system to users in VersionOne. /// </summary> /// <param name="ownerNames">Comma seperated list of usernames.</param> /// <returns>Oids of matching users in VersionOne.</returns> //TODO refactor private IEnumerable <Oid> GetOwnerOids(string ownerNames) { var result = new List <Oid>(); if (!string.IsNullOrEmpty(ownerNames)) { var memberType = services.Meta.GetAssetType("Member"); var ownerQuery = new Query(memberType); var terms = new List <IFilterTerm>(); foreach (var ownerName in ownerNames.Split(',')) { var term = new FilterTerm(memberType.GetAttributeDefinition("Username")); term.Equal(ownerName); terms.Add(term); } ownerQuery.Filter = new AndFilterTerm(terms.ToArray()); var matches = services.Retrieve(ownerQuery).Assets; result.AddRange(matches.Select(owner => owner.Oid)); } return(result.ToArray()); }
// TODO it is known that primary workitem statuses do not have to be unique in VersionOne. In this case, the following method fails. private IDictionary <string, string> QueryPropertyValues(string propertyName) { var res = new Dictionary <string, string>(); var assetType = services.Meta.GetAssetType(propertyName); var valueDef = assetType.GetAttributeDefinition("Name"); IAttributeDefinition inactiveDef; var query = new Query(assetType); query.Selection.Add(valueDef); if (assetType.TryGetAttributeDefinition("Inactive", out inactiveDef)) { var filter = new FilterTerm(inactiveDef); filter.Equal("False"); query.Filter = filter; } query.OrderBy.MajorSort(assetType.DefaultOrderBy, OrderBy.Order.Ascending); foreach (var asset in services.Retrieve(query).Assets) { var name = asset.GetAttribute(valueDef).Value.ToString(); res.Add(name, asset.Oid.ToString()); } return(res); }
public List <Asset> FilterListOfAssets() { var assetType = _context.MetaModel.GetAssetType("Task"); var query = new Query(assetType); var nameAttribute = assetType.GetAttributeDefinition("Name"); var todoAttribute = assetType.GetAttributeDefinition("ToDo"); query.Selection.Add(nameAttribute); query.Selection.Add(todoAttribute); var toDoTerm = new FilterTerm(todoAttribute); toDoTerm.Equal(0); query.Filter = toDoTerm; var result = _context.Services.Retrieve(query); result.Assets.ForEach(taskAsset => LogResult(taskAsset.Oid.Token, GetValue(taskAsset.GetAttribute(nameAttribute).Value), GetValue(taskAsset.GetAttribute(todoAttribute).Value.ToString()))); /***** OUTPUT EXAMPLE ***** * Task:1153 * Code Review * 0 * * Task:1154 * Design Component * 0 ... ******************/ return(result.Assets); }
private PropertyValues QueryPropertyValues(string propertyName) { var res = new PropertyValues(); var assetType = connector.MetaModel.GetAssetType(propertyName); var nameDef = assetType.GetAttributeDefinition(Entity.NameProperty); IAttributeDefinition inactiveDef; var query = new Query(assetType); query.Selection.Add(nameDef); if (assetType.TryGetAttributeDefinition("Inactive", out inactiveDef)) { var filter = new FilterTerm(inactiveDef); filter.Equal("False"); query.Filter = filter; } query.OrderBy.MajorSort(assetType.DefaultOrderBy, OrderBy.Order.Ascending); res.Add(new ValueId()); foreach (var asset in connector.Services.Retrieve(query).Assets) { var name = asset.GetAttribute(nameDef).Value as string; res.Add(new ValueId(asset.Oid, name)); } return(res); }
public void HistorySingleAssetTest() { IMetaModel metaModel = new MetaModel(new VersionOneAPIConnector(_metaUrl)); IServices services = new Services( metaModel, new VersionOneAPIConnector(_dataUrl).WithVersionOneUsernameAndPassword(_username, _password)); var memberType = metaModel.GetAssetType("Member"); var idAttribute = memberType.GetAttributeDefinition("ID"); var changeDateAttribute = memberType.GetAttributeDefinition("ChangeDate"); var emailAttribute = memberType.GetAttributeDefinition("Email"); // the boolean parameter specifies we want the historical data var query = new Query(memberType, true); query.Selection.Add(changeDateAttribute); query.Selection.Add(emailAttribute); var idTerm = new FilterTerm(idAttribute); idTerm.Equal("Member:20"); query.Filter = idTerm; var result = services.Retrieve(query); Assert.AreNotEqual(0, result.Assets.Count); }
protected string GetCustomListTypeAssetOIDFromV1(string AssetType, string AssetValue) { IAssetType assetType = _metaAPI.GetAssetType(AssetType); Query query = new Query(assetType); IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name"); FilterTerm term = new FilterTerm(nameAttribute); term.Equal(AssetValue); query.Filter = term; QueryResult result; try { result = _dataAPI.Retrieve(query); } catch { return(null); } if (result.TotalAvaliable > 0) { return(result.Assets[0].Oid.Token.ToString()); } else { return(null); } }
private Query GetPropertyValuesQuery(string propertyName, out IAttributeDefinition nameDef) { IAssetType assetType; try { assetType = services.Meta.GetAssetType(propertyName); } catch (MetaException ex) { throw new AssetTypeException(string.Format("{0} is unknown asset type.", propertyName), ex); } nameDef = assetType.GetAttributeDefinition("Name"); IAttributeDefinition inactiveDef; var query = new Query(assetType); query.Selection.Add(nameDef); if (assetType.TryGetAttributeDefinition("Inactive", out inactiveDef)) { var filter = new FilterTerm(inactiveDef); filter.Equal("False"); query.Filter = filter; } query.OrderBy.MajorSort(assetType.DefaultOrderBy, OrderBy.Order.Ascending); return(query); }
protected string CheckForDuplicateIterationByName(string ScheduleOID, string Name) { IAssetType assetType = _metaAPI.GetAssetType("Timebox"); Query query = new Query(assetType); IAttributeDefinition scheduleAttribute = assetType.GetAttributeDefinition("Schedule"); query.Selection.Add(scheduleAttribute); FilterTerm scheduleFilter = new FilterTerm(scheduleAttribute); scheduleFilter.Equal(GetNewAssetOIDFromDB(ScheduleOID)); IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name"); query.Selection.Add(nameAttribute); FilterTerm nameFilter = new FilterTerm(nameAttribute); nameFilter.Equal(Name); query.Filter = new AndFilterTerm(scheduleFilter, nameFilter); QueryResult result = _dataAPI.Retrieve(query); if (result.TotalAvaliable > 0) { return(result.Assets[0].Oid.Token.ToString()); } else { return(null); } }
protected string CheckForDuplicateInV1(string AssetType, string AttributeName, string AttributeValue) { //if (AssetType.StartsWith("Custom_")) //{ // return null; //} IAssetType assetType = _metaAPI.GetAssetType(AssetType); //_logger.Info("CheckForDuplicateInV1: assetType is {0} amd value is {1} ", AssetType, AttributeValue); Query query = new Query(assetType); IAttributeDefinition valueAttribute = assetType.GetAttributeDefinition(AttributeName); query.Selection.Add(valueAttribute); FilterTerm idFilter = new FilterTerm(valueAttribute); idFilter.Equal(AttributeValue); query.Filter = idFilter; QueryResult result = _dataAPI.Retrieve(query); if (result.TotalAvaliable > 0) { return(result.Assets[0].Oid.Token.ToString()); } else { return(null); } }
public List <Asset> HistorySingleAsset() { var memberType = _context.MetaModel.GetAssetType("Member"); var query = new Query(memberType, true); var idAttribute = memberType.GetAttributeDefinition("ID"); var changeDateAttribute = memberType.GetAttributeDefinition("ChangeDate"); var emailAttribute = memberType.GetAttributeDefinition("Email"); query.Selection.Add(changeDateAttribute); query.Selection.Add(emailAttribute); var idTerm = new FilterTerm(idAttribute); idTerm.Equal("Member:20"); query.Filter = idTerm; var result = _context.Services.Retrieve(query); result.Assets.ForEach(asset => LogResult(asset.Oid.Token, GetValue(asset.GetAttribute(changeDateAttribute).Value), GetValue(asset.GetAttribute(emailAttribute).Value))); /***** OUTPUT EXAMPLE ***** * Member:1000:105 * 4/2/2007 1:22:03 PM * [email protected] * * Member:1000:101 * 3/29/2007 4:10:29 PM * [email protected] ******************/ return(result.Assets); }
internal static string GetAssetIDFromName(string AssetType, string Name, IMetaModel MetaAPI, IServices DataAPI) { IAssetType assetType = MetaAPI.GetAssetType(AssetType); Query query = new Query(assetType); IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name"); FilterTerm term = new FilterTerm(nameAttribute); term.Equal(Name); query.Filter = term; QueryResult result; try { result = DataAPI.Retrieve(query); } catch { return(String.Empty); } if (result.TotalAvaliable > 0) { return(result.Assets[0].Oid.Token); } else { return(String.Empty); } }
public void Filter() { var query = new Query(new MockAssetType()); var term = new FilterTerm(new MockAttributeDefinition("Name")); term.Equal("Jerry's Story"); query.Filter = term; var testMe = new QueryURLBuilder(query); const string expectedUrl = "Data/Mock?sel=&where=Mock.Name='Jerry''s+Story'"; Assert.AreEqual(expectedUrl, Uri.UnescapeDataString(testMe.ToString())); }
private IEnumerable<string> GetCustomFields(string assetTypeName, FieldType fieldType) { var attrType = services.Meta.GetAssetType(AttributeDefinitionType); var assetType = services.Meta.GetAssetType(assetTypeName); var isCustomAttributeDef = attrType.GetAttributeDefinition("IsCustom"); var nameAttrDef = attrType.GetAttributeDefinition(Entity.NameProperty); var termType = new FilterTerm(attrType.GetAttributeDefinition("Asset.AssetTypesMeAndDown.Name")); termType.Equal(assetTypeName); IAttributeDefinition inactiveDef; FilterTerm termState = null; if (assetType.TryGetAttributeDefinition("Inactive", out inactiveDef)) { termState = new FilterTerm(inactiveDef); termState.Equal("False"); } var fieldTypeName = string.Empty; var attributeTypeName = string.Empty; switch (fieldType) { case FieldType.List: fieldTypeName = "OneToManyRelationDefinition"; attributeTypeName = "Relation"; break; case FieldType.Numeric: fieldTypeName = "SimpleAttributeDefinition"; attributeTypeName = "Numeric"; break; case FieldType.Text: fieldTypeName = "SimpleAttributeDefinition"; attributeTypeName = "Text"; break; } var assetTypeTerm = new FilterTerm(attrType.GetAttributeDefinition(AssetTypeAttribute)); assetTypeTerm.Equal(fieldTypeName); var attributeTypeTerm = new FilterTerm(attrType.GetAttributeDefinition("AttributeType")); attributeTypeTerm.Equal(attributeTypeName); var isCustomTerm = new FilterTerm(isCustomAttributeDef); isCustomTerm.Equal("true"); var result = GetFieldList(new AndFilterTerm(termState, termType, assetTypeTerm, isCustomTerm, attributeTypeTerm), new List<IAttributeDefinition> { nameAttrDef }); var fieldList = new List<string>(); result.ForEach(x => fieldList.Add(x.GetAttribute(nameAttrDef).Value.ToString())); return fieldList; }
public void MultipleAttributes() { var query = new Query(new MockAssetType()); query.Selection.Add(new MockAttributeDefinition("DefaultRole")); query.Selection.Add(new MockAttributeDefinition("Name")); query.Selection.Add(new MockAttributeDefinition("Nickname")); var term = new FilterTerm(new MockAttributeDefinition("Name")); term.Equal("Jerry"); query.Filter = term; var testMe = new QueryURLBuilder(query); Assert.AreEqual("Data/Mock?sel=Mock.DefaultRole,Mock.Name,Mock.Nickname&where=Mock.Name='Jerry'", testMe.ToString()); }
public User CreateUserToDeactivate(string username) { User user = CreateTestUser(username); user.Deactivate = true; IAssetType member = model.GetAssetType("Member"); Query query = new Query(member); FilterTerm term = new FilterTerm(member.GetAttributeDefinition("Username")); term.Equal(username); query.Filter = term; QueryResult result = services.Retrieve(query); user.V1MemberAsset = result.Assets[0]; return(user); }
private void Execute() { var connector = V1Connector .WithInstanceUrl(instanceUrl) .WithUserAgentHeader("Examples", "0.1") .WithUsernameAndPassword(username, password) .Build(); var services = new Services(connector); var storyType = services.Meta.GetAssetType("Story"); var query = new Query(storyType); var nameAttribute = storyType.GetAttributeDefinition("Name"); var idAttribute = storyType.GetAttributeDefinition("ID"); var taggedWithAttribute = storyType.GetAttributeDefinition("TaggedWith"); query.Selection.Add(nameAttribute); query.Selection.Add(taggedWithAttribute); var term = new FilterTerm(idAttribute); term.Equal("Story:1004"); query.Filter = term; var result = services.Retrieve(query); foreach (var story in result.Assets) { WriteLine(story.Oid.Token); WriteLine(story.GetAttribute(nameAttribute).Value); WriteLine(string.Join(",", story.GetAttribute(taggedWithAttribute).Values.Cast <string>())); // Itentional duplicate calls here, server will handle de-dedupe on query story.AddAttributeValue(taggedWithAttribute, "FIRST TAG"); story.AddAttributeValue(taggedWithAttribute, "FIRST TAG"); story.AddAttributeValue(taggedWithAttribute, "SECOND TAG"); story.RemoveAttributeValue(taggedWithAttribute, "SECOND TAG"); services.Save(story); story.AcceptChanges(); WriteLine(string.Join(",", story.GetAttribute(taggedWithAttribute).Values.Cast <string>())); } }
private QueryResult FindExistingChangeset(int revision) { var q = new Query(ChangeSetType); q.Selection.Add(ChangeSetType.GetAttributeDefinition("Reference")); q.Selection.Add(ChangeSetType.GetAttributeDefinition("Links.URL")); var referenceTerm = new FilterTerm(ChangeSetType.GetAttributeDefinition("Reference")); referenceTerm.Equal(revision); IFilterTerm term = referenceTerm; q.Filter = term; q.Paging = new Paging(0, 1); return(V1Connection.Data.Retrieve(q)); }
public void QueryStoryByMoment() { var storyAsset = CreateDisposableStory(InitialStoryName, "Scope:0"); storyAsset = GetAssetsByOid(storyAsset.Oid.Momentless, attributesToQuery)[0]; var moment = storyAsset.GetAttribute(momentDef).Value; Assert.AreEqual(storyAsset.GetAttribute(nameDef).Value, InitialStoryName); storyAsset.SetAttributeValue(nameDef, ChangedStoryName); services.Save(storyAsset); storyAsset = GetAssetsByOid(storyAsset.Oid.Momentless, attributesToQuery)[0]; Assert.AreEqual(storyAsset.GetAttribute(nameDef).Value, ChangedStoryName); var filter = new FilterTerm(momentDef); filter.Equal(moment); storyAsset = GetAssetsByOid(storyAsset.Oid.Momentless, attributesToQuery, filter)[0]; Assert.AreEqual(storyAsset.GetAttribute(nameDef).Value, ChangedStoryName, "Data query should return latest workitem snapshot ignoring Moment filter"); }
public void Asset_with_valid_Guid_Attribute() { var payloadGuid = Guid.Parse("98771fb4-71b8-42ec-be8b-69414daa020e"); var subject = new Services(Meta, DataConnector); var publicationType = Meta.GetAssetType("Publication"); var payloadAttribute = publicationType.GetAttributeDefinition("Payload"); var query = new Query(publicationType); query.Selection.Add(payloadAttribute); var filter = new FilterTerm(payloadAttribute); filter.Equal(payloadGuid); query.Filter = filter; var result = subject.Retrieve(query); var payloadFromResult = (Guid)result.Assets[0].GetAttribute(payloadAttribute).Value; Assert.AreEqual(payloadGuid, payloadFromResult); }
protected string GetV1IDCustomFieldName(string InternalAssetTypeName) { if (String.IsNullOrEmpty(_config.V1Configurations.CustomV1IDField) == false) { string customFieldName = String.Empty; IAssetType assetType = _metaAPI.GetAssetType("AttributeDefinition"); Query query = new Query(assetType); IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition("Name"); query.Selection.Add(nameAttribute); IAttributeDefinition isCustomAttribute = assetType.GetAttributeDefinition("IsCustom"); query.Selection.Add(isCustomAttribute); IAttributeDefinition assetNameAttribute = assetType.GetAttributeDefinition("Asset.Name"); query.Selection.Add(assetNameAttribute); FilterTerm assetName = new FilterTerm(assetNameAttribute); assetName.Equal(InternalAssetTypeName); //assetName.Equal("PrimaryWorkitem"); FilterTerm isCustom = new FilterTerm(isCustomAttribute); isCustom.Equal("true"); query.Filter = new AndFilterTerm(assetName, isCustom); QueryResult result = _dataAPI.Retrieve(query); foreach (Asset asset in result.Assets) { string attributeValue = asset.GetAttribute(nameAttribute).Value.ToString(); if (attributeValue.StartsWith(_config.V1Configurations.CustomV1IDField) == true) { customFieldName = attributeValue; break; } } return(customFieldName); } else { return(null); } }
public void Execute() { //Set up a connection to VersionOne using simple authentication V1Connector connector = V1Connector .WithInstanceUrl(instanceUrl) .WithUserAgentHeader("Examples", "0.1") .WithAccessToken(accessToken) .Build(); IServices services = new Services(connector); //Determine which VersionOne Asset you would like to look for IAssetType storyType = services.Meta.GetAssetType("Story"); //Prepare this query object. I am saying "Hey, I want to query a story Query query = new Query(storyType); //Define the attributes that you would like to access from that Story IAttributeDefinition nameAttribute = storyType.GetAttributeDefinition("Name"); IAttributeDefinition numberAttribute = storyType.GetAttributeDefinition("Number"); //Add them to the query object since we need to get these specific attributes query.Selection.Add(nameAttribute); query.Selection.Add(numberAttribute); //Since we need to get a specific Story or Stories that meet some criteria, we set up a filter FilterTerm term = new FilterTerm(numberAttribute); term.Equal("S-01001"); query.Filter = term; // We do the actually query on the server here and get our results to be processed soon after QueryResult result = services.Retrieve(query); foreach (Asset story in result.Assets) { //This first line grabs and prints the system identifier OID of the current Story Console.WriteLine(story.Oid.Token); Console.WriteLine(story.GetAttribute(nameAttribute).Value); Console.WriteLine(story.GetAttribute(numberAttribute).Value); } }
public void QueryTrackedEpicsByProject() { var metaConnector = new V1APIConnector(VersionOneUrl + "meta.v1/", "admin", "admin"); var metaModel = new MetaModel(metaConnector); var epicType = metaModel.GetAssetType("Epic"); var scopeType = metaModel.GetAssetType("Scope"); var query = new Query(epicType); const string scopeId = "Scope:1025"; var notClosedScopeAttribute = scopeType.GetAttributeDefinition("AssetState"); var notClosedEpicAttribute = epicType.GetAttributeDefinition("AssetState"); var notClosedEpicTerm = new FilterTerm(notClosedEpicAttribute); notClosedEpicTerm.NotEqual("Closed"); var notClosedScopeTerm = new FilterTerm(notClosedScopeAttribute); notClosedScopeTerm.NotEqual("Closed"); var scopeAttribute = epicType.GetAttributeDefinition("Scope.ParentMeAndUp"); scopeAttribute = scopeAttribute.Filter(notClosedScopeTerm); var scopeTerm = new FilterTerm(scopeAttribute); scopeTerm.Equal(scopeId); var superAndUpAttribute = epicType.GetAttributeDefinition("SuperAndUp"); superAndUpAttribute = superAndUpAttribute.Filter(scopeTerm); var superAndUpTerm = new FilterTerm(superAndUpAttribute); superAndUpTerm.NotExists(); var filter = new AndFilterTerm(scopeTerm, notClosedEpicTerm, superAndUpTerm); query.Filter = filter; var builder = new QueryURLBuilder(query); var result = builder.ToString(); Assert.AreEqual("Data/Epic?sel=&where=(Epic.Scope.ParentMeAndUp[AssetState!='Closed']='Scope%3a1025';Epic.AssetState!='Closed';-Epic.SuperAndUp[Scope.ParentMeAndUp[AssetState!='Closed']='Scope:1025'])", result); }
private List <RequiredFieldsDto> GetRequiredFields(string assetType) { var fields = new List <RequiredFieldsDto>(); var attributeDefinitionAssetType = metaModel.GetAssetType("AttributeDefinition"); var nameAttributeDef = attributeDefinitionAssetType.GetAttributeDefinition("Name"); var assetNameAttributeDef = attributeDefinitionAssetType.GetAttributeDefinition("Asset.AssetTypesMeAndDown.Name"); var taskType = metaModel.GetAssetType(assetType); var query = new Query(attributeDefinitionAssetType); query.Selection.Add(nameAttributeDef); var assetTypeTerm = new FilterTerm(assetNameAttributeDef); assetTypeTerm.Equal(assetType); query.Filter = new AndFilterTerm(new IFilterTerm[] { assetTypeTerm }); QueryResult result; try { result = services.Retrieve(query); } catch (Exception ex) { logger.Error("Cannot get meta data for " + assetType, ex); return(null); } foreach (var asset in result.Assets) { try { var name = asset.GetAttribute(nameAttributeDef).Value.ToString(); if (IsRequiredField(taskType, name)) { var reqFieldData = new RequiredFieldsDto(name, taskType.GetAttributeDefinition(name).DisplayName); fields.Add(reqFieldData); } } catch (Exception ex) { logger.Error("Cannot get meta data for " + assetType, ex); } } return(fields); }
private T GetListValueByName <T>(IAssetType listType, string value) where T : Entity { var nameDef = listType.GetAttributeDefinition("Name"); var query = new Query(listType); var nameTerm = new FilterTerm(nameDef); nameTerm.Equal(value); query.Filter = nameTerm; query.OrderBy.MajorSort(nameDef, OrderBy.Order.Ascending); var result = Services.Retrieve(query); if (result.Assets.Count == 0) { throw new ArgumentOutOfRangeException("value", string.Format("There is no {0} value with name: {1}", listType.Token, value)); } return(CreateWrapper <T>(new AssetID(result.Assets[0].Oid.Token), false)); }
/// <summary> /// Get Source values from VersionOne server /// </summary> public List <string> GetSourceList() { var assetType = services.Meta.GetAssetType("StorySource"); var nameDef = assetType.GetAttributeDefinition("Name"); IAttributeDefinition inactiveDef; var query = new Query(assetType); query.Selection.Add(nameDef); if (assetType.TryGetAttributeDefinition("Inactive", out inactiveDef)) { var filter = new FilterTerm(inactiveDef); filter.Equal("False"); query.Filter = filter; } query.OrderBy.MajorSort(assetType.DefaultOrderBy, OrderBy.Order.Ascending); return(services.Retrieve(query).Assets.Select(asset => asset.GetAttribute(nameDef).Value.ToString()).ToList()); }
public void QueryStoryHistoryByMoment() { var storyAsset = CreateDisposableStory(InitialStoryName, "Scope:0"); storyAsset = GetAssetsByOid(storyAsset.Oid.Momentless, attributesToQuery)[0]; var moment = storyAsset.GetAttribute(momentDef).Value; Assert.AreEqual(storyAsset.GetAttribute(nameDef).Value, InitialStoryName); storyAsset.SetAttributeValue(nameDef, ChangedStoryName); services.Save(storyAsset); storyAsset = GetAssetsByOid(storyAsset.Oid.Momentless, attributesToQuery)[0]; Assert.AreEqual(storyAsset.GetAttribute(nameDef).Value, ChangedStoryName); var filter = new FilterTerm(momentDef); filter.Equal(moment); storyAsset = GetAssetsByOid(storyAsset.Oid.Momentless, attributesToQuery, filter, true)[0]; Assert.AreEqual(storyAsset.GetAttribute(nameDef).Value, InitialStoryName, "Historical query should behave with respect to provided Moment"); }
/// <summary> /// Use the Filter property of the Query object to filter the results that are returned. /// This query will retrieve only Story assets with a "ToDo" of zero. /// </summary> public void FilterListOfAssetsTest() { IMetaModel metaModel = new MetaModel(new VersionOneAPIConnector(_metaUrl)); IServices services = new Services( metaModel, new VersionOneAPIConnector(_dataUrl).WithVersionOneUsernameAndPassword(_username, _password)); var assetType = metaModel.GetAssetType("Task"); var query = new Query(assetType); var nameAttribute = assetType.GetAttributeDefinition("Name"); var todoAttribute = assetType.GetAttributeDefinition("ToDo"); query.Selection.Add(nameAttribute); query.Selection.Add(todoAttribute); var toDoTerm = new FilterTerm(todoAttribute); toDoTerm.Equal(0); query.Filter = toDoTerm; var result = services.Retrieve(query); result.Assets.ForEach(asset => Assert.AreEqual(0, asset.GetAttribute(todoAttribute).Value)); }
public List<Asset> HistorySingleAsset() { var memberType = _context.MetaModel.GetAssetType("Member"); var query = new Query(memberType, true); var idAttribute = memberType.GetAttributeDefinition("ID"); var changeDateAttribute = memberType.GetAttributeDefinition("ChangeDate"); var emailAttribute = memberType.GetAttributeDefinition("Email"); query.Selection.Add(changeDateAttribute); query.Selection.Add(emailAttribute); var idTerm = new FilterTerm(idAttribute); idTerm.Equal("Member:20"); query.Filter = idTerm; var result = _context.Services.Retrieve(query); result.Assets.ForEach(asset => LogResult(asset.Oid.Token, GetValue(asset.GetAttribute(changeDateAttribute).Value), GetValue(asset.GetAttribute(emailAttribute).Value))); /***** OUTPUT EXAMPLE ***** Member:1000:105 4/2/2007 1:22:03 PM [email protected] Member:1000:101 3/29/2007 4:10:29 PM [email protected] ******************/ return result.Assets; }
public List<Asset> FilterListOfAssets() { var assetType = _context.MetaModel.GetAssetType("Task"); var query = new Query(assetType); var nameAttribute = assetType.GetAttributeDefinition("Name"); var todoAttribute = assetType.GetAttributeDefinition("ToDo"); query.Selection.Add(nameAttribute); query.Selection.Add(todoAttribute); var toDoTerm = new FilterTerm(todoAttribute); toDoTerm.Equal(0); query.Filter = toDoTerm; var result = _context.Services.Retrieve(query); result.Assets.ForEach(taskAsset => LogResult(taskAsset.Oid.Token, GetValue(taskAsset.GetAttribute(nameAttribute).Value), GetValue(taskAsset.GetAttribute(todoAttribute).Value.ToString()))); /***** OUTPUT EXAMPLE ***** Task:1153 Code Review 0 Task:1154 Design Component 0 ... ******************/ return result.Assets; }