in schema-induction/src/main/java/aws/json/schema/induction/Cli.java [62:124]
public int run(String[] args) throws Exception {
Options opt = new Options();
CommandLine cmd = new CommandLine(opt);
CommandLine.ParseResult parseResult = cmd.parseArgs(args);
if (!parseResult.errors().isEmpty()) {
System.err.println(parseResult.errors());
return -1;
}
if (cmd.isUsageHelpRequested()) {
cmd.usage(System.out);
return 0;
}
InputStreamReader inStream;
if (opt.inputFile.startsWith("s3:")) {
AmazonS3 s3;
if (opt.s3.compareToIgnoreCase("profile") == 0) {
s3 = AmazonS3Client.builder().withCredentials(new ProfileCredentialsProvider())
.withRegion(opt.region).build();
} else {
s3 = AmazonS3Client.builder().withCredentials(new EC2ContainerCredentialsProviderWrapper()).build();
}
final AmazonS3URI inputUri = new AmazonS3URI(opt.inputFile);
String bucket_name = inputUri.getBucket();
String key_name = inputUri.getKey();
try {
final S3Object s3Object = s3.getObject(bucket_name, key_name);
final S3ObjectInputStream objectInputStream = s3Object.getObjectContent();
inStream = new InputStreamReader(objectInputStream);
} catch (Exception e) {
throw new RuntimeException("Error reading input file " + opt.inputFile,e);
}
} else {
File dataFile = new File(opt.inputFile);
if (!dataFile.exists()) {
throw new RuntimeException("Error reading input file " + opt.inputFile);
}
inStream = new InputStreamReader(new FileInputStream(dataFile), "UTF-8");
}
JsonStructureBuilder builder = new JsonStructureBuilder(opt.isArray);
JsonPathsReader reader = new JsonPathsReader(builder);
reader.readStream(inStream, opt.isArray);
logger.info("total number of unique paths: " + builder.getPaths().size());
if (opt.outSchemaFile != null) {
JsonSchemaGenerator schemaGenerator = new JsonSchemaGenerator();
ObjectNode schema = schemaGenerator.generateSchemaTree(builder.getRoot(), opt.rootDefinition);
PrintWriter sWriter = new PrintWriter(new FileWriter(opt.outSchemaFile));
sWriter.print(schemaGenerator.prettyPrintJsonString(schema));
sWriter.close();
}
if (opt.outDdlFile != null) {
PrintWriter ddlWriter = new PrintWriter(new FileWriter(opt.outDdlFile));
RedshiftDDLGenerator redshiftDDLGenerator = new RedshiftDDLGenerator();
redshiftDDLGenerator.writeDDL(builder.getRoot(), opt.tableName, opt.tableLocation, opt.isArray,ddlWriter);
ddlWriter.close();
}
return 0;
}