in src/main/java/com/amazonaws/schemamanager/reports/SchemaManagerReporterS3.java [112:216]
protected List<ReportRecord> convertToRecords(CheckChangesResponse response){
List<ReportRecord> result = new LinkedList<>();
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
Date date = cal.getTime();
// Print new subjects in repository
if (response.getNewSubjectsInRepo() != null && response.getNewSubjectsInRepo().size() > 0) {
response.getNewSubjectsInRepo().forEach((s,r) -> {
ReportRecord rr = createRecord(date, config);
result.add(rr);
rr.setRepoSubjectName(s);
rr.setRepoPath(r.getPath());
rr.setSchemasEqual(false);
rr.setRepoCompatibility(r.getMetadata().getCompatibilityLevel(s).toString());
});
}
// Print Ambiguous issues
if (response.getAmbiguousSubjects() != null && response.getAmbiguousSubjects().size() > 0) {
response.getAmbiguousSubjects().forEach((s,l) -> {
l.forEach(r -> {
ReportRecord rr = createRecord(date, config);
result.add(rr);
rr.setRepoSubjectName(s);
rr.setRepoPath(r.getPath());
rr.setSchemasEqual(false);
rr.setRepoCompatibility(r.getMetadata().getCompatibilityLevel(s).toString());
rr.setDetails("Ambiguous Subjects");
});
});
}
// Updated compatibility levels
if (response.getUpdateCompatibility() != null && response.getUpdateCompatibility().size() > 0) {
response.getUpdateCompatibility().forEach((s,scp) -> {
RepoSchema repoSchema = scp.getRepoSchema();
Subject regSchema = scp.getRegistrySchema();
ReportRecord rr = createRecord(date, config);
result.add(rr);
rr.setRepoSubjectName(s);
rr.setRepoPath(repoSchema.getPath());
rr.setRepoCompatibility(repoSchema.getMetadata().getCompatibilityLevel(s).toString());
rr.setRegistrySubjectName(regSchema.getName());
rr.setRegistryCompatibility(regSchema.getCompatibility().toString());
if (response.getNewVersionFound() != null && response.getNewVersionFound().get(s) != null) {
rr.setSchemasEqual(false);
}
if (response.getNewVersionFound() != null && response.getNewVersionFound().get(s) != null
&& response.getCompatibilityErrors() != null && response.getCompatibilityErrors().get(s) == null ) {
rr.setSchemasCompatible(true);
}else if(response.getNewVersionFound() != null && response.getNewVersionFound().get(s) != null && response.getCompatibilityErrors().get(s) != null) {
rr.setSchemasCompatible(false);
rr.setDetails(String.join(";\n", response.getCompatibilityErrors().get(s).getErrors()));
}
});
}
// Updates in repository
if (response.getNewVersionFound() != null && response.getNewVersionFound().size() > 0) {
response.getNewVersionFound().forEach((s,scp) -> {
if (response.getUpdateCompatibility() != null && response.getUpdateCompatibility().get(s) != null) {
// previously handled with new compatibility
return;
}
ReportRecord rr = createRecord(date, config);
result.add(rr);
rr.setRepoSubjectName(s);
rr.setRepoPath(scp.getRepoSchema().getPath());
rr.setRepoCompatibility(scp.getRepoSchema().getMetadata().getCompatibilityLevel(s).toString());
rr.setRegistrySubjectName(scp.getRegistrySchema().getName());
rr.setRegistryCompatibility(scp.getRegistrySchema().getCompatibility().toString());
});
}
// Not in repository
if (response.getNotInRepositorySubjects() != null && response.getNotInRepositorySubjects().size() > 0) {
response.getNotInRepositorySubjects().forEach(s -> {
ReportRecord rr = createRecord(date, config);
result.add(rr);
rr.setRegistrySubjectName(s.getName());
rr.setRegistryCompatibility(s.getCompatibility().toString());
});
}
// Up to date:
if (response.getUnchangedSchemas() != null && response.getUnchangedSchemas().size() > 0) {
response.getUnchangedSchemas().forEach(scp -> {
ReportRecord rr = createRecord(date, config);
result.add(rr);
rr.setRepoSubjectName(scp.getRegistrySchema().getName());
rr.setRepoSchemaName(scp.getRepoSchema().getSchema().name());
rr.setRepoPath(scp.getRepoSchema().getPath());
rr.setSchemasEqual(true);
rr.setRepoCompatibility(scp.getRepoSchema().getMetadata().getCompatibilityLevel(scp.getRegistrySchema().getName()).toString());
rr.setRegistrySubjectName(scp.getRegistrySchema().getName());
rr.setRegistryCompatibility(scp.getRegistrySchema().getCompatibility().toString());
});
}
return result;
}