0

我有以下内容:

    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 行并关闭。

有没有办法防止这种情况发生?或者您是否遇到过类似的事情并可以提供建议?

感谢您的帮助或任何建议。

4

0 回答 0