protected void Initialize(
     ReadOnlyCollection <MappingEntry> rawMappingFilters,
     ClearQuestOleServer.Session userSession)
 {
     foreach (MappingEntry filter in rawMappingFilters)
     {
         CQRecordFilter recordFilter = ParseFilter(filter, userSession);
         if (null != recordFilter)
         {
             this.Add(recordFilter);
         }
     }
 }
        internal static CQRecordFilter ParseFilterPath(string filterPath, ClearQuestOleServer.Session userSession)
        {
            if (string.IsNullOrEmpty(filterPath))
            {
                return(null);
            }

            filterPath = filterPath.Trim();
            if (filterPath.StartsWith(FilterDelimitor))
            {
                return(null);
            }

            if (filterPath.StartsWith(StoredQueryPrefix, StringComparison.OrdinalIgnoreCase))
            {
                if (filterPath.Length == StoredQueryPrefix.Length)
                {
                    // todo: raise error
                    return(null);
                }

                string storedQuery = filterPath.Substring(StoredQueryPrefix.Length);
                return(new CQRecordStoredQueryFilter(storedQuery, userSession));
            }
            else
            {
                // advanced setting: DefectType::[TableName::]SQL Query Condition
                string[] splits = filterPath.Split(new string[] { FilterDelimitor }, StringSplitOptions.RemoveEmptyEntries);

                switch (splits.Length)
                {
                case 1:
                    return(new CQRecordFilter(splits[0].Trim()));    // RecordType

                case 2:
                    return(new CQRecordFilter(splits[0].Trim(), splits[1].Trim()));    // RecordType::SqlCondition

                case 3:
                    return(new CQRecordFilter(splits[0].Trim(), splits[1].Trim(), splits[2].Trim()));    // RecordType::SelectFromTable::SqlCondition

                default:
                    TraceManager.TraceError("CQ adapter FilterString '{0}' is invalid.", filterPath);
                    return(null);
                }
            }
        }
예제 #3
0
        void m_worker_DoWork(object sender, DoWorkEventArgs e)
        {
            Debug.Assert(e.Argument is MigrationSource, "Wrong argument type");
            MigrationSource migrationSourceConfig = e.Argument as MigrationSource;

            string dbSet  = migrationSourceConfig.ServerUrl;
            string userDb = migrationSourceConfig.SourceIdentifier;

            CredentialManagementService credManagementService =
                new CredentialManagementService(migrationSourceConfig);

            ICQLoginCredentialManager  loginCredManager      = CQLoginCredentialManagerFactory.CreateCredentialManager(credManagementService, migrationSourceConfig);
            ClearQuestConnectionConfig userSessionConnConfig = new ClearQuestConnectionConfig(loginCredManager.UserName,
                                                                                              loginCredManager.Password,
                                                                                              userDb,
                                                                                              dbSet);

            ClearQuestOleServer.Session userSession = CQConnectionFactory.GetUserSession(userSessionConnConfig);

            Dictionary <string, bool> queryList = CQWorkSpace.GetQueryListWithValidity(userSession);

            e.Result = queryList;
        }
        public void Initialize(Configuration configuration)
        {
            CredentialManagementService credManagementService = new CredentialManagementService(configuration);

            foreach (MigrationSource ms in configuration.SessionGroup.MigrationSources.MigrationSource)
            {
                try
                {
                    string dbSet  = ms.ServerUrl;
                    string userDb = ms.SourceIdentifier;

                    ICQLoginCredentialManager loginCredManager =
                        CQLoginCredentialManagerFactory.CreateCredentialManager(credManagementService, ms);
                    Guid migrSrcId = new Guid(ms.InternalUniqueId);

                    var userSessionConnConfig = new ClearQuestConnectionConfig(loginCredManager.UserName,
                                                                               loginCredManager.Password,
                                                                               userDb,
                                                                               dbSet);
                    ClearQuestOleServer.Session userSession = CQConnectionFactory.GetUserSession(userSessionConnConfig);

                    if (!m_cqSessions.ContainsKey(migrSrcId))
                    {
                        m_cqSessions.Add(migrSrcId, userSession);
                    }
                }
                catch (ClearQuestInvalidConfigurationException)
                {
                    continue;
                }
                catch (Exception e)
                {
                    TraceManager.TraceException(e);
                }
            }
        }
예제 #5
0
        internal ClearQuestMigrationContext(
            ClearQuestOleServer.Session userSession,
            MigrationSource migrationSource)
        {
            PerEntityTypeStateField          = new Dictionary <string, string>();
            PerEntityTypeAttachmentSinkField = new Dictionary <string, string>();

            // try extract context info from the custom settings in the config
            foreach (var setting in migrationSource.CustomSettings.CustomSetting)
            {
                if (setting.SettingKey.Equals(ClearQuestConstants.NoteEntryFieldNameSettingKey))
                {
                    NoteEntryFieldName = setting.SettingValue;
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.NotesLogFieldNameSettingKey))
                {
                    NotesLogFieldName = setting.SettingValue;
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.CQQueryTimeDelimiter))
                {
                    CQQueryTimeDelimiter = setting.SettingValue;
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.CQQueryDateTimeFormat))
                {
                    CQQueryDateTimeFormat = setting.SettingValue;
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.CQTimeOffsetFromServerHistoryTimesInMinutes))
                {
                    CQTimeOffsetFromServerHistoryTimesInMinutes = setting.SettingValue;
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.EntityStateFieldSettingKey))
                {
                    if (!string.IsNullOrEmpty(setting.SettingValue))
                    {
                        string[] splits = setting.SettingValue.Split(new string[] { ClearQuestConstants.EntityStateFieldSettingDelimiter },
                                                                     StringSplitOptions.RemoveEmptyEntries);

                        if (splits.Length == 2 &&
                            !string.IsNullOrEmpty(splits[0]) &&
                            !string.IsNullOrEmpty(splits[1]) &&
                            !PerEntityTypeStateField.ContainsKey(splits[0]))
                        {
                            PerEntityTypeStateField.Add(splits[0], splits[1]);
                        }
                    }
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.AttachmentSinkFieldSettingKey))
                {
                    if (!string.IsNullOrEmpty(setting.SettingValue))
                    {
                        string[] splits = setting.SettingValue.Split(new string[] { ClearQuestConstants.AttachmentSinkFieldSettingDelimiter },
                                                                     StringSplitOptions.RemoveEmptyEntries);

                        if (splits.Length == 2 &&
                            !string.IsNullOrEmpty(splits[0]) &&
                            !string.IsNullOrEmpty(splits[1]) &&
                            !PerEntityTypeAttachmentSinkField.ContainsKey(splits[0]))
                        {
                            PerEntityTypeAttachmentSinkField.Add(splits[0], splits[1]);
                        }
                    }
                }
            }

            // fall back to default values if no setting found
            // Setting NoteEntryFieldName="" or NotesLogFieldName="" can be used to disable the setting of these fields
            if (null == NoteEntryFieldName)
            {
                NoteEntryFieldName = ClearQuestConstants.NoteEntryFieldNameDefaultValue;
            }

            if (null == NotesLogFieldName)
            {
                NotesLogFieldName = ClearQuestConstants.NotesLogFieldNameDefaultValue;
            }

            if (string.IsNullOrEmpty(CQQueryTimeDelimiter))
            {
                CQQueryTimeDelimiter = ClearQuestConstants.CQQueryDefaultTimeDelimiter;
            }

            if (string.IsNullOrEmpty(CQQueryDateTimeFormat))
            {
                CQQueryDateTimeFormat = ClearQuestConstants.CQQueryDefaultDateTimeFormat;
            }

            UserSession = userSession;
        }
예제 #6
0
        internal ClearQuestMigrationContext(
            ClearQuestOleServer.Session userSession,
            MigrationSource migrationSource)
        {
            PerEntityTypeStateField          = new Dictionary <string, string>();
            PerEntityTypeAttachmentSinkField = new Dictionary <string, string>();

            // try extract context info from the custom settings in the config
            foreach (var setting in migrationSource.CustomSettings.CustomSetting)
            {
                if (setting.SettingKey.Equals(ClearQuestConstants.NoteEntryFieldNameSettingKey))
                {
                    NoteEntryFieldName = setting.SettingValue;
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.NotesLogFieldNameSettingKey))
                {
                    NotesLogFieldName = setting.SettingValue;
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.EntityStateFieldSettingKey))
                {
                    if (!string.IsNullOrEmpty(setting.SettingValue))
                    {
                        string[] splits = setting.SettingValue.Split(new string[] { ClearQuestConstants.EntityStateFieldSettingDelimiter },
                                                                     StringSplitOptions.RemoveEmptyEntries);

                        if (splits.Length == 2 &&
                            !string.IsNullOrEmpty(splits[0]) &&
                            !string.IsNullOrEmpty(splits[1]) &&
                            !PerEntityTypeStateField.ContainsKey(splits[0]))
                        {
                            PerEntityTypeStateField.Add(splits[0], splits[1]);
                        }
                    }
                }
                else if (setting.SettingKey.Equals(ClearQuestConstants.AttachmentSinkFieldSettingKey))
                {
                    if (!string.IsNullOrEmpty(setting.SettingValue))
                    {
                        string[] splits = setting.SettingValue.Split(new string[] { ClearQuestConstants.AttachmentSinkFieldSettingDelimiter },
                                                                     StringSplitOptions.RemoveEmptyEntries);

                        if (splits.Length == 2 &&
                            !string.IsNullOrEmpty(splits[0]) &&
                            !string.IsNullOrEmpty(splits[1]) &&
                            !PerEntityTypeAttachmentSinkField.ContainsKey(splits[0]))
                        {
                            PerEntityTypeAttachmentSinkField.Add(splits[0], splits[1]);
                        }
                    }
                }
            }

            // fall back to default values
            if (string.IsNullOrEmpty(NoteEntryFieldName))
            {
                NoteEntryFieldName = ClearQuestConstants.NoteEntryFieldNameDefaultValue;
            }

            if (string.IsNullOrEmpty(NotesLogFieldName))
            {
                NotesLogFieldName = ClearQuestConstants.NotesLogFieldNameDefaultValue;
            }

            UserSession = userSession;
        }
 private CQRecordFilter ParseFilter(MappingEntry filter, ClearQuestOleServer.Session userSession)
 {
     return(ParseFilterPath(filter.Path, userSession));
 }
 public CQRecordFilters(
     ReadOnlyCollection <MappingEntry> rawMappingFilters,
     ClearQuestOleServer.Session userSession)
 {
     Initialize(rawMappingFilters, userSession);
 }