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
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
;
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
);
31 * @return The file configuration to use.
34 abstract public Property
<Files
> files();
40 public void generateCode() {
41 DaggerYoSQLComponent
.builder()
42 .runtimeConfiguration(createConfiguration())
43 .locale(determineLocale())
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())
60 private Locale
determineLocale() {
61 return SUPPORTED_LOCALES
.stream()
62 .filter(Locale
.getDefault()::equals
)
64 .orElse(Locale
.ENGLISH
);