Esempio n. 1
0
        public CyclicLinkConflictDetails(ConflictDetailsProperties detailsProperties)
        {
            string sourceItemId, targetItemId, linkType, closure;

            if (detailsProperties.Properties.TryGetValue(
                    TFSCyclicLinkConflictType.ConflictDetailsKey_SourceWorkItemID, out sourceItemId) &&
                detailsProperties.Properties.TryGetValue(
                    TFSCyclicLinkConflictType.ConflictDetailsKey_TargetWorkItemID, out targetItemId) &&
                detailsProperties.Properties.TryGetValue(
                    TFSCyclicLinkConflictType.ConflictDetailsKey_LinkType, out linkType) &&
                detailsProperties.Properties.TryGetValue(
                    TFSCyclicLinkConflictType.ConflictDetailsKey_LinkClosure, out closure))
            {
                this.SourceWorkItemID      = sourceItemId;
                this.TargetWorkItemID      = targetItemId;
                this.LinkTypeReferenceName = linkType;

                GenericSerializer <List <LinkDescription> > serializer = new GenericSerializer <List <LinkDescription> >();

                if (string.IsNullOrEmpty(closure))
                {
                    this.LinkReferenceClosure = new List <LinkDescription>();
                }
                else
                {
                    this.LinkReferenceClosure = serializer.Deserialize(closure);
                }
            }
            else
            {
                throw new ArgumentException("detailsProperties do not contain all expected values for the conflict type");
            }
        }
Esempio n. 2
0
        public override string TranslateConflictDetailsToReadableDescription(string dtls)
        {
            try
            {
                ConflictDetailsProperties properties = ConflictDetailsProperties.Deserialize(dtls);
                CyclicLinkConflictDetails details    = new CyclicLinkConflictDetails(properties);

                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.AppendLine(string.Format(TfsWITAdapterResources.CyclicalLinkError, details.SourceWorkItemID, details.TargetWorkItemID, details.LinkTypeReferenceName));
                if (details.LinkReferenceClosure.Count > 0)
                {
                    stringBuilder.AppendLine();
                    stringBuilder.AppendLine(TfsWITAdapterResources.LinkClosureHeader);
                    stringBuilder.AppendLine("SOURCE\tTARGET");
                    foreach (LinkDescription link in details.LinkReferenceClosure)
                    {
                        stringBuilder.AppendLine(string.Format("{0}\t{1}", link.SourceWorkItemId, link.TargetWorkItemId));
                    }
                }
                return(stringBuilder.ToString());
            }
            catch (Exception)
            {
                return(dtls);
            }
        }
Esempio n. 3
0
        public override string TranslateConflictDetailsToReadableDescription(string dtls)
        {
            if (string.IsNullOrEmpty(dtls))
            {
                throw new ArgumentNullException("dtls");
            }

            try
            {
                ConflictDetailsProperties properties = ConflictDetailsProperties.Deserialize(dtls);

                if (!string.IsNullOrEmpty(properties[ConflictDetailsKey_UserName]) &&
                    !string.IsNullOrEmpty(properties[ConflictDetailsKey_MissingPrivilegeName]))
                {
                    return(CreateOldStyleConflictDetails(
                               properties[ConflictDetailsKey_UserName], properties[ConflictDetailsKey_MissingPrivilegeName]));
                }
                else
                {
                    // no expected data, just return raw details string
                    return(dtls);
                }
            }
            catch (Exception)
            {
                // old style conflict details, just return raw details string
                return(dtls);
            }
        }
        internal InvalidFieldConflictTypeDetails(ConflictDetailsProperties detailsProperties)
        {
            string srcWitId, srcWitRev, srcFldRefName, tgtTP, tgtWit, tgtSvrUrl;

            if (detailsProperties.Properties.TryGetValue(
                    InvalidFieldConflictTypeConstants.ConflictDetailsKey_SourceWorkItemId, out srcWitId) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldConflictTypeConstants.ConflictDetailsKey_SourceWorkItemRevision, out srcWitRev) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldConflictTypeConstants.ConflictDetailsKey_SourceFieldRefName, out srcFldRefName) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldConflictTypeConstants.ConflictDetailsKey_TargetTeamProject, out tgtTP) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldConflictTypeConstants.ConflictDetailsKey_TargetWorkItemType, out tgtWit) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldConflictTypeConstants.ConflictDetailsKey_TargetTeamFoundationServerUrl,
                    out tgtSvrUrl))
            {
                SourceWorkItemID              = srcWitId;
                SourceWorkItemRevision        = srcWitRev;
                SourceFieldRefName            = srcFldRefName;
                TargetTeamProject             = tgtTP;
                TargetWorkItemType            = tgtWit;
                TargetTeamFoundationServerUrl = tgtSvrUrl;
            }
            else
            {
                throw new ArgumentException();
            }
        }
        public override string TranslateConflictDetailsToReadableDescription(string dtls)
        {
            if (string.IsNullOrEmpty(dtls))
            {
                throw new ArgumentNullException("dtls");
            }

            try
            {
                ConflictDetailsProperties properties = ConflictDetailsProperties.Deserialize(dtls);

                if (!string.IsNullOrEmpty(properties[FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_AttachmentName]))
                {
                    return(string.Format(TfsWITAdapterResources.ErrorAttachmentFileExceedsMaxSize,
                                         properties[FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_WorkItemId],
                                         properties[FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_AttachmentName],
                                         properties[FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_FileSize],
                                         properties[FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_MaxAttachmentSize]));
                }
                else
                {
                    // no expected data, just return raw details string
                    return(dtls);
                }
            }
            catch (Exception)
            {
                // old style conflict details, just return raw details string
                return(dtls);
            }
        }
Esempio n. 6
0
        private static string CreateConflictDetails(string userName, string missingPrivilegeName)
        {
            ConflictDetailsProperties detailsProperties = new ConflictDetailsProperties();

            detailsProperties.Properties.Add(ConflictDetailsKey_UserName, userName);
            detailsProperties.Properties.Add(ConflictDetailsKey_MissingPrivilegeName, missingPrivilegeName);
            return(detailsProperties.ToString());
        }
Esempio n. 7
0
        private void SetMinFileSize()
        {
            ConflictDetailsProperties properties = m_viewModel.MigrationConflict.ConflictDetailsProperties;
            string fileSize = properties[FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_FileSize];

            ObservableDataField fileSizeDataField = m_viewModel.ObservableDataFields.FirstOrDefault(x => string.Equals(x.FieldName, FileAttachmentOversizedConflictDropAttachmentAction.DATAKEY_MIN_FILE_SIZE_TO_DROP));

            Debug.Assert(fileSizeDataField != null, string.Format("No DataField with key {0}", FileAttachmentOversizedConflictDropAttachmentAction.DATAKEY_MIN_FILE_SIZE_TO_DROP));
            fileSizeDataField.FieldValue = fileSize;
        }
        private static string CreateConflictDetails(CQTextParser.RecordValidationResult rslt, IMigrationAction action)
        {
            ConflictDetailsProperties detailsProperties = new ConflictDetailsProperties();

            string recordType = UtilityMethods.ExtractRecordType(action);

            detailsProperties.Properties.Add(ConflictDetailsKey_RecordType, recordType);
            detailsProperties.Properties.Add(ConflictDetailsKey_FieldName, rslt.InvalidFieldName ?? string.Empty);
            detailsProperties.Properties.Add(ConflictDetailsKey_FieldValue, rslt.InvalidFieldValue ?? string.Empty);
            detailsProperties.Properties.Add(ConflictDetailsKey_Reason, rslt.ResultDescription.ToString());

            return(detailsProperties.ToString());
        }
Esempio n. 9
0
        public UpdateConfigConflictViewModelBase(ConflictRuleViewModel viewModel)
        {
            m_conflictRuleViewModel = viewModel;

            m_configuration        = m_conflictRuleViewModel.AppViewModel.Config;
            m_session              = m_configuration.SessionGroup.Sessions.Session.First(x => m_conflictRuleViewModel.RTConflict.ScopeId.Equals(new Guid(x.SessionUniqueId)));
            m_customSettings       = new SerializableCustomSettings(m_session);
            m_cachedCustomSettings = m_customSettings.Serialize();

            m_properties = m_conflictRuleViewModel.MigrationConflict.ConflictDetailsProperties;

            string str;

            HasProperties = !m_properties.TryGetValue(ConflictDetailsProperties.DefaultConflictDetailsKey, out str);
        }
        public override string TranslateConflictDetailsToReadableDescription(string dtls)
        {
            if (string.IsNullOrEmpty(dtls))
            {
                throw new ArgumentNullException("dtls");
            }

            try
            {
                ConflictDetailsProperties properties = ConflictDetailsProperties.Deserialize(dtls);

                if (!string.IsNullOrEmpty(properties[ConflictDetailsKey_RecordType]))
                {
                    string conflictDescription;
                    switch (properties[ConflictDetailsKey_Reason])
                    {
                    case "MissingValueInMandatoryField":
                        conflictDescription = "Source work item '{0}' is missing value in mandatory field '{1}'.";
                        break;

                    case "InvalidValueOfChoiceList":
                        conflictDescription = "Source work item '{0}' contains the invalid value of '{2}' in field '{1}'.";
                        break;

                    default:
                        conflictDescription = "Source work item '{0}' contains invalid field change on '{1}' in value '{2}' because '{3}'.";
                        break;
                    }
                    return(string.Format(conflictDescription,
                                         properties[ConflictDetailsKey_RecordType],
                                         properties[ConflictDetailsKey_FieldName],
                                         properties[ConflictDetailsKey_FieldValue],
                                         properties[ConflictDetailsKey_Reason]));
                }
                else
                {
                    // no expected data, just return raw details string
                    return(dtls);
                }
            }
            catch (Exception)
            {
                // old style conflict details, just return raw details string
                return(dtls);
            }
        }
Esempio n. 11
0
        internal WorkItemTypeNotExistConflictTypeDetails(ConflictDetailsProperties detailsProperties)
        {
            string tfsName, teamProjectName, workItemType;

            if (detailsProperties.Properties.TryGetValue(
                    WorkItemTypeNotExistConflictTypeConstants.ConflictDetailsKey_TeamFoundationServer, out tfsName) &&
                detailsProperties.Properties.TryGetValue(
                    WorkItemTypeNotExistConflictTypeConstants.ConflictDetailsKey_TeamProject, out teamProjectName) &&
                detailsProperties.Properties.TryGetValue(
                    WorkItemTypeNotExistConflictTypeConstants.ConflictDetailsKey_MissingWorkItemType, out workItemType))
            {
                Initialize(tfsName, teamProjectName, workItemType);
            }
            else
            {
                throw new ArgumentException("detailsProperties do not contain all expected values for the conflict type");
            }
        }
        /// <summary>
        /// Creates a conflict of this type
        /// </summary>
        /// <param name="migrationSourceId">The Unique Id of the migration source, for which the conflict is reported</param>
        /// <param name="ex">The permission exception that contains the details of the conflict</param>
        /// <returns>The created conflict instance</returns>
        public static MigrationConflict CreateConflict(
            Guid migrationSourceId,
            PermissionException ex)
        {
            ConflictDetailsProperties detailsProperty = new ConflictDetailsProperties();

            detailsProperty.Properties[InsufficientPermissionConflictTypeConstants.ConflictDetailsKey_UserAlias]
                = ex.UserAlias;
            detailsProperty.Properties[InsufficientPermissionConflictTypeConstants.ConflictDetailsKey_UserDomain]
                = ex.UserDomain;
            detailsProperty.Properties[InsufficientPermissionConflictTypeConstants.ConflictDetailsKey_PermissionGroupName]
                = ex.RequiredGroupAccountDisplayName;
            detailsProperty.Properties[Constants.ConflictDetailsKey_MigrationSourceId]
                = migrationSourceId.ToString();

            return(new MigrationConflict(new InsufficientPermissionConflictType(),
                                         MigrationConflict.Status.Unresolved,
                                         detailsProperty.ToString(),
                                         BasicPathScopeInterpreter.PathSeparator + migrationSourceId.ToString()));
        }
Esempio n. 13
0
        public override string TranslateConflictDetailsToReadableDescription(string dtls)
        {
            if (string.IsNullOrEmpty(dtls))
            {
                throw new ArgumentNullException("dtls");
            }

            WorkItemTypeNotExistConflictTypeDetails details = null;

            try
            {
                ConflictDetailsProperties properties = ConflictDetailsProperties.Deserialize(dtls);
                details = new WorkItemTypeNotExistConflictTypeDetails(properties);
            }
            catch (Exception)
            {
                try
                {
                    GenericSerializer <WorkItemTypeNotExistConflictTypeDetails> serializer =
                        new GenericSerializer <WorkItemTypeNotExistConflictTypeDetails>();
                    details = serializer.Deserialize(dtls);
                }
                catch (Exception)
                {
                    // do nothing, fall back to raw string later
                }
            }

            if (null != details)
            {
                return(string.Format(
                           "Work Item Type {0} is not defined for team project '{1}' on server '{2}'.",
                           details.MissingWorkItemType,
                           details.TeamProject,
                           details.TeamFoundationServer));
            }
            else
            {
                return(dtls);
            }
        }
        public override string TranslateConflictDetailsToReadableDescription(string dtls)
        {
            if (string.IsNullOrEmpty(dtls))
            {
                throw new ArgumentNullException("dtls");
            }

            InvalidFieldConflictTypeDetails details = null;

            try
            {
                ConflictDetailsProperties properties = ConflictDetailsProperties.Deserialize(dtls);
                details = new InvalidFieldConflictTypeDetails(properties);
            }
            catch (Exception)
            {
                try
                {
                    GenericSerializer <InvalidFieldConflictTypeDetails> serializer =
                        new GenericSerializer <InvalidFieldConflictTypeDetails>();

                    details = serializer.Deserialize(dtls);
                }
                catch (Exception)
                {
                    // do nothing, fall back to raw string later
                }
            }

            if (null != details)
            {
                return(string.Format(
                           "Source Item {0} (revision {1}) contains Field {2} that does not exist on Work Item Type '{3}' of the target project '{4}'.",
                           details.SourceWorkItemID, details.SourceWorkItemRevision,
                           details.SourceFieldRefName, details.TargetWorkItemType, details.TargetTeamProject));
            }
            else
            {
                return(dtls);
            }
        }
        internal InvalidFieldValueConflictTypeDetails(ConflictDetailsProperties detailsProperties)
        {
            string sourceItemId, sourceItemRevision, targetFieldRefName, targetFieldDispName, targetFieldOriginalValue,
                   targetFieldCurrentValue, targetTeamProjectName, targetWorkItemType, targetTFSUrl;

            if (detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_SourceWorkItemID, out sourceItemId) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_SourceWorkItemRevision, out sourceItemRevision) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_TargetTeamProject, out targetTeamProjectName) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_TargetWorkItemType, out targetWorkItemType) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_TargetFieldRefName, out targetFieldRefName) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_TargetFieldDispName, out targetFieldDispName) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_TargetFieldOriginalValue, out targetFieldOriginalValue) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_TargetFieldCurrentValue, out targetFieldCurrentValue) &&
                detailsProperties.Properties.TryGetValue(
                    InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_TargetTeamFoundationServerUrl, out targetTFSUrl))
            {
                // for backward compatibility, reason is read from the property bag separately
                string reason;
                if (!detailsProperties.Properties.TryGetValue(
                        InvalidFieldValueConflictTypeConstants.ConflictDetailsKey_Reason, out reason))
                {
                    reason = string.Empty;
                }

                Initialize(sourceItemId, sourceItemRevision, targetFieldRefName, targetFieldDispName,
                           targetFieldOriginalValue, targetFieldCurrentValue, targetTeamProjectName,
                           targetWorkItemType, targetTFSUrl, reason);
            }
            else
            {
                throw new ArgumentException("detailsProperties do not contain all expected values for the conflict type");
            }
        }
        public override string TranslateConflictDetailsToReadableDescription(string dtls)
        {
            if (string.IsNullOrEmpty(dtls))
            {
                throw new ArgumentNullException("dtls");
            }

            InvalidFieldValueConflictTypeDetails details = null;

            try
            {
                ConflictDetailsProperties properties = ConflictDetailsProperties.Deserialize(dtls);
                details = new InvalidFieldValueConflictTypeDetails(properties);
            }
            catch (Exception)
            {
                try
                {
                    GenericSerializer <InvalidFieldValueConflictTypeDetails> serializer =
                        new GenericSerializer <InvalidFieldValueConflictTypeDetails>();
                    details = serializer.Deserialize(dtls);
                }
                catch (Exception)
                {
                    // do nothing, fall back to raw string later
                }
            }

            if (null != details)
            {
                return(string.Format(
                           "Source work item {0} (revision {1}) contains invalid field change on {2} from '{3}' to '{4}' in target project '{5}'.",
                           details.SourceWorkItemID, details.SourceWorkItemRevision,
                           details.TargetFieldRefName, details.TargetFieldOriginalValue,
                           details.TargetFieldCurrentValue, details.TargetTeamProject));
            }
            else
            {
                return(dtls);
            }
        }
        /// <summary>
        /// Creates the details of this conflict
        /// </summary>
        /// <param name="attachmentName"></param>
        /// <param name="fileSize"></param>
        /// <param name="maxAttachmentSize"></param>
        /// <param name="workItemId"></param>
        /// <param name="serverName"></param>
        /// <param name="teamProject"></param>
        /// <returns></returns>
        public static string CreateConflictDetails(
            string attachmentName,
            string fileSize,
            long maxAttachmentSize,
            string workItemId,
            string serverName,
            string teamProject)
        {
            ConflictDetailsProperties detailsProperties = new ConflictDetailsProperties();

            detailsProperties.Properties.Add(
                FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_AttachmentName, attachmentName);
            detailsProperties.Properties.Add(
                FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_FileSize, fileSize);
            detailsProperties.Properties.Add(
                FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_MaxAttachmentSize, maxAttachmentSize.ToString());
            detailsProperties.Properties.Add(
                FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_WorkItemId, workItemId);
            detailsProperties.Properties.Add(
                FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_ServerName, serverName);
            detailsProperties.Properties.Add(
                FileAttachmentOversizedConflictTypeConstants.ConflictDetailsKey_TeamProject, teamProject);
            return(detailsProperties.ToString());
        }