svoid gazelle_addRuleFeedbackFromConcepts(Concepts concepts, O... _) { bool overwrite = boolPar overwrite(_); L toMerge = list(concepts, "AppliedRule"); for (Concept c : toMerge) { S globalID = getString globalID(c); if (empty(globalID)) continue with print("No global ID!?"); S judgement = getString judgement(c); S moduleID = empty(judgement) ? dm_gazelle_longFeedbackCRUD() : dm_gazelle_feedbackCRUD(); O local = dm_call(moduleID, 'getFeedback, globalID); Set fields = conceptFields_gen(c); if (local == null) { print(globalID + " => " + judgement); print(" adding feedback"); local = dm_call(moduleID, 'uniqConcept, +globalID); } else { if (!anyFieldsDifferent(c, local, fields)) continue; // with print(" same"); else { print(globalID + " => " + judgement); if (!overwrite) continue with print(" would overwrite"); print(" found, updating"); } } ccopyFields2_gen(c, local, fields); } }