private void CreateSingleScopeFilter(FilterBuilder builder) { var project = projects.First(); var metaModel = builder.Instance.ApiClient.MetaModel; var epicType = metaModel.GetAssetType("Epic"); var scopeType = metaModel.GetAssetType("Scope"); var notClosedScopeAttribute = scopeType.GetAttributeDefinition("AssetState"); var notClosedScopeTerm = new FilterTerm(notClosedScopeAttribute); notClosedScopeTerm.NotEqual("Closed"); var scopeAttribute = epicType.GetAttributeDefinition("Scope.ParentMeAndUp").Filter(notClosedScopeTerm); var scopeTerm = builder.Root.Term(scopeAttribute); scopeTerm.Equal(project.ToString()); var superAndUpAttribute = epicType.GetAttributeDefinition("SuperAndUp"); superAndUpAttribute = superAndUpAttribute.Filter(scopeTerm); var superAndUpTerm = builder.Root.Term(superAndUpAttribute); superAndUpTerm.NotExists(); }
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 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()); }
public List<ProjectWrapper> GetProjectList() { var projectType = services.Meta.GetAssetType(ProjectTypeToken); var scopeQuery = new Query(projectType, projectType.GetAttributeDefinition("Parent")); var stateTerm = new FilterTerm(projectType.GetAttributeDefinition("AssetState")); stateTerm.NotEqual(AssetState.Closed); scopeQuery.Filter = stateTerm; var nameDef = projectType.GetAttributeDefinition("Name"); scopeQuery.Selection.Add(nameDef); scopeQuery.OrderBy.MajorSort(projectType.DefaultOrderBy, OrderBy.Order.Ascending); var result = services.Retrieve(scopeQuery); var roots = new List<ProjectWrapper>(result.Assets.Count); foreach (Asset asset in result.Assets) { roots.AddRange(GetProjectWrapperList(asset, nameDef, 0)); } return roots; }
private int GetCustomFields(string attributeName, string attributeType) { IAssetType assetType = _metaAPI.GetAssetType(_InternalAssetType); Query query = new Query(assetType); int assetCount = 0; IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition(attributeName); query.Selection.Add(nameAttribute); //Test for LongText Fields because they will not pull from the API with an Empty String Filter switch (attributeType) { case "LongText": break; default: //Filter to ensure that we have a value. FilterTerm filter = new FilterTerm(nameAttribute); filter.NotEqual(String.Empty); query.Filter = filter; break; } QueryResult result = _dataAPI.Retrieve(query); string SQL = BuildCustomFieldInsertStatement(); foreach (Asset asset in result.Assets) { using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = _sqlConn; cmd.CommandText = SQL; cmd.CommandType = System.Data.CommandType.Text; cmd.Parameters.AddWithValue("@AssetOID", asset.Oid.ToString()); cmd.Parameters.AddWithValue("@FieldName", attributeName); cmd.Parameters.AddWithValue("@FieldType", attributeType); if (attributeType == "Relation") { cmd.Parameters.AddWithValue("@FieldValue", GetSingleListValue(asset.GetAttribute(nameAttribute))); } else { //Remove NULL Records from LongText Fields Object fieldValue = GetScalerValue(asset.GetAttribute(nameAttribute)); if (fieldValue.Equals(DBNull.Value)) { continue; } else { cmd.Parameters.AddWithValue("@FieldValue", fieldValue); } } cmd.ExecuteNonQuery(); assetCount++; } } return assetCount; }
private int GetCustomFields(string attributeName, string attributeType) { IAssetType assetType = _metaAPI.GetAssetType(_InternalAssetType); Query query = new Query(assetType); IAttributeDefinition nameAttribute = assetType.GetAttributeDefinition(attributeName); query.Selection.Add(nameAttribute); //Filter to ensure that we have a value. FilterTerm filter = new FilterTerm(nameAttribute); filter.NotEqual(String.Empty); query.Filter = filter; QueryResult result = _dataAPI.Retrieve(query); string SQL = BuildCustomFieldInsertStatement(); foreach (Asset asset in result.Assets) { using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = _sqlConn; cmd.CommandText = SQL; cmd.CommandType = System.Data.CommandType.Text; cmd.Parameters.AddWithValue("@AssetOID", asset.Oid.ToString()); cmd.Parameters.AddWithValue("@FieldName", attributeName); cmd.Parameters.AddWithValue("@FieldType", attributeType); if (attributeType == "Relation") cmd.Parameters.AddWithValue("@FieldValue", GetSingleListValue(asset.GetAttribute(nameAttribute))); else cmd.Parameters.AddWithValue("@FieldValue", GetScalerValue(asset.GetAttribute(nameAttribute))); cmd.ExecuteNonQuery(); } } return result.Assets.Count; }
//TODO refactor private Asset GetRootProject() { var scopeType = metaModel.GetAssetType(Entity.ScopeProperty); var scopeName = scopeType.GetAttributeDefinition(Entity.NameProperty); var scopeState = scopeType.GetAttributeDefinition(AssetStateAttribute); var scopeStateTerm = new FilterTerm(scopeState); scopeStateTerm.NotEqual(AssetState.Closed); var scopeQuery = new Query(scopeType, scopeType.GetAttributeDefinition(Entity.ParentProperty)) { Filter = scopeStateTerm }; scopeQuery.Selection.Add(scopeName); var nameQueryResult = services.Retrieve(scopeQuery); return nameQueryResult.Assets.FirstOrDefault(); }
// TODO use filters private Asset GetProjectById(string projectId) { var scopeType = metaModel.GetAssetType(Entity.ScopeProperty); var scopeState = scopeType.GetAttributeDefinition(AssetStateAttribute); var scopeStateTerm = new FilterTerm(scopeState); scopeStateTerm.NotEqual(AssetState.Closed); var query = new Query(Oid.FromToken(projectId, metaModel)) {Filter = scopeStateTerm}; var result = services.Retrieve(query); return result.Assets.FirstOrDefault(); }
//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 IList<Project> GetProjectTree() { try { var scopeQuery = new Query(ProjectType, ProjectType.GetAttributeDefinition("Parent")); var stateTerm = new FilterTerm(ProjectType.GetAttributeDefinition("AssetState")); stateTerm.NotEqual(AssetState.Closed); scopeQuery.Filter = stateTerm; AddSelection(scopeQuery, Entity.ProjectType); var result = connector.Services.Retrieve(scopeQuery); var roots = result.Assets.Select(asset => WorkitemFactory.CreateProject(asset, null)).ToList(); return roots; } catch(WebException ex) { connector.IsConnected = false; Logger.Error("Can't get projects list.", ex); return null; } catch(Exception ex) { Logger.Error("Can't get projects list.", ex); return null; } }
private IFilterTerm GetScopeFilter(IAssetType assetType) { var terms = new List<FilterTerm>(4); var term = new FilterTerm(assetType.GetAttributeDefinition("Scope.AssetState")); term.NotEqual(AssetState.Closed); terms.Add(term); term = new FilterTerm(assetType.GetAttributeDefinition("Scope.ParentMeAndUp")); term.Equal(CurrentProjectId); terms.Add(term); term = new FilterTerm(assetType.GetAttributeDefinition("Timebox.State.Code")); term.Equal("ACTV"); terms.Add(term); term = new FilterTerm(assetType.GetAttributeDefinition("AssetState")); term.NotEqual(AssetState.Closed); terms.Add(term); return new AndFilterTerm(terms.Cast<IFilterTerm>().ToArray()); }