我有以下内容:
class ObjectRow
{
String updated,
String phone,
String name,
String city,
String state
List<String> comments
// setters/getters
}
class Report
{
String id,
List<ObjectRow> rows
// setters/getters
}
Report oldReport = getLastGeneratedReport(id);
Report newReport = buildReport();
String globalId;
Diff diff = javers.compare(oldReport, newReport);
List<ObjectRow> newReportRow = newReport.getRows();
for (Change c : diff.getChanges())
{
globalId = c.getAffectedGlobalId().value;
String rowResult = globalId.substring(globalId.lastIndexOf('/') + 1);
if (!rowResult.equals(""))
{
int changedRow = Integer.parseInt(rowResult);
newReportRow.get(changedRow).setUpdated(BooleanUtilsWrapper.toStringYesNo(true));
}
}
我遍历更改并通过在该列中放置“是”来注意标题为“已更新”的 Excel 电子表格列中的差异。
例如,
"Updated", "PhoneNumber", "Name", "City", "State"
有些行的名称会重复,因为同一行可能有多个电话号码(家庭、手机、工作)。
"Yes", 123-4567, Sally, Austin, TX
"Yes", 123-1111, Sally, Austin, TX
"", 234-4444, Dennis, Dallas, TX
只要两个集合(行)中的行数相等,就可以正常工作。
但是,如果我在新报告中添加新行。我很难使用 Change.globalId 输出,其中索引帮助我能够在该行的更新列中标注“是”。
Javers 最终注意到所有行都已更改,而实际上它只是添加了一行,我认为这被认为是“NewObject”更改。
我想更新“更新”列并让它比较正确的行与旧报告中的 20 行和新报告中的 21 行并关闭。
有没有办法防止这种情况发生?或者您是否遇到过类似的事情并可以提供建议?
感谢您的帮助或任何建议。