/// <summary> /// Populates the fields for multiple objects from the columns found in an open reader. /// </summary> /// /// <param name="rdr" type="IDataReader">An object that implements the IDataReader interface</param> /// /// <returns>Object of FieldMaps</returns> /// /// <remarks> /// /// <RevisionHistory> /// Author Date Description /// DLGenerator 11/21/2009 4:19:24 PM Created function /// /// </RevisionHistory> /// /// </remarks> /// internal static FieldMaps PopulateObjectsFromReader(IDataReader rdr, string ConnectionString) { FieldMaps list = new FieldMaps(); while (rdr.Read()) { FieldMap obj = new FieldMap(ConnectionString); PopulateObjectFromReader(obj,rdr); list.Add(obj); } return list; }
/// <summary> /// Populates the fields for multiple objects from the columns found in an open reader. /// </summary> /// /// <param name="rdr" type="IDataReader">An object that implements the IDataReader interface</param> /// /// <returns>Object of FieldMaps</returns> /// /// <remarks> /// /// <RevisionHistory> /// Author Date Description /// DLGenerator 11/21/2009 4:19:24 PM Created function /// /// </RevisionHistory> /// /// </remarks> /// internal static FieldMaps PopulateObjectsFromReaderWithCheckingReader(IDataReader rdr, DatabaseHelper oDatabaseHelper, string ConnectionString) { FieldMaps list = new FieldMaps(); if (rdr.Read()) { FieldMap obj = new FieldMap(ConnectionString); PopulateObjectFromReader(obj, rdr); list.Add(obj); while (rdr.Read()) { obj = new FieldMap(ConnectionString); PopulateObjectFromReader(obj, rdr); list.Add(obj); } oDatabaseHelper.Dispose(); return list; } else { oDatabaseHelper.Dispose(); return null; } }
private void Button_Click(object sender, RoutedEventArgs e) { expanderGrid.Visibility = Visibility.Collapsed; errorMessage.Content = ""; var credential = CredentialManager.Instance.Credentials.FirstOrDefault(x => x?.BaseURL == Config.BaseURL); if (credential == null) { errorMessage.Content = $"No credentials exists for that URL"; return; } var jira = new Jira(Config.BaseURL, credential.Username, credential.Password); var issueService = jira.GetIssueService(); var fieldService = jira.GetFieldService(); try { errorMessage.Content = $"Attempting connection..."; issues = issueService.Search(Config.JQLFilter); var fields = fieldService.GetFields(); Dictionary <string, FieldMapViewModel> fieldMaps = new Dictionary <string, FieldMapViewModel>(); foreach (var issue in issues) { var properties = ((JObject)issue.InternalObject.SelectTokens("$").First()).Properties().Where(x => x.Value is JValue); var fieldsContainer = issue.InternalObject.SelectToken("$.fields") as JObject; var issueFields = fieldsContainer.Properties(); foreach (var prop in properties) { if (!fieldMaps.ContainsKey(prop.Path)) { fieldMaps.Add(prop.Path, new FieldMapViewModel { DisplayedName = prop.Name, JiraJSONPath = prop.Path, Map = false, ToscaFields = toscaFields, ExampleValues = new HashSet <string>() }); } fieldMaps[prop.Path].ExampleValues.Add(prop.Value.ToString()); } foreach (var issueField in issueFields) { var field = fields.FirstOrDefault(x => x.id == issueField.Name); string fieldName = (field != null ? field.name : issueField.Name); if (issueField.Value is JValue) { if (!fieldMaps.ContainsKey(issueField.Path)) { fieldMaps.Add(issueField.Path, new FieldMapViewModel { DisplayedName = fieldName, ExampleValues = new HashSet <string>(), JiraJSONPath = issueField.Path, Map = false, ToscaFields = toscaFields }); } fieldMaps[issueField.Path].ExampleValues.Add(issueField.Value.ToString()); } else { JObject fieldValue = issueField.Value as JObject; if (fieldValue == null || fieldValue.Properties() == null) { continue; } var fieldValueProps = fieldValue.Properties().Where(x => x.Value is JValue); foreach (var fieldValueProp in fieldValueProps) { if (!fieldMaps.ContainsKey(fieldValueProp.Path)) { fieldMaps.Add(fieldValueProp.Path, new FieldMapViewModel { DisplayedName = $"{fieldName} -> {fieldValueProp.Name}", ExampleValues = new HashSet <string>(), JiraJSONPath = fieldValueProp.Path, Map = false, ToscaFields = toscaFields }); } fieldMaps[fieldValueProp.Path].ExampleValues.Add(fieldValueProp.Value.ToString()); } } } } foreach (var map in fieldMaps.OrderBy(x => x.Value.DisplayedName)) { if (Config.Config.parentLocatorPropertyOverride == map.Value.JiraJSONPath) { map.Value.ParentLocator = true; } FieldMaps.Add(map.Value); } foreach (var configMap in Config.Config.fieldMaps) { if (FieldMaps.Any(x => x.JiraJSONPath == configMap.jiraJsonPath)) { var matchingFM = FieldMaps.First(x => x.JiraJSONPath == configMap.jiraJsonPath); matchingFM.Map = true; matchingFM.ToscaField = configMap.toscaField; } } errorMessage.Content = $"Success - {issues.Length} issues match"; expanderGrid.Visibility = Visibility.Visible; } catch (Exception ex) { errorMessage.Content = $"Error: {ex.Message}"; } }