Search in sources :

Example 1 with SourceGenerator

use of won.shacl2java.sourcegen.SourceGenerator in project webofneeds by researchstudio-sat.

the class Shacl2JavaSrcGenCommand method main.

public static void main(String[] args) {
    Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
    root.setLevel(Level.WARN);
    System.out.println(String.format("running %s %s", MethodHandles.lookup().lookupClass().getName(), Stream.of(args).collect(Collectors.joining(" "))));
    SingleCommand<Shacl2JavaSrcGenCommand> parser;
    Shacl2JavaSrcGenCommand cmd = null;
    parser = SingleCommand.singleCommand(Shacl2JavaSrcGenCommand.class);
    try {
        cmd = parser.parse(args);
    } catch (ParseArgumentsMissingException e) {
        System.err.println(e.getMessage());
        CliCommandUsageGenerator usageMessageGenerator = new CliCommandUsageGenerator();
        printUsage(parser, usageMessageGenerator);
        System.exit(3);
    }
    SourceGenerator generator = new SourceGenerator();
    Shacl2JavaConfig config = Shacl2JavaConfig.builder().abbreviateTypeIndicators(cmd.abbreviateFieldTypeIndicators).alwaysAddTypeIndicator(cmd.alwaysAddFieldTypeIndicator).outputDir(cmd.outputDir).classNameRegexReplace(cmd.classnameRegexReplace.get(0), cmd.classnameRegexReplace.get(1)).packageName(cmd.packageName).addVisitorClassesString(cmd.visitorClasses).interfacesForRdfTypes(cmd.interfacesForRdfTypes).build();
    String currentFile = null;
    try {
        for (String shapesFile : cmd.shapesFiles) {
            currentFile = shapesFile;
            SourceGeneratorStats stats = generator.generate(new File(shapesFile), config);
            if (!cmd.quiet) {
                System.out.println(String.format("Shacl2Java source generation stats for %s", shapesFile));
                System.out.println(stats.formatted());
                System.out.println(String.format("(run with option '-q' to suppress this output)", shapesFile));
            }
        }
    } catch (IOException e) {
        System.err.println(String.format("Cannot generate classes into %s from shapes file %s - %s: %s", config.getOutputDir(), currentFile, e.getClass().getSimpleName(), e.getMessage()));
        if (!cmd.quiet) {
            e.printStackTrace(System.err);
        }
        System.exit(1);
    }
}
Also used : SourceGeneratorStats(won.shacl2java.sourcegen.SourceGeneratorStats) CliCommandUsageGenerator(com.github.rvesse.airline.help.cli.CliCommandUsageGenerator) ParseArgumentsMissingException(com.github.rvesse.airline.parser.errors.ParseArgumentsMissingException) SourceGenerator(won.shacl2java.sourcegen.SourceGenerator) IOException(java.io.IOException) Logger(ch.qos.logback.classic.Logger) File(java.io.File)

Example 2 with SourceGenerator

use of won.shacl2java.sourcegen.SourceGenerator in project webofneeds by researchstudio-sat.

the class SourceGeneratorTests method test1.

@Test
public void test1() throws IOException {
    Shapes shapes = loadShapes(testBaseFolder.createRelative("test1/shapes.ttl"));
    String outputDir = getOutputDir().getAbsolutePath();
    Shacl2JavaConfig config = Shacl2JavaConfig.builder().packageName("test1").outputDir(outputDir).build();
    SourceGenerator gen = new SourceGenerator();
    Set<TypeSpec> typeSpecs = gen.generateTypes(shapes, config);
    SourceGenerator.writeClasses(typeSpecs, config);
    logger.debug("wrote classes to {} ", outputDir);
}
Also used : SourceGenerator(won.shacl2java.sourcegen.SourceGenerator) Shapes(org.apache.jena.shacl.Shapes) TypeSpec(com.squareup.javapoet.TypeSpec) Test(org.junit.Test)

Example 3 with SourceGenerator

use of won.shacl2java.sourcegen.SourceGenerator in project webofneeds by researchstudio-sat.

the class SourceGeneratorTests method test3.

@Test
public void test3() throws IOException {
    Shapes shapes = loadShapes(testBaseFolder.createRelative("test3/shapes.ttl"));
    String outputDir = getOutputDir().getAbsolutePath();
    Shacl2JavaConfig config = Shacl2JavaConfig.builder().packageName("test3").classNameRegexReplace("(Property)?Shape$", "").outputDir(outputDir).build();
    SourceGenerator gen = new SourceGenerator();
    Set<TypeSpec> typeSpecs = gen.generateTypes(shapes, config);
    SourceGenerator.writeClasses(typeSpecs, config);
    logger.debug("wrote classes to {} ", outputDir);
}
Also used : SourceGenerator(won.shacl2java.sourcegen.SourceGenerator) Shapes(org.apache.jena.shacl.Shapes) TypeSpec(com.squareup.javapoet.TypeSpec) Test(org.junit.Test)

Example 4 with SourceGenerator

use of won.shacl2java.sourcegen.SourceGenerator in project webofneeds by researchstudio-sat.

the class SourceGeneratorTests method test2.

@Test
public void test2() throws IOException {
    Shapes shapes = loadShapes(testBaseFolder.createRelative("test2/shapes.ttl"));
    String outputDir = getOutputDir().getAbsolutePath();
    Shacl2JavaConfig config = Shacl2JavaConfig.builder().packageName("test2").classNameRegexReplace("(Property)?Shape$", "").addVisitorClass(URI.create("https://w3id.org/won/auth#TreeExpressionShape")).outputDir(outputDir).build();
    SourceGenerator gen = new SourceGenerator();
    Set<TypeSpec> typeSpecs = gen.generateTypes(shapes, config);
    SourceGenerator.writeClasses(typeSpecs, config);
    logger.debug("wrote classes to {} ", outputDir);
}
Also used : SourceGenerator(won.shacl2java.sourcegen.SourceGenerator) Shapes(org.apache.jena.shacl.Shapes) TypeSpec(com.squareup.javapoet.TypeSpec) Test(org.junit.Test)

Example 5 with SourceGenerator

use of won.shacl2java.sourcegen.SourceGenerator in project webofneeds by researchstudio-sat.

the class Shacl2JavaTestSourcesGenerator method generateInDir.

private static void generateInDir(File inputDirFile, File outputDirFile) throws IOException {
    outputDirFile.mkdirs();
    File[] testfolders = inputDirFile.listFiles((FileFilter) DirectoryFileFilter.INSTANCE);
    for (int i = 0; i < Objects.requireNonNull(testfolders).length; i++) {
        logger.debug("Processing test folder {}", testfolders[i]);
        String packageName = testfolders[i].getName();
        Shapes shapes = loadShapes(new File(testfolders[i], "shapes.ttl").toURI().toURL());
        Shacl2JavaConfig config = Shacl2JavaConfig.builder().packageName(packageName).classNameRegexReplace("(Property)?Shape$", "").abbreviateTypeIndicators(false).alwaysAddTypeIndicator(false).addVisitorClass(URI.create("https://w3id.org/won/auth#TreeExpressionShape")).outputDir(outputDirFile.getAbsolutePath()).build();
        SourceGenerator gen = new SourceGenerator();
        Set<TypeSpec> typeSpecs = gen.generateTypes(shapes, config);
        SourceGenerator.writeClasses(typeSpecs, config);
        logger.debug("wrote classes to {} ", outputDirFile);
    }
}
Also used : Shacl2JavaConfig(won.shacl2java.Shacl2JavaConfig) SourceGenerator(won.shacl2java.sourcegen.SourceGenerator) Shapes(org.apache.jena.shacl.Shapes) File(java.io.File) TypeSpec(com.squareup.javapoet.TypeSpec)

Aggregations

SourceGenerator (won.shacl2java.sourcegen.SourceGenerator)5 TypeSpec (com.squareup.javapoet.TypeSpec)4 Shapes (org.apache.jena.shacl.Shapes)4 Test (org.junit.Test)3 File (java.io.File)2 Logger (ch.qos.logback.classic.Logger)1 CliCommandUsageGenerator (com.github.rvesse.airline.help.cli.CliCommandUsageGenerator)1 ParseArgumentsMissingException (com.github.rvesse.airline.parser.errors.ParseArgumentsMissingException)1 IOException (java.io.IOException)1 Shacl2JavaConfig (won.shacl2java.Shacl2JavaConfig)1 SourceGeneratorStats (won.shacl2java.sourcegen.SourceGeneratorStats)1