Skip to content
This repository was archived by the owner on Feb 11, 2022. It is now read-only.

Commit 4034e83

Browse files
committed
Merge pull request #27 from novoda/more_printer_customizations
Enable custom code generation
2 parents 1f70429 + e1b4fdf commit 4034e83

40 files changed

Lines changed: 329 additions & 743 deletions

analyzer/src/main/groovy/com/novoda/sqlite/generator/AutoFieldGenerator.groovy

Lines changed: 0 additions & 28 deletions
This file was deleted.

analyzer/src/main/groovy/com/novoda/sqlite/generator/AutoPrinter.groovy

Lines changed: 0 additions & 44 deletions
This file was deleted.

analyzer/src/main/groovy/com/novoda/sqlite/generator/AutoTableGenerator.groovy

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package com.novoda.sqlite.generator
2-
32
import com.novoda.sqlite.Analyzer
43
import com.novoda.sqlite.model.Database
54
import org.gradle.api.DefaultTask
5+
import org.gradle.api.tasks.Input
66
import org.gradle.api.tasks.OutputDirectory
77
import org.gradle.api.tasks.TaskAction
88

99
import java.sql.Connection
10-
1110
/**
1211
* This task runs the SqliteAnalyzer to generate code to describe the database tables and columns.
1312
*
@@ -19,14 +18,15 @@ abstract class BaseGenerateCode extends DefaultTask {
1918
@OutputDirectory
2019
File outputDir
2120

22-
String packageName = "com.novoda.database"
21+
@Input
22+
String packageName
2323

24-
boolean generateAuto = false
24+
Closure classGeneration
2525

2626
@TaskAction
2727
void generate() {
2828
Database database = analyzeDb()
29-
generateCode(database)
29+
classGeneration(database, outputDir)
3030
}
3131

3232
private Database analyzeDb() {
@@ -38,24 +38,5 @@ abstract class BaseGenerateCode extends DefaultTask {
3838

3939
protected abstract Connection createConnection()
4040

41-
private void generateCode(Database database) {
42-
def dBPrinter = new DBPrinter()
43-
dBPrinter.packageName = packageName
44-
dBPrinter.targetDir = makeFileDir().absolutePath
45-
dBPrinter.printers = [new ColumnsGenerator(database), new TableNamesGenerator(database)]
46-
database.getTables().each { table ->
47-
dBPrinter.printers << new TableGenerator(table)
48-
}
49-
dBPrinter.print()
50-
if (generateAuto)
51-
new AutoPrinter(database, outputDir).print()
52-
}
53-
54-
private File makeFileDir() {
55-
String packageAsDir = packageName.replaceAll(~/\./, "/")
56-
def fileDir = new File(outputDir, packageAsDir)
57-
fileDir.mkdirs()
58-
return fileDir
59-
}
6041
}
6142

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.novoda.sqlite.generator
2+
3+
import groovy.text.GStringTemplateEngine
4+
5+
class ClassEmitter {
6+
7+
def template
8+
def templateData
9+
File baseDir
10+
String packageName
11+
String className
12+
13+
private final GStringTemplateEngine engine = new GStringTemplateEngine()
14+
15+
public void print() {
16+
def targetDir = makeFileDir()
17+
new FileWriter("${targetDir}/${className}.java").withWriter { Writer writer ->
18+
engine.createTemplate(template)
19+
.make(access: templateData, packageName: packageName, className: className)
20+
.writeTo(writer)
21+
}
22+
}
23+
24+
private String makeFileDir() {
25+
String packageAsDir = packageName.replaceAll(~/\./, "/")
26+
def fileDir = new File(baseDir, packageAsDir)
27+
fileDir.mkdirs()
28+
return fileDir.absolutePath
29+
}
30+
}

analyzer/src/main/groovy/com/novoda/sqlite/generator/ColumnAndroidCategory.groovy

Lines changed: 0 additions & 28 deletions
This file was deleted.

analyzer/src/main/groovy/com/novoda/sqlite/generator/ColumnJavaCategory.groovy

Lines changed: 0 additions & 39 deletions
This file was deleted.

analyzer/src/main/groovy/com/novoda/sqlite/generator/ColumnsGenerator.groovy

Lines changed: 0 additions & 33 deletions
This file was deleted.

analyzer/src/main/groovy/com/novoda/sqlite/generator/DBPrinter.groovy

Lines changed: 0 additions & 31 deletions
This file was deleted.

analyzer/src/main/groovy/com/novoda/sqlite/generator/GetAutoTableCreateGenerator.groovy

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)