protected List convertToRecords()

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;
	}