|
|
|
|
@ -285,7 +285,7 @@ qof_book_merge_commit_foreach (
|
|
|
|
|
{
|
|
|
|
|
struct QofBookMergeRuleIterate iter;
|
|
|
|
|
QofBookMergeRule *currentRule;
|
|
|
|
|
GList *subList;
|
|
|
|
|
GList *subList, *node;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail(cb != NULL);
|
|
|
|
|
g_return_if_fail(mergeData != NULL);
|
|
|
|
|
@ -296,13 +296,12 @@ qof_book_merge_commit_foreach (
|
|
|
|
|
|
|
|
|
|
iter.fcn = cb;
|
|
|
|
|
subList = NULL;
|
|
|
|
|
iter.ruleList = g_list_copy(mergeData->mergeList);
|
|
|
|
|
while(iter.ruleList!=NULL) {
|
|
|
|
|
currentRule = iter.ruleList->data;
|
|
|
|
|
iter.ruleList = NULL;
|
|
|
|
|
for (node = mergeData->mergeList; node != NULL; node = node->next) {
|
|
|
|
|
currentRule = node->data;
|
|
|
|
|
if(currentRule->mergeResult == mergeResult) {
|
|
|
|
|
subList = g_list_prepend(subList, currentRule);
|
|
|
|
|
}
|
|
|
|
|
iter.ruleList = g_list_next(iter.ruleList);
|
|
|
|
|
}
|
|
|
|
|
iter.remainder = g_list_length(subList);
|
|
|
|
|
iter.data = mergeData;
|
|
|
|
|
@ -747,7 +746,7 @@ qof_book_merge_init( QofBook *importBook, QofBook *targetBook)
|
|
|
|
|
{
|
|
|
|
|
QofBookMergeData *mergeData;
|
|
|
|
|
QofBookMergeRule *currentRule;
|
|
|
|
|
GList *check;
|
|
|
|
|
GList *node;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail((importBook != NULL)&&(targetBook != NULL), NULL);
|
|
|
|
|
mergeData = g_new(QofBookMergeData, 1);
|
|
|
|
|
@ -767,16 +766,13 @@ qof_book_merge_init( QofBook *importBook, QofBook *targetBook)
|
|
|
|
|
qof_book_merge_match_orphans(mergeData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
check = g_list_copy(mergeData->mergeList);
|
|
|
|
|
while(check != NULL) {
|
|
|
|
|
currentRule = check->data;
|
|
|
|
|
for (node = mergeData->mergeList; node != NULL; node = node->next) {
|
|
|
|
|
currentRule = node->data;
|
|
|
|
|
if(currentRule->mergeResult == MERGE_INVALID) {
|
|
|
|
|
mergeData->abort = TRUE;
|
|
|
|
|
return(NULL);
|
|
|
|
|
}
|
|
|
|
|
check = g_list_next(check);
|
|
|
|
|
}
|
|
|
|
|
g_list_free(check);
|
|
|
|
|
return mergeData;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -944,7 +940,7 @@ gint
|
|
|
|
|
qof_book_merge_commit(QofBookMergeData *mergeData )
|
|
|
|
|
{
|
|
|
|
|
QofBookMergeRule *currentRule;
|
|
|
|
|
GList *check;
|
|
|
|
|
GList *check, *node;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail(mergeData != NULL, -1);
|
|
|
|
|
g_return_val_if_fail(mergeData->mergeList != NULL, -1);
|
|
|
|
|
@ -952,22 +948,23 @@ qof_book_merge_commit(QofBookMergeData *mergeData )
|
|
|
|
|
if(mergeData->abort == TRUE) return -1;
|
|
|
|
|
check = g_list_copy(mergeData->mergeList);
|
|
|
|
|
g_return_val_if_fail(check != NULL, -1);
|
|
|
|
|
while(check != NULL) {
|
|
|
|
|
currentRule = check->data;
|
|
|
|
|
for (node = check; node != NULL; node = node->next) {
|
|
|
|
|
currentRule = node->data;
|
|
|
|
|
if(currentRule->mergeResult == MERGE_INVALID) {
|
|
|
|
|
qof_book_merge_abort(mergeData);
|
|
|
|
|
g_list_free(check);
|
|
|
|
|
return(-2);
|
|
|
|
|
}
|
|
|
|
|
if(currentRule->mergeResult == MERGE_REPORT) {
|
|
|
|
|
g_list_free(check);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
check = g_list_next(check);
|
|
|
|
|
}
|
|
|
|
|
g_list_free(check);
|
|
|
|
|
qof_book_merge_commit_foreach(qof_book_merge_commit_rule_loop,
|
|
|
|
|
MERGE_NEW, mergeData);
|
|
|
|
|
MERGE_NEW, mergeData);
|
|
|
|
|
qof_book_merge_commit_foreach(qof_book_merge_commit_rule_loop,
|
|
|
|
|
MERGE_UPDATE, mergeData);
|
|
|
|
|
MERGE_UPDATE, mergeData);
|
|
|
|
|
/* Placeholder for QofObject merge_helper_cb - all objects
|
|
|
|
|
and all parameters set */
|
|
|
|
|
while(mergeData->mergeList != NULL) {
|
|
|
|
|
@ -992,7 +989,7 @@ qof_book_merge_rule_foreach(QofBookMergeData *mergeData,
|
|
|
|
|
{
|
|
|
|
|
struct QofBookMergeRuleIterate iter;
|
|
|
|
|
QofBookMergeRule *currentRule;
|
|
|
|
|
GList *matching_rules;
|
|
|
|
|
GList *matching_rules, *node;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail(cb != NULL);
|
|
|
|
|
g_return_if_fail(mergeData != NULL);
|
|
|
|
|
@ -1003,13 +1000,12 @@ qof_book_merge_rule_foreach(QofBookMergeData *mergeData,
|
|
|
|
|
iter.fcn = cb;
|
|
|
|
|
iter.data = mergeData;
|
|
|
|
|
matching_rules = NULL;
|
|
|
|
|
iter.ruleList = g_list_copy(mergeData->mergeList);
|
|
|
|
|
while(iter.ruleList!=NULL) {
|
|
|
|
|
currentRule = iter.ruleList->data;
|
|
|
|
|
iter.ruleList = NULL;
|
|
|
|
|
for (node = mergeData->mergeList; node != NULL; node = node->next) {
|
|
|
|
|
currentRule = node->data;
|
|
|
|
|
if(currentRule->mergeResult == mergeResult) {
|
|
|
|
|
matching_rules = g_list_prepend(matching_rules, currentRule);
|
|
|
|
|
}
|
|
|
|
|
iter.ruleList = g_list_next(iter.ruleList);
|
|
|
|
|
}
|
|
|
|
|
iter.remainder = g_list_length(matching_rules);
|
|
|
|
|
g_list_foreach (matching_rules, qof_book_merge_rule_cb, &iter);
|
|
|
|
|
|