/// <summary> /// 設定変数からSQL接続用モジュールの生成 /// </summary> /// <returns>SQL接続用モジュールオブジェクト</returns> private static mysql_module create_mysql_module() { try { string db_host = json_module.get_external_resource("db_server_name"); string db_name = json_module.get_external_resource("db_name"); string db_user = json_module.get_external_resource("db_userid"); string db_pass = json_module.get_external_resource("db_passwd"); mysql_module mysql_connecer = mysql_module.setup_sql(db_host, db_name, db_user, db_pass); return(mysql_connecer); } catch (Exception e) { loger_manager.write_log(e.Message, "error"); return(null); } }
/// <summary> /// シリアライズ元データ作成関数 /// </summary> /// <returns></returns> private static comparison_table create_comparison_data(DataTable group_list) { Func <string, string, string> transform_str_to_cug = (string src_str, string account_name_filter) => { string trim_str = src_str.Trim(); // 前後の空白を排除 if (trim_str.Equals("")) { return(""); } int all_appear_position = account_name_filter.LastIndexOf('*'); // フィルターでしてした*の出現位置取得 if (all_appear_position == -1) { return(""); } string group_header = account_name_filter.Substring(0, all_appear_position); return(group_header + trim_str); }; comparison_table compari_table = new comparison_table(); active_direcory_module ad_obj = get_ad_object(); // 移動う元ADからグループ情報を取得 mysql_module mysql = create_mysql_module(); Dictionary <string, group_info> group_infos = get_group_infos_from_destination_ad(); // 移動先ADから取得したグループ情報の取得 string ad_account_name_filter = json_module.get_external_resource("dst_account_name_filter"); string destination_domain = json_module.get_external_resource("destination_domain"); if (!destination_domain.Equals("")) { destination_domain += "\\"; } if ((group_infos == null) || (group_infos.Count == 0)) { loger_manager.write_log("ADからの取得グループ情報がありません", "warning"); return(null); } foreach (KeyValuePair <string, group_info> ad_group_membars in ad_obj.groups_list) // 移動元ADから取得したグループ情報を元にループ { // グループ情報の追加 string query_str = $"Name = '{ad_group_membars.Key}'"; DataRow[] result_rows = group_list.Select(query_str); if (result_rows.Length > 0) { foreach (var result_row in result_rows) { try { string group_name = transform_str_to_cug(result_row["CUGコード"].ToString(), ad_account_name_filter); comparsion_unit unit = new comparsion_unit(); unit.account_name = ad_group_membars.Value.account_name; unit.conversion_original = ad_group_membars.Value.sid; if (!group_infos.ContainsKey(group_name)) // CUGコードがリソースに設定されてなければ、移行対象外とする { unit.after_conversion = ""; unit.del_flg = 1; } else { unit.after_conversion = destination_domain + group_name; } if (!compari_table.comparsion_units.Contains(unit)) { compari_table.comparsion_units.Add(unit); } } catch (Exception e) { loger_manager.write_log(e.Message, "error"); } } } else { loger_manager.write_log($"該当するグループ名がありません グループ名: {ad_group_membars.Key}", "extracting", "extracting"); } if (ad_group_membars.Value.group_members.Count == 0) { continue; } // ユーザー毎に追加処理 foreach (user_info membar_user in ad_group_membars.Value.group_members) { try { var users = user_info.get_user_infos(mysql.connection_sql_str(), membar_user.account_name); if ((users == null) || (users.Count == 0)) { continue; } comparsion_unit unit = new comparsion_unit(membar_user, users[0], membar_user.sid, destination_domain + users[0].account_name); if (!compari_table.comparsion_units.Contains(unit)) { compari_table.comparsion_units.Add(unit); } } catch (Exception e) { loger_manager.write_log(e.Message, "error"); } } } compari_table.list_sort(); // 全て格納後、ソートを行う return(compari_table); }