diff --git a/src/main/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportService.java b/src/main/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportService.java index e1c8b6ff..3c26d80e 100644 --- a/src/main/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportService.java +++ b/src/main/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportService.java @@ -6,6 +6,7 @@ import edu.unc.lib.boxc.migration.cdm.exceptions.MigrationException; import edu.unc.lib.boxc.migration.cdm.model.GroupMappingInfo; import edu.unc.lib.boxc.migration.cdm.model.MigrationProject; +import edu.unc.lib.boxc.migration.cdm.model.SourceFilesInfo; import edu.unc.lib.boxc.migration.cdm.services.ChompbConfigService.ChompbConfig; import edu.unc.lib.boxc.migration.cdm.util.PostMigrationReportConstants; import edu.unc.lib.boxc.model.api.ResourceType; @@ -35,6 +36,7 @@ public class PostMigrationReportService { private MigrationProject project; private ChompbConfig chompbConfig; private DescriptionsService descriptionsService; + private SourceFileService sourceFileService; private CSVPrinter csvPrinter; private SAXBuilder saxBuilder; private String singleBaseUrl; @@ -42,6 +44,7 @@ public class PostMigrationReportService { private String bxcBaseUrl; private static final int CACHE_SIZE = 16; private Map parentTitleCache; + private SourceFilesInfo sourceFilesInfo; /** * Initialize the service @@ -99,10 +102,19 @@ public void addWorkRow(String cdmObjectId, String boxcWorkId, int childCount, bo String cdmUrl = buildCdmUrl(cdmObjectId, true, isSingleItem); String boxcTitle = getParentTitle(cdmObjectId); String boxcUrl = this.bxcBaseUrl + boxcWorkId; + String matchingValue = null; String parentUrl = null; String parentTitle = null; String objType = ResourceType.Work.name(); - addRow(cdmObjectId, cdmUrl, objType, boxcUrl, boxcTitle, null, parentUrl, parentTitle, childCount); + String sourceFile = null; + + if (isSingleItem) { + matchingValue = getMatchingValue(cdmObjectId); + sourceFile = getSourceFile(cdmObjectId); + } + + addRow(cdmObjectId, cdmUrl, objType, boxcUrl, boxcTitle, matchingValue, sourceFile, + null, parentUrl, parentTitle, childCount); } /** @@ -120,15 +132,28 @@ public void addFileRow(String fileCdmId, String parentCdmId, String boxcWorkId, String cdmUrl = buildCdmUrl(fileCdmId, false, isSingleItem); String boxcTitle = extractTitle(fileCdmId); String boxcUrl = this.bxcBaseUrl + boxcFileId; + String matchingValue; String parentUrl = this.bxcBaseUrl + boxcWorkId; String parentTitle = getParentTitle(parentCdmId); String objType = ResourceType.File.name(); - addRow(fileCdmId, cdmUrl, objType, boxcUrl, boxcTitle, null, parentUrl, parentTitle, null); + String sourceFile; + + if (isSingleItem) { + matchingValue = getMatchingValue(parentCdmId); + sourceFile = getSourceFile(parentCdmId); + } else { + matchingValue = getMatchingValue(fileCdmId); + sourceFile = getSourceFile(fileCdmId); + } + + addRow(fileCdmId, cdmUrl, objType, boxcUrl, boxcTitle, matchingValue, sourceFile, + null, parentUrl, parentTitle, null); } protected void addRow(String cdmId, String cdmUrl, String objType, String boxcUrl, String boxcTitle, - String verified, String parentUrl, String parentTitle, Integer childCount) throws IOException { - csvPrinter.printRecord(cdmId, cdmUrl, objType, boxcUrl, boxcTitle, + String matchingValue, String sourceFile, String verified, String parentUrl, + String parentTitle, Integer childCount) throws IOException { + csvPrinter.printRecord(cdmId, cdmUrl, objType, boxcUrl, boxcTitle, matchingValue, sourceFile, verified, parentUrl, parentTitle, childCount); } @@ -175,6 +200,25 @@ private String extractTitle(String cdmId) { return null; } + private String getMatchingValue(String cdmId) throws IOException { + var sourceFilesInfo = getSourceFilesInfo(); + String matchingValue = sourceFilesInfo.getMappingByCdmId(cdmId).getMatchingValue(); + return matchingValue; + } + + private String getSourceFile(String cdmId) throws IOException { + var sourceFilesInfo = getSourceFilesInfo(); + String sourceFile = sourceFilesInfo.getMappingByCdmId(cdmId).getSourcePathString(); + return sourceFile; + } + + private SourceFilesInfo getSourceFilesInfo() throws IOException { + if (sourceFilesInfo == null) { + sourceFilesInfo = sourceFileService.loadMappings(); + } + return sourceFilesInfo; + } + public void setProject(MigrationProject project) { this.project = project; } @@ -186,4 +230,8 @@ public void setChompbConfig(ChompbConfig chompbConfig) { public void setDescriptionsService(DescriptionsService descriptionsService) { this.descriptionsService = descriptionsService; } + + public void setSourceFileService(SourceFileService sourceFileService) { + this.sourceFileService = sourceFileService; + } } diff --git a/src/main/java/edu/unc/lib/boxc/migration/cdm/services/SipService.java b/src/main/java/edu/unc/lib/boxc/migration/cdm/services/SipService.java index 1a136c67..a9c60bba 100644 --- a/src/main/java/edu/unc/lib/boxc/migration/cdm/services/SipService.java +++ b/src/main/java/edu/unc/lib/boxc/migration/cdm/services/SipService.java @@ -91,6 +91,7 @@ private void initDependencies(SipGenerationOptions options, Connection conn) thr postMigrationReportService.setDescriptionsService(descriptionsService); postMigrationReportService.setProject(project); postMigrationReportService.setChompbConfig(chompbConfig); + postMigrationReportService.setSourceFileService(sourceFileService); postMigrationReportService.init(); workGeneratorFactory = new WorkGeneratorFactory(); diff --git a/src/main/java/edu/unc/lib/boxc/migration/cdm/util/PostMigrationReportConstants.java b/src/main/java/edu/unc/lib/boxc/migration/cdm/util/PostMigrationReportConstants.java index 82b48412..6d63ca4e 100644 --- a/src/main/java/edu/unc/lib/boxc/migration/cdm/util/PostMigrationReportConstants.java +++ b/src/main/java/edu/unc/lib/boxc/migration/cdm/util/PostMigrationReportConstants.java @@ -10,10 +10,10 @@ public class PostMigrationReportConstants { public static final String BXC_URL_HEADER = "boxc_url"; public static final String VERIFIED_HEADER = "verified"; - public static final int VERIFIED_INDEX = 5; + public static final int VERIFIED_INDEX = 7; public static final String[] CSV_HEADERS = new String[] { - "cdm_id", "cdm_url", "boxc_obj_type", "boxc_url", "boxc_title", VERIFIED_HEADER, - "boxc_parent_work_url", "boxc_parent_work_title", "children_count" }; + "cdm_id", "cdm_url", "boxc_obj_type", "boxc_url", "boxc_title", "matching_value", "source_file", + VERIFIED_HEADER, "boxc_parent_work_url", "boxc_parent_work_title", "children_count" }; public static final CSVFormat CSV_OUTPUT_FORMAT = CSVFormat.Builder.create() .setHeader(CSV_HEADERS) .build(); diff --git a/src/test/java/edu/unc/lib/boxc/migration/cdm/services/MigrationTypeReportServiceTest.java b/src/test/java/edu/unc/lib/boxc/migration/cdm/services/MigrationTypeReportServiceTest.java index 56427376..88447f14 100644 --- a/src/test/java/edu/unc/lib/boxc/migration/cdm/services/MigrationTypeReportServiceTest.java +++ b/src/test/java/edu/unc/lib/boxc/migration/cdm/services/MigrationTypeReportServiceTest.java @@ -51,9 +51,9 @@ public void setup() throws Exception { public void reportCountWorksTest() throws Exception { reportGenerator.init(); reportGenerator.addRow("25", CDM_URL_1, "Work", BOXC_URL_1, "Redoubt C", - null, "", "", 1); + null, null, null, "", "", 1); reportGenerator.addRow("26", CDM_URL_2, "File", BOXC_URL_2, "A file", - null, BOXC_URL_1, "Redoubt C", null); + null, null, null, BOXC_URL_1, "Redoubt C", null); reportGenerator.closeCsv(); long numWorks = service.countWorks(); @@ -64,11 +64,11 @@ public void reportCountWorksTest() throws Exception { public void reportCountFilesTest() throws Exception { reportGenerator.init(); reportGenerator.addRow("25", CDM_URL_1, "Work", BOXC_URL_1, "Redoubt C", - null, "", "", 1); + null, null, null, "", "", 1); reportGenerator.addRow("26", CDM_URL_2, "File", BOXC_URL_2, "A file", - null, BOXC_URL_1, "Redoubt C", null); + null, null, null, BOXC_URL_1, "Redoubt C", null); reportGenerator.addRow("27", CDM_URL_3, "File", BOXC_URL_3, "A file", - null, BOXC_URL_1, "Redoubt C", null); + null, null, null, BOXC_URL_1, "Redoubt C", null); reportGenerator.closeCsv(); long numFiles = service.countFiles(); diff --git a/src/test/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportServiceTest.java b/src/test/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportServiceTest.java index 0d860656..bc72d6dd 100644 --- a/src/test/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportServiceTest.java +++ b/src/test/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportServiceTest.java @@ -1,16 +1,22 @@ package edu.unc.lib.boxc.migration.cdm.services; import edu.unc.lib.boxc.migration.cdm.model.MigrationProject; +import edu.unc.lib.boxc.migration.cdm.model.SourceFilesInfo; import edu.unc.lib.boxc.migration.cdm.test.BxcEnvironmentHelper; import edu.unc.lib.boxc.migration.cdm.test.CdmEnvironmentHelper; import edu.unc.lib.boxc.migration.cdm.test.SipServiceHelper; +import edu.unc.lib.boxc.migration.cdm.util.ProjectPropertiesSerialization; +import org.apache.commons.io.FileUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; +import java.time.Instant; import static edu.unc.lib.boxc.migration.cdm.test.PostMigrationReportTestHelper.assertContainsRow; import static edu.unc.lib.boxc.migration.cdm.test.PostMigrationReportTestHelper.parseReport; @@ -34,6 +40,7 @@ public class PostMigrationReportServiceTest { private MigrationProject project; private SipServiceHelper testHelper; private DescriptionsService descriptionsService; + private SourceFileService sourceFileService; private PostMigrationReportService service; @BeforeEach @@ -44,11 +51,13 @@ public void setup() throws Exception { CdmEnvironmentHelper.DEFAULT_ENV_ID, BxcEnvironmentHelper.DEFAULT_ENV_ID); testHelper = new SipServiceHelper(project, tmpFolder); descriptionsService = testHelper.getDescriptionsService(); + sourceFileService = testHelper.getSourceFileService(); service = new PostMigrationReportService(); service.setProject(project); service.setChompbConfig(testHelper.getChompbConfig()); service.setDescriptionsService(testHelper.getDescriptionsService()); + service.setSourceFileService(testHelper.getSourceFileService()); service.init(); } @@ -59,6 +68,9 @@ void closeService() throws Exception { @Test public void addSingleItemTest() throws Exception { + testHelper.indexExportData("mini_gilmer"); + Path srcPath1 = testHelper.addSourceFile("25.txt"); + writeSourceFileCsv(mappingBody("25,," + srcPath1 +",")); testHelper.populateDescriptions("gilmer_mods1.xml"); service.addWorkRow("25", BOXC_ID_1, 1, true); @@ -72,6 +84,8 @@ public void addSingleItemTest() throws Exception { BOXC_URL_1, "Redoubt C", "", + srcPath1.toString(), + "", "", "", "1"); @@ -81,6 +95,8 @@ public void addSingleItemTest() throws Exception { BOXC_URL_2, "", "", + srcPath1.toString(), + "", BOXC_URL_1, "Redoubt C", ""); @@ -88,6 +104,9 @@ public void addSingleItemTest() throws Exception { @Test public void addSingleItemWithFileDescTest() throws Exception { + testHelper.indexExportData("mini_gilmer"); + Path srcPath1 = testHelper.addSourceFile("25.txt"); + writeSourceFileCsv(mappingBody("25,," + srcPath1 +",")); testHelper.populateDescriptions("gilmer_mods1.xml", "gilmer_mods_children.xml"); service.addWorkRow("25", BOXC_ID_1, 1, true); @@ -101,6 +120,8 @@ public void addSingleItemWithFileDescTest() throws Exception { BOXC_URL_1, "Redoubt C", "", + srcPath1.toString(), + "", "", "", "1"); @@ -110,6 +131,8 @@ public void addSingleItemWithFileDescTest() throws Exception { BOXC_URL_2, "Redoubt C Scan File", "", + srcPath1.toString(), + "", BOXC_URL_1, "Redoubt C", ""); @@ -117,6 +140,10 @@ public void addSingleItemWithFileDescTest() throws Exception { @Test public void addGroupedTest() throws Exception { + testHelper.indexExportData("grouped_gilmer"); + Path srcPath1 = testHelper.addSourceFile("26.txt"); + Path srcPath2 = testHelper.addSourceFile("27.txt"); + writeSourceFileCsv(mappingBody("26,," + srcPath1 +",", "27,," + srcPath2 +",")); testHelper.populateDescriptions("grouped_mods.xml"); service.addWorkRow("grp:groupa:group1", BOXC_ID_1, 2, false); @@ -133,6 +160,8 @@ public void addGroupedTest() throws Exception { "", "", "", + "", + "", "2"); assertContainsRow(rows, "26", "http://localhost/cdm/singleitem/collection/proj/id/26", @@ -140,6 +169,8 @@ public void addGroupedTest() throws Exception { BOXC_URL_2, "Plan of Battery McIntosh", "", + srcPath1.toString(), + "", BOXC_URL_1, "Folder Group 1", ""); @@ -149,6 +180,8 @@ public void addGroupedTest() throws Exception { BOXC_URL_3, "Fort DeRussy on Red River, Louisiana", "", + srcPath2.toString(), + "", BOXC_URL_1, "Folder Group 1", ""); @@ -157,6 +190,9 @@ public void addGroupedTest() throws Exception { @Test public void addCompoundTest() throws Exception { testHelper.indexExportData(Paths.get("src/test/resources/keepsakes_fields.csv"), "mini_keepsakes"); + Path srcPath1 = testHelper.addSourceFile("nccg_ck_1042-22_v1.tif"); + Path srcPath2 = testHelper.addSourceFile("nccg_ck_1042-22_v2.tif"); + writeSourceFileCsv(mappingBody("602,," + srcPath1 +",", "603,," + srcPath2 +",")); descriptionsService.generateDocuments(true); descriptionsService.expandDescriptions(); @@ -174,6 +210,8 @@ public void addCompoundTest() throws Exception { "", "", "", + "", + "", "2"); assertContainsRow(rows, "602", "http://localhost/cdm/singleitem/collection/proj/id/602", @@ -181,6 +219,8 @@ public void addCompoundTest() throws Exception { BOXC_URL_2, "World War II ration book", "", + srcPath1.toString(), + "", BOXC_URL_1, "Tiffany's pillbox commemorating UNC's bicentennial (closed, in box)", ""); @@ -190,8 +230,22 @@ public void addCompoundTest() throws Exception { BOXC_URL_3, "World War II ration book (instructions)", "", + srcPath2.toString(), + "", BOXC_URL_1, "Tiffany's pillbox commemorating UNC's bicentennial (closed, in box)", ""); } + + private String mappingBody(String... rows) { + return String.join(",", SourceFilesInfo.CSV_HEADERS) + "\n" + + String.join("\n", rows); + } + + private void writeSourceFileCsv(String mappingBody) throws IOException { + FileUtils.write(project.getSourceFilesMappingPath().toFile(), + mappingBody, StandardCharsets.UTF_8); + project.getProjectProperties().setSourceFilesUpdatedDate(Instant.now()); + ProjectPropertiesSerialization.write(project); + } } diff --git a/src/test/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportVerifierTest.java b/src/test/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportVerifierTest.java index 16a70c13..c014b1b5 100644 --- a/src/test/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportVerifierTest.java +++ b/src/test/java/edu/unc/lib/boxc/migration/cdm/services/PostMigrationReportVerifierTest.java @@ -82,9 +82,9 @@ public void reportVerifySuccessTest() throws Exception { reportGenerator.init(); reportGenerator.addRow("25", CDM_URL_1, "Work", BOXC_URL_1, "Redoubt C", - null, "", "", 1); + null, null, null, "", "", 1); reportGenerator.addRow("26", CDM_URL_2, "File", BOXC_URL_2, "A file", - null, BOXC_URL_1, "Redoubt C", null); + null, null, null, BOXC_URL_1, "Redoubt C", null); reportGenerator.closeCsv(); var outcome = verifier.verify(); @@ -98,6 +98,8 @@ public void reportVerifySuccessTest() throws Exception { "Work", BOXC_URL_1, "Redoubt C", + "", + "", HttpStatus.OK.name(), "", "", @@ -107,6 +109,8 @@ public void reportVerifySuccessTest() throws Exception { "File", BOXC_URL_2, "A file", + "", + "", HttpStatus.OK.name(), BOXC_URL_1, "Redoubt C", @@ -120,9 +124,9 @@ public void reportVerifyErrorsTest() throws Exception { reportGenerator.init(); reportGenerator.addRow("25", CDM_URL_1, "Work", BOXC_URL_1, "Redoubt C", - null, "", "", 1); + null, null, null, "", "", 1); reportGenerator.addRow("26", CDM_URL_2, "File", BOXC_URL_2, "A file", - null, BOXC_URL_1, "Redoubt C", null); + null, null, null, BOXC_URL_1, "Redoubt C", null); reportGenerator.closeCsv(); var outcome = verifier.verify(); @@ -136,6 +140,8 @@ public void reportVerifyErrorsTest() throws Exception { "Work", BOXC_URL_1, "Redoubt C", + "", + "", HttpStatus.NOT_FOUND.name(), "", "", @@ -145,6 +151,8 @@ public void reportVerifyErrorsTest() throws Exception { "File", BOXC_URL_2, "A file", + "", + "", HttpStatus.NOT_FOUND.name(), BOXC_URL_1, "Redoubt C", @@ -157,9 +165,9 @@ public void reportVerifyPartialTest() throws Exception { reportGenerator.init(); reportGenerator.addRow("25", CDM_URL_1, "Work", BOXC_URL_1, "Redoubt C", - HttpStatus.OK.name(), "", "", 1); + null, null, HttpStatus.OK.name(), "", "", 1); reportGenerator.addRow("26", CDM_URL_2, "File", BOXC_URL_2, "A file", - null, BOXC_URL_1, "Redoubt C", null); + null, null, null, BOXC_URL_1, "Redoubt C", null); reportGenerator.closeCsv(); var outcome = verifier.verify(); @@ -173,6 +181,8 @@ public void reportVerifyPartialTest() throws Exception { "Work", BOXC_URL_1, "Redoubt C", + "", + "", HttpStatus.OK.name(), "", "", @@ -182,6 +192,8 @@ public void reportVerifyPartialTest() throws Exception { "File", BOXC_URL_2, "A file", + "", + "", HttpStatus.OK.name(), BOXC_URL_1, "Redoubt C", diff --git a/src/test/java/edu/unc/lib/boxc/migration/cdm/services/SipServiceTest.java b/src/test/java/edu/unc/lib/boxc/migration/cdm/services/SipServiceTest.java index b7762db8..211d0018 100644 --- a/src/test/java/edu/unc/lib/boxc/migration/cdm/services/SipServiceTest.java +++ b/src/test/java/edu/unc/lib/boxc/migration/cdm/services/SipServiceTest.java @@ -745,7 +745,7 @@ public void generateSipsWithGroupedWorkAndRedirectMapping() throws Exception { testHelper.indexExportData("mini_gilmer"); testHelper.generateDefaultDestinationsMapping(DEST_UUID, null); testHelper.populateDescriptions("grouped_mods.xml"); - testHelper.populateSourceFiles("276_182_E.tif", "276_183_E.tif", "276_203_E.tif"); + List paths = testHelper.populateSourceFiles("276_182_E.tif", "276_183_E.tif", "276_203_E.tif"); setupGroupIndex(); @@ -775,11 +775,15 @@ public void generateSipsWithGroupedWorkAndRedirectMapping() throws Exception { "Folder Group 1", "", "", + "", + "", "2"); assertContainsRow(pmRows, "25", "http://localhost/cdm/singleitem/collection/proj/id/25", "File", "", + "276_182_E.tif", + paths.get(0).toString(), "", "Folder Group 1", ""); @@ -787,6 +791,8 @@ public void generateSipsWithGroupedWorkAndRedirectMapping() throws Exception { "http://localhost/cdm/singleitem/collection/proj/id/26", "File", "Plan of Battery McIntosh", + "276_183_E.tif", + paths.get(1).toString(), "", "Folder Group 1", ""); @@ -794,9 +800,20 @@ public void generateSipsWithGroupedWorkAndRedirectMapping() throws Exception { "http://localhost/cdm/singleitem/collection/proj/id/27", "Work", "Fort DeRussy on Red River, Louisiana", + "276_203_E.tif", + paths.get(2).toString(), "", "", "1"); + assertContainsRow(pmRows, "27/original_file", + "http://localhost/cdm/singleitem/collection/proj/id/27", + "File", + "", + "276_203_E.tif", + paths.get(2).toString(), + "", + "Fort DeRussy on Red River, Louisiana", + ""); } @Test diff --git a/src/test/java/edu/unc/lib/boxc/migration/cdm/test/PostMigrationReportTestHelper.java b/src/test/java/edu/unc/lib/boxc/migration/cdm/test/PostMigrationReportTestHelper.java index 39e71e24..18819dd1 100644 --- a/src/test/java/edu/unc/lib/boxc/migration/cdm/test/PostMigrationReportTestHelper.java +++ b/src/test/java/edu/unc/lib/boxc/migration/cdm/test/PostMigrationReportTestHelper.java @@ -36,24 +36,27 @@ public static List> parseReport(MigrationProject project) throws Ex // Assert row matches, without verifying the bxc urls in case the ids are unknown public static void assertContainsRow(List> rows, String cdmId, String cdmUrl, String objType, - String bxcTitle, String verified, String parentTitle, String childCount) { + String bxcTitle, String matchingValue, String sourceFile, + String verified, String parentTitle, String childCount) { var found = rows.stream().filter(r -> r.get(0).equals(cdmId)).findFirst().orElse(null); assertNotNull(found, "Did not find row for CDM id" + cdmId); assertEquals(cdmUrl, found.get(1)); assertEquals(objType, found.get(2)); assertEquals(bxcTitle, found.get(4)); - assertEquals(verified, found.get(5)); - assertEquals(parentTitle, found.get(7)); - assertEquals(childCount, found.get(8)); + assertEquals(matchingValue, found.get(5)); + assertEquals(sourceFile, found.get(6)); + assertEquals(verified, found.get(7)); + assertEquals(parentTitle, found.get(9)); + assertEquals(childCount, found.get(10)); } // Assert row matches all provided fields public static void assertContainsRow(List> rows, String cdmId, String cdmUrl, String objType, - String bxcUrl, String bxcTitle, String verified, String parentUrl, - String parentTitle, String childCount) { + String bxcUrl, String bxcTitle, String matchingValue, String sourceFile, + String verified, String parentUrl, String parentTitle, String childCount) { var found = rows.stream().filter(r -> r.get(0).equals(cdmId)).findFirst().orElse(null); assertNotNull(found, "Did not find row for CDM id " + cdmId + ", rows were:\n" + rows); - assertEquals(Arrays.asList(cdmId, cdmUrl, objType, bxcUrl, bxcTitle, verified, parentUrl, - parentTitle, childCount), found); + assertEquals(Arrays.asList(cdmId, cdmUrl, objType, bxcUrl, bxcTitle, matchingValue, sourceFile, verified, + parentUrl, parentTitle, childCount), found); } }