Example #1
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            Parent = RedmineUtility.LoadObject(node[ParentProperty.XmlNodeName], Context.Issues.Lookup);

            Project  = RedmineUtility.LoadNamedObject(node[ProjectProperty.XmlNodeName], Context.Projects.Lookup);
            Tracker  = RedmineUtility.LoadNamedObject(node[TrackerProperty.XmlNodeName], Context.Trackers.Lookup);
            Status   = RedmineUtility.LoadNamedObject(node[StatusProperty.XmlNodeName], Context.IssueStatuses.Lookup);
            Priority = RedmineUtility.LoadNamedObject(node[PriorityProperty.XmlNodeName], Context.IssuePriorities.Lookup);

            Author     = RedmineUtility.LoadNamedObject(node[AuthorProperty.XmlNodeName], Context.Users.Lookup);
            AssignedTo = RedmineUtility.LoadNamedObject(node[AssignedToProperty.XmlNodeName], Context.Users.Lookup);

            Category     = RedmineUtility.LoadNamedObject(node[CategoryProperty.XmlNodeName], Context.IssueCategories.Lookup);
            FixedVersion = RedmineUtility.LoadNamedObject(node[FixedVersionProperty.XmlNodeName], Context.ProjectVersions.Lookup);

            Subject     = RedmineUtility.LoadString(node[SubjectProperty.XmlNodeName]);
            Description = RedmineUtility.LoadString(node[DescriptionProperty.XmlNodeName]);

            StartDate = RedmineUtility.LoadDate(node[StartDateProperty.XmlNodeName]);
            DueDate   = RedmineUtility.LoadDate(node[DueDateProperty.XmlNodeName]);

            DoneRatio      = RedmineUtility.LoadDouble(node[DoneRatioProperty.XmlNodeName]);
            EstimatedHours = RedmineUtility.LoadDouble(node[EstimatedHoursProperty.XmlNodeName]);

            _customFields.Update(node[CustomFieldsProperty.XmlNodeName], Context.CustomFields.Lookup);

            CreatedOn = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
            UpdatedOn = RedmineUtility.LoadDateForSure(node[UpdatedOnProperty.XmlNodeName]);
        }
Example #2
0
        internal void EmitChanged(XmlElement root)
        {
            var xml = root.OwnerDocument;

            foreach (var v in _original.Values)
            {
                if (!_values.ContainsKey(v.Field.Id))
                {
                    var e    = xml.CreateElement("custom_field");
                    var attr = xml.CreateAttribute("id");
                    attr.Value = XmlConvert.ToString(v.Field.Id);
                    e.Attributes.Append(attr);
                    root.AppendChild(e);
                }
            }
            foreach (var v in _values.Values)
            {
                CustomFieldValue original;
                if (_original.TryGetValue(v.Field.Id, out original) && original.Value == v.Value)
                {
                    continue;
                }
                var e    = xml.CreateElement("custom_field");
                var attr = xml.CreateAttribute("id");
                attr.Value = XmlConvert.ToString(v.Field.Id);
                e.Attributes.Append(attr);
                var ev = xml.CreateElement("value");
                RedmineUtility.EmitString(ev, v.Value);
                e.AppendChild(ev);
                root.AppendChild(e);
            }
        }
Example #3
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            ProjectId = RedmineUtility.LoadInt(node[ProjectIdProperty.XmlNodeName]);
            IsPublic  = RedmineUtility.LoadBoolean(node[IsPublicProperty.XmlNodeName]);
        }
Example #4
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            Project    = RedmineUtility.LoadNamedObject(node[ProjectProperty.XmlNodeName], Context.Projects.Lookup);
            AssignedTo = RedmineUtility.LoadNamedObject(node[AssignedToProperty.XmlNodeName], Context.Users.Lookup);
        }
Example #5
0
        internal Issue(RedmineServiceContext context, XmlNode node)
            : base(context, node)
        {
            _parent = RedmineUtility.LoadObject(node[ParentProperty.XmlNodeName], context.Issues.Lookup);

            _project  = RedmineUtility.LoadNamedObject(node[ProjectProperty.XmlNodeName], context.Projects.Lookup);
            _tracker  = RedmineUtility.LoadNamedObject(node[TrackerProperty.XmlNodeName], context.Trackers.Lookup);
            _status   = RedmineUtility.LoadNamedObject(node[StatusProperty.XmlNodeName], context.IssueStatuses.Lookup);
            _priority = RedmineUtility.LoadNamedObject(node[PriorityProperty.XmlNodeName], context.IssuePriorities.Lookup);

            _author     = RedmineUtility.LoadNamedObject(node[AuthorProperty.XmlNodeName], context.Users.Lookup);
            _assignedTo = RedmineUtility.LoadNamedObject(node[AssignedToProperty.XmlNodeName], context.Users.Lookup);

            _category     = RedmineUtility.LoadNamedObject(node[CategoryProperty.XmlNodeName], context.IssueCategories.Lookup);
            _fixedVersion = RedmineUtility.LoadNamedObject(node[FixedVersionProperty.XmlNodeName], context.ProjectVersions.Lookup);

            _subject     = RedmineUtility.LoadString(node[SubjectProperty.XmlNodeName]);
            _description = RedmineUtility.LoadString(node[DescriptionProperty.XmlNodeName]);

            _startDate = RedmineUtility.LoadDate(node[StartDateProperty.XmlNodeName]);
            _dueDate   = RedmineUtility.LoadDate(node[DueDateProperty.XmlNodeName]);

            _doneRatio      = RedmineUtility.LoadDouble(node[DoneRatioProperty.XmlNodeName]);
            _estimatedHours = RedmineUtility.LoadDouble(node[EstimatedHoursProperty.XmlNodeName]);

            _customFields = RedmineUtility.LoadCustomFields(node[CustomFieldsProperty.XmlNodeName], context.CustomFields.Lookup);

            _createdOn = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
            _updatedOn = RedmineUtility.LoadDateForSure(node[UpdatedOnProperty.XmlNodeName]);
        }
Example #6
0
 internal IssueRelation(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _issue   = RedmineUtility.LoadObject(node[IssueProperty.XmlNodeName], context.Issues.Lookup);
     _issueTo = RedmineUtility.LoadObject(node[IssueToProperty.XmlNodeName], context.Issues.Lookup);
     _type    = RedmineUtility.LoadIssueRelationType(node[TypeProperty.XmlNodeName]);
 }
Example #7
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            Name      = RedmineUtility.LoadString(node[NameProperty.XmlNodeName]);
            IsDefault = RedmineUtility.LoadBoolean(node[IsDefaultProperty.XmlNodeName]);
            IsClosed  = RedmineUtility.LoadBoolean(node[IsClosedProperty.XmlNodeName]);
        }
Example #8
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            Issue   = RedmineUtility.LoadObject(node[IssueProperty.XmlNodeName], Context.Issues.Lookup);
            IssueTo = RedmineUtility.LoadObject(node[IssueToProperty.XmlNodeName], Context.Issues.Lookup);
            Type    = RedmineUtility.LoadIssueRelationType(node[TypeProperty.XmlNodeName]);
        }
Example #9
0
        protected RedmineObject(RedmineServiceContext context, XmlNode node)
        {
            Verify.Argument.IsNotNull(context, nameof(context));
            Verify.Argument.IsNotNull(node, nameof(node));

            _context = context;
            _id      = RedmineUtility.LoadInt(node[IdProperty.XmlNodeName]);
        }
Example #10
0
 internal Project(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _identifier  = RedmineUtility.LoadString(node[IdentifierProperty.XmlNodeName]);
     _description = RedmineUtility.LoadString(node[DescriptionProperty.XmlNodeName]);
     _parent      = RedmineUtility.LoadNamedObject(node[ParentProperty.XmlNodeName], context.Projects.Lookup);
     _createdOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
     _updatedOn   = RedmineUtility.LoadDateForSure(node[UpdatedOnProperty.XmlNodeName]);
 }
Example #11
0
 internal News(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _project     = RedmineUtility.LoadNamedObject(node[ProjectProperty.XmlNodeName], context.Projects.Lookup);
     _author      = RedmineUtility.LoadNamedObject(node[AuthorProperty.XmlNodeName], context.Users.Lookup);
     _title       = RedmineUtility.LoadString(node[TitleProperty.XmlNodeName]);
     _description = RedmineUtility.LoadString(node[SummaryProperty.XmlNodeName]);
     _summary     = RedmineUtility.LoadString(node[SummaryProperty.XmlNodeName]);
     _createdOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
 }
Example #12
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            Identifier  = RedmineUtility.LoadString(node[IdentifierProperty.XmlNodeName]);
            Description = RedmineUtility.LoadString(node[DescriptionProperty.XmlNodeName]);
            Parent      = RedmineUtility.LoadNamedObject(node[ParentProperty.XmlNodeName], Context.Projects.Lookup);
            CreatedOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
            UpdatedOn   = RedmineUtility.LoadDateForSure(node[UpdatedOnProperty.XmlNodeName]);
        }
Example #13
0
 internal ProjectVersion(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _project     = RedmineUtility.LoadNamedObject(node[ProjectProperty.XmlNodeName], context.Projects.Lookup);
     _description = RedmineUtility.LoadString(node[DescriptionProperty.XmlNodeName]);
     _status      = RedmineUtility.LoadVersionStatus(node[StatusProperty.XmlNodeName]);
     _dueDate     = RedmineUtility.LoadDate(node[DueDateProperty.XmlNodeName]);
     _createdOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
     _updatedOn   = RedmineUtility.LoadDateForSure(node[UpdatedOnProperty.XmlNodeName]);
 }
Example #14
0
 internal Attachment(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _fileName    = RedmineUtility.LoadString(node[FileNameProperty.XmlNodeName]);
     _fileSize    = RedmineUtility.LoadInt(node[FileSizeProperty.XmlNodeName]);
     _contentType = RedmineUtility.LoadString(node[ContentTypeProperty.XmlNodeName]);
     _description = RedmineUtility.LoadString(node[DescriptionProperty.XmlNodeName]);
     _contentUrl  = RedmineUtility.LoadString(node[ContentUrlProperty.XmlNodeName]);
     _author      = RedmineUtility.LoadNamedObject(node[AuthorProperty.XmlNodeName], context.Users.Lookup);
     _createdOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
 }
Example #15
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            Project     = RedmineUtility.LoadNamedObject(node[ProjectProperty.XmlNodeName], Context.Projects.Lookup);
            Author      = RedmineUtility.LoadNamedObject(node[AuthorProperty.XmlNodeName], Context.Users.Lookup);
            Title       = RedmineUtility.LoadString(node[TitleProperty.XmlNodeName]);
            Description = RedmineUtility.LoadString(node[SummaryProperty.XmlNodeName]);
            Summary     = RedmineUtility.LoadString(node[SummaryProperty.XmlNodeName]);
            CreatedOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
        }
Example #16
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            Project     = RedmineUtility.LoadNamedObject(node[ProjectProperty.XmlNodeName], Context.Projects.Lookup);
            Description = RedmineUtility.LoadString(node[DescriptionProperty.XmlNodeName]);
            Status      = RedmineUtility.LoadVersionStatus(node[StatusProperty.XmlNodeName]);
            DueDate     = RedmineUtility.LoadDate(node[DueDateProperty.XmlNodeName]);
            CreatedOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
            UpdatedOn   = RedmineUtility.LoadDateForSure(node[UpdatedOnProperty.XmlNodeName]);
        }
Example #17
0
        internal override void Update(XmlNode node)
        {
            base.Update(node);

            FileName    = RedmineUtility.LoadString(node[FileNameProperty.XmlNodeName]);
            FileSize    = RedmineUtility.LoadInt(node[FileSizeProperty.XmlNodeName]);
            ContentType = RedmineUtility.LoadString(node[ContentTypeProperty.XmlNodeName]);
            Description = RedmineUtility.LoadString(node[DescriptionProperty.XmlNodeName]);
            ContentUrl  = RedmineUtility.LoadString(node[ContentUrlProperty.XmlNodeName]);
            Author      = RedmineUtility.LoadNamedObject(node[AuthorProperty.XmlNodeName], Context.Users.Lookup);
            CreatedOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
        }
Example #18
0
        internal override void Update(XmlNode node)
        {
            Verify.Argument.IsNotNull(node, nameof(node));

            Login       = RedmineUtility.LoadString(node[LoginProperty.XmlNodeName]);
            FirstName   = RedmineUtility.LoadString(node[FirstNameProperty.XmlNodeName]);
            LastName    = RedmineUtility.LoadString(node[LastNameProperty.XmlNodeName]);
            Name        = FirstName + " " + LastName;
            Mail        = RedmineUtility.LoadString(node[MailProperty.XmlNodeName]);
            CreatedOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
            LastLoginOn = RedmineUtility.LoadDate(node[LastLoginOnProperty.XmlNodeName]);
            LoadMemberships(node["memberships"]);
        }
Example #19
0
 internal User(RedmineServiceContext context, XmlNode node)
     : this(context, RedmineUtility.LoadInt(node[IdProperty.XmlNodeName]),
            RedmineUtility.LoadString(node[FirstNameProperty.XmlNodeName]) + " " +
            RedmineUtility.LoadString(node[LastNameProperty.XmlNodeName]))
 {
     _login       = RedmineUtility.LoadString(node[LoginProperty.XmlNodeName]);
     _firstName   = RedmineUtility.LoadString(node[FirstNameProperty.XmlNodeName]);
     _lastName    = RedmineUtility.LoadString(node[LastNameProperty.XmlNodeName]);
     _mail        = RedmineUtility.LoadString(node[MailProperty.XmlNodeName]);
     _createdOn   = RedmineUtility.LoadDateForSure(node[CreatedOnProperty.XmlNodeName]);
     _lastLoginOn = RedmineUtility.LoadDate(node[LastLoginOnProperty.XmlNodeName]);
     LoadMemberships(node["memberships"]);
 }
Example #20
0
        internal CustomFields(XmlNode node, Func <int, string, CustomField> initializer)
        {
            Verify.Argument.IsNotNull(initializer, nameof(initializer));

            _values = new Dictionary <int, CustomFieldValue>();
            if (node != null)
            {
                foreach (XmlNode childNode in node.ChildNodes)
                {
                    var field = RedmineUtility.LoadNamedObject(childNode, initializer);
                    var value = RedmineUtility.LoadString(childNode["value"]);
                    _values.Add(field.Id, new CustomFieldValue(field, value));
                }
            }
        }
Example #21
0
        private void LoadMemberships(XmlNode node)
        {
            var res = _memberships;

            if (node != null)
            {
                if (node.ChildNodes.Count != 0)
                {
                    foreach (XmlNode childNode in node.ChildNodes)
                    {
                        var project   = RedmineUtility.LoadNamedObject(childNode["project"], Context.Projects.Lookup);
                        var id        = project.Id;
                        var roles     = new List <UserRole>();
                        var rolesNode = childNode["roles"];
                        if (rolesNode != null)
                        {
                            foreach (XmlNode roleNode in rolesNode.ChildNodes)
                            {
                                var role = RedmineUtility.LoadNamedObject(roleNode, Context.UserRoles.Lookup);
                                roles.Add(role);
                            }
                        }
                        UserMembership membership;
                        if (res.TryGetValue(id, out membership))
                        {
                            membership = new UserMembership(this, project, roles);
                            res[id]    = membership;
                        }
                        else
                        {
                            membership = new UserMembership(this, project, roles);
                            res.Add(id, membership);
                        }
                    }
                }
                else
                {
                    _memberships.Clear();
                }
            }
            else
            {
                _memberships.Clear();
            }
        }
Example #22
0
 internal void Update(XmlNode node, Func <int, string, CustomField> initializer)
 {
     if (node == null || node.ChildNodes.Count == 0)
     {
         _values.Clear();
     }
     else
     {
         var hs = Count != 0 ? new HashSet <int>(_values.Keys) : null;
         foreach (XmlNode childNode in node.ChildNodes)
         {
             var field = RedmineUtility.LoadNamedObject(childNode, initializer);
             var value = RedmineUtility.LoadString(childNode["value"]);
             CustomFieldValue cfv;
             if (_values.TryGetValue(field.Id, out cfv))
             {
                 cfv.Value = value;
                 hs.Remove(field.Id);
             }
             else
             {
                 cfv = new CustomFieldValue(field, value);
                 _values.Add(field.Id, cfv);
                 var handler = CustomFieldAdded;
                 if (handler != null)
                 {
                     handler(this, new CustomFieldEventArgs(field));
                 }
             }
         }
         if (hs != null)
         {
             var handler2 = CustomFieldRemoved;
             foreach (var id in hs)
             {
                 var cfv = _values[id];
                 _values.Remove(id);
                 if (handler2 != null)
                 {
                     handler2(this, new CustomFieldEventArgs(cfv.Field));
                 }
             }
         }
     }
 }
        internal T Lookup(XmlNode node)
        {
            Verify.Argument.IsNotNull(node, nameof(node));

            var id = RedmineUtility.LoadInt(node[RedmineObject.IdProperty.XmlNodeName]);
            T   obj;

            lock (SyncRoot)
            {
                if (!_cache.TryGetValue(id, out obj))
                {
                    obj = Create(node);
                    _cache.Add(id, obj);
                }
                else
                {
                    obj.Update(node);
                }
            }
            return(obj);
        }
Example #24
0
 internal override void Update(XmlNode node)
 {
     base.Update(node);
     Name = RedmineUtility.LoadString(node[NameProperty.XmlNodeName]);
 }
Example #25
0
 internal Query(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _projectId = RedmineUtility.LoadInt(node[ProjectIdProperty.XmlNodeName]);
     _isPublic  = RedmineUtility.LoadBoolean(node[IsPublicProperty.XmlNodeName]);
 }
Example #26
0
 internal IssueCategory(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _project    = RedmineUtility.LoadNamedObject(node[ProjectProperty.XmlNodeName], context.Projects.Lookup);
     _assignedTo = RedmineUtility.LoadNamedObject(node[AssignedToProperty.XmlNodeName], context.Users.Lookup);
 }
Example #27
0
 internal IssueStatus(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _isDefault = RedmineUtility.LoadBoolean(node[IsDefaultProperty.XmlNodeName]);
     _isClosed  = RedmineUtility.LoadBoolean(node[IsClosedProperty.XmlNodeName]);
 }
Example #28
0
 protected NamedRedmineObject(RedmineServiceContext context, XmlNode node)
     : base(context, node)
 {
     _name = RedmineUtility.LoadString(node[NameProperty.XmlNodeName]);
 }