我有以下内容:
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电子表格专栏中注明差异,标题为&#34;已更新&#34;通过放置&#34;是&#34;在那一栏。
例如,
"Updated", "PhoneNumber", "Name", "City", "State"
某些行的名称会重复,因为一行可能有多个同名的PhoneNumbers(home,cell,work)。
"Yes", 123-4567, Sally, Austin, TX
"Yes", 123-1111, Sally, Austin, TX
"", 234-4444, Dennis, Dallas, TX
只要两个集合(行)中的行数相等,这样就可以正常工作。
但是,如果我向新报告添加新行。我很难使用Change.globalId输出,其中索引帮助我能够记录&#34;是&#34;在该行的“已更新”列中。
Javers最终注意到所有行都发生了变化,实际上它只是添加了一行,我相信它被认为是&#34; NewObject&#34;变化
我想更新&#34;更新&#34;列,并比较正确的行与旧报告中的20行和新报告中的21行以及关闭。
有没有办法防止这种情况发生?或者你遇到类似的东西并提出建议吗?
感谢您的帮助或任何建议。