private void createTrainingJobConfigurationFile()

in src/main/java/com/amazonaws/services/neptune/profiles/neptune_ml/NeptuneMachineLearningExportEventHandlerV2.java [172:222]


    private void createTrainingJobConfigurationFile(TrainingDataWriterConfigV2 trainingDataWriterConfig,
                                                    Path outputPath,
                                                    GraphSchema graphSchema,
                                                    PropertyName propertyName,
                                                    TransferManagerWrapper transferManager) throws Exception {

        File outputDirectory = outputPath.toFile();
        String filename = String.format("%s.json", trainingDataWriterConfig.name());
        File trainingJobConfigurationFile = new File(outputPath.toFile(), filename);

        try (Writer writer = new PrintWriter(trainingJobConfigurationFile)) {
            if (dataModel == NeptuneMLSourceDataModel.RDF) {

                Collection<String> filenames = new ArrayList<>();

                File[] directories = outputDirectory.listFiles(File::isDirectory);

                for (File directory : directories) {
                    File[] files = directory.listFiles(File::isFile);
                    for (File file : files) {
                        filenames.add(outputDirectory.toPath().relativize(file.toPath()).toString());
                    }
                }

                new RdfTrainingDataConfigWriter(
                        filenames,
                        createJsonGenerator(writer),
                        trainingDataWriterConfig).write();
            } else {

                new PropertyGraphTrainingDataConfigWriterV2(
                        graphSchema,
                        createJsonGenerator(writer),
                        propertyName,
                        printerOptions,
                        trainingDataWriterConfig).write(includeEdgeFeatures);
            }
        }

        if (StringUtils.isNotEmpty(outputS3Path)) {
            Timer.timedActivity("uploading training job configuration file to S3",
                    (CheckedActivity.Runnable) () -> {
                        S3ObjectInfo outputS3ObjectInfo = calculateOutputS3Path(outputDirectory);
                        uploadTrainingJobConfigurationFileToS3(
                                filename,
                                transferManager.get(),
                                trainingJobConfigurationFile,
                                outputS3ObjectInfo);
                    });
        }
    }