View import: associated column informations are now correctly updated
with the new versions
This commit is contained in:
46
src/obidms.c
46
src/obidms.c
@ -1526,7 +1526,9 @@ int obi_import_view(const char* dms_path_1, const char* dms_path_2, const char*
|
|||||||
Obiview_p view_1;
|
Obiview_p view_1;
|
||||||
Obiview_p view_2;
|
Obiview_p view_2;
|
||||||
obiversion_t new_version;
|
obiversion_t new_version;
|
||||||
int i;
|
int i, j;
|
||||||
|
OBIDMS_column_header_p header = NULL;
|
||||||
|
OBIDMS_column_header_p header_2 = NULL;
|
||||||
|
|
||||||
dms_1 = obi_open_dms(dms_path_1);
|
dms_1 = obi_open_dms(dms_path_1);
|
||||||
if (dms_1 == NULL)
|
if (dms_1 == NULL)
|
||||||
@ -1606,6 +1608,48 @@ int obi_import_view(const char* dms_path_1, const char* dms_path_2, const char*
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Go through columns again to update associated columns
|
||||||
|
for (i=0; i < (view_1->infos->column_count); i++)
|
||||||
|
{
|
||||||
|
header = obi_column_get_header_from_name(dms_1, ((((view_1->infos)->column_references)[i]).column_refs).column_name, ((((view_1->infos)->column_references)[i]).column_refs).version);
|
||||||
|
if (header == NULL)
|
||||||
|
{
|
||||||
|
obidebug(1, "\nError opening a column header while importing a view");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (header->returned_data_type == OBI_QUAL) // TODO maybe there should be a bool in column headers
|
||||||
|
{
|
||||||
|
// Look for the index of the associated column in the list
|
||||||
|
for (j=0; j < (view_1->infos->column_count); j++)
|
||||||
|
{
|
||||||
|
if ((strcmp((header->associated_column).column_name, ((((view_1->infos)->column_references)[j]).column_refs).column_name) == 0) &&
|
||||||
|
((header->associated_column).version == ((((view_1->infos)->column_references)[j]).column_refs).version))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
header_2 = obi_column_get_header_from_name(dms_2, ((((view_2->infos)->column_references)[i]).column_refs).column_name, ((((view_2->infos)->column_references)[i]).column_refs).version);
|
||||||
|
if (header_2 == NULL)
|
||||||
|
{
|
||||||
|
obidebug(1, "\nError opening a column header while importing a view");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update version of associated column
|
||||||
|
(header_2->associated_column).version = ((((view_2->infos)->column_references)[j]).column_refs).version;
|
||||||
|
if (obi_close_header(header_2) < 0)
|
||||||
|
{
|
||||||
|
obidebug(1, "\nError closing a column header while importing a view");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (obi_close_header(header) < 0)
|
||||||
|
{
|
||||||
|
obidebug(1, "\nError closing a column header while importing a view");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Close the views
|
// Close the views
|
||||||
if (obi_save_and_close_view(view_1) < 0)
|
if (obi_save_and_close_view(view_1) < 0)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user