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();
        }
Пример #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();
        }
Пример #3
0
        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());
        }