nt, &names);// 获取关联文件
91 for (k = 0; k < dep_count; k++)
92 PRINT(("Dependent files: %s", names[k]));
93
94 indent_level--;
95 if (dep_count > 0)
96 UF_free_string_array(dep_count, names);
97
98 _errCode = UF_UGMGR_list_part_rev_files(revisions[j], &count, &file_types, &file_names);// 列出版本下数据集
99 for (i = 0; i < count; i++)
100 {
101 _errCode = UF_UGMGR_encode_part_filename(part_number, revision_id, file_types[i], file_names[i], part_name);// 根据ItemID、版本、文件类型、文件名encode成新的文件名
102 PRINT(("Rev.: %s - Type: %s, Name: %s", revision_id, file_types[i], file_names[i]));
103 indent_level++;
104 _errCode = UF_UGMGR_ask_dependent_files(part_name, &dep_count, &names);// 获取关联文件
105 for (k = 0; k < dep_count; k++)
106 PRINT(("Dependent files: %s", names[k]));
107
108 indent_level--;
109 if (dep_count > 0)
110 UF_free_string_array(dep_count, names);
111 }
112 if (count > 0){
113 UF_free_string_array(count, file_types);
114 UF_free_string_array(count, file_names);
115 }
116 }
117 indent_level--;
118 UF_free(revisions);
119 revisions = NULL;
120 return _errCode;
121 }
122
123 static int list_in_folder(UF_UGMGR_tag_t folder)
124 {
125 int _errCode = 0;
126 char folder_name[UF_UGMGR_NAME_SIZE + 1];
127 if (folder == UF_UGMGR_null_tag) return -1;
128
129 _errCode = UF_UGMGR_ask_folder_name(folder, folder_name);// 获取文件夹名称
130 PRINT(("Folder: %s", folder_name));
131 indent_level++;
132
133 UF_UGMGR_object_type_t object_type;
134 int root_folder_contents_count = 0;
135 UF_UGMGR_tag_t * folder_contents = NULL;
136 _errCode = UF_UGMGR_list_folder_contents(folder, &root_folder_contents_count, &folder_contents);// 列出文件夹下的所有文件
137 for (int idx = 0; idx < root_folder_contents_count; idx++)
138 {
139 _errCode = UF_UGMGR_ask_object_type(folder_contents[idx], &object_type);// 获取文件类型
140 switch (object_type)
141 {
142 case UF_UGMGR_type_folder:
143 list_in_folder(folder_contents[idx]);// 是文件夹
144 break;
145 case UF_UGMGR_type_part:
146 list_in_part(folder_contents[idx]);// 是零组件
147 break;
148 default:
149 printf("Invalid object type found");
150 break;
151 }
152 }
153 UF_free(folder_contents);
154 folder_contents = NULL;
155 indent_level--;
156 return _errCode;
157 }
158
159 void do_it()
160 {
161 int _errCode = 0;
162
163 tag_t partTag = NULL_TAG;
164 UF_PART_load_status_t error_status;
165 UF_UGMGR_tag_t database_part_tag = NULL_TAG;
166 UF_UGMGR_tag_t part_revision = NULL_TAG;
167 UF_UGMGR_tag_t root_folder_tag = NULL_TAG;
168 UF_UGMGR_tag_t user_folder_tag = NULL_TAG;
169
170 char current_rule[UF_UGMGR_NAME_BUFSIZE] = { 0 };
171 char revision_id[UF_UGMGR_NAME_BUFSIZE] = { 0 };
172 char export_dir_name[MAX_FSPEC_BUFSIZE] = { 0 };
173 char encoded_name[MAX_FSPEC_BUFSIZE] = { 0 };
174 char user_role[UF_UGMGR_ROLE_BUFSIZE] = { 0 };
175
176 _errCode = UF_UGMGR_ask_part_tag("000000000AA000082", &database_part_tag);// 获取编码为000000000AA000082的部件标识
177 _errCode = UF_UGMGR_ask_config_rule(current_rule);// 获取默认配置规则
178 std::cout << "默认配置规则:" << current_rule << std::endl;
179 _errCode = UF_UGMGR_set_config_rule("Latest Working");// 设置配置规则
180 _errCode = UF_UGMGR_ask_configured_rev(database_part_tag |