configure Files as FilesConfiguration
[yosql.git] / yosql-tooling / yosql-tooling-gradle / src / main / java / wtf / metio / yosql / tooling / gradle / GenerateTask.java
blob8755fe72f597de39401362a606abd16b9c002042
1 /*
2 * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level
3 * directory of this distribution and at http://creativecommons.org/publicdomain/zero/1.0/. No part of yosql,
4 * including this file, may be copied, modified, propagated, or distributed except according to the terms contained
5 * in the LICENSE file.
6 */
8 package wtf.metio.yosql.tooling.gradle;
10 import org.gradle.api.DefaultTask;
11 import org.gradle.api.model.ObjectFactory;
12 import org.gradle.api.provider.Property;
13 import org.gradle.api.provider.Provider;
14 import org.gradle.api.tasks.Input;
15 import org.gradle.api.tasks.Internal;
16 import org.gradle.api.tasks.TaskAction;
17 import wtf.metio.yosql.models.immutables.*;
18 import wtf.metio.yosql.tooling.dagger.DaggerYoSQLComponent;
20 import java.util.List;
21 import java.util.Locale;
23 /**
24 * Generate Java code by reading SQL code.
26 public abstract class GenerateTask extends DefaultTask {
28 private static final List<Locale> SUPPORTED_LOCALES = List.of(Locale.ENGLISH, Locale.GERMAN);
30 /**
31 * @return The file configuration to use.
33 @Input
34 abstract public Property<Files> files();
36 /**
37 * Generate Java code.
39 @TaskAction
40 public void generateCode() {
41 DaggerYoSQLComponent.builder()
42 .runtimeConfiguration(createConfiguration())
43 .locale(determineLocale())
44 .build()
45 .yosql();
48 private RuntimeConfiguration createConfiguration() {
49 return RuntimeConfiguration.builder()
50 .setFiles(files().flatMap(Files::fileConfiguration).get())
51 .setAnnotations(AnnotationsConfiguration.usingDefaults().build())
52 .setJava(JavaConfiguration.usingDefaults().build())
53 .setApi(ApiConfiguration.usingDefaults().build())
54 .setRepositories(RepositoriesConfiguration.usingDefaults().build())
55 .setResources(ResourcesConfiguration.usingDefaults().build())
56 .setJdbc(JdbcConfiguration.usingDefaults().build())
57 .build();
60 private Locale determineLocale() {
61 return SUPPORTED_LOCALES.stream()
62 .filter(Locale.getDefault()::equals)
63 .findFirst()
64 .orElse(Locale.ENGLISH);