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

Commit

Permalink
Merge pull request #27 from novoda/more_printer_customizations
Browse files Browse the repository at this point in the history
Enable custom code generation
  • Loading branch information
friedger committed Apr 3, 2015
2 parents 1f70429 + e1b4fdf commit 4034e83
Show file tree
Hide file tree
Showing 40 changed files with 329 additions and 743 deletions.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.novoda.sqlite.generator

import com.novoda.sqlite.Analyzer
import com.novoda.sqlite.model.Database
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction

import java.sql.Connection

/**
* This task runs the SqliteAnalyzer to generate code to describe the database tables and columns.
*
Expand All @@ -19,14 +18,15 @@ abstract class BaseGenerateCode extends DefaultTask {
@OutputDirectory
File outputDir

String packageName = "com.novoda.database"
@Input
String packageName

boolean generateAuto = false
Closure classGeneration

@TaskAction
void generate() {
Database database = analyzeDb()
generateCode(database)
classGeneration(database, outputDir)
}

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

protected abstract Connection createConnection()

private void generateCode(Database database) {
def dBPrinter = new DBPrinter()
dBPrinter.packageName = packageName
dBPrinter.targetDir = makeFileDir().absolutePath
dBPrinter.printers = [new ColumnsGenerator(database), new TableNamesGenerator(database)]
database.getTables().each { table ->
dBPrinter.printers << new TableGenerator(table)
}
dBPrinter.print()
if (generateAuto)
new AutoPrinter(database, outputDir).print()
}

private File makeFileDir() {
String packageAsDir = packageName.replaceAll(~/\./, "/")
def fileDir = new File(outputDir, packageAsDir)
fileDir.mkdirs()
return fileDir
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.novoda.sqlite.generator

import groovy.text.GStringTemplateEngine

class ClassEmitter {

def template
def templateData
File baseDir
String packageName
String className

private final GStringTemplateEngine engine = new GStringTemplateEngine()

public void print() {
def targetDir = makeFileDir()
new FileWriter("${targetDir}/${className}.java").withWriter { Writer writer ->
engine.createTemplate(template)
.make(access: templateData, packageName: packageName, className: className)
.writeTo(writer)
}
}

private String makeFileDir() {
String packageAsDir = packageName.replaceAll(~/\./, "/")
def fileDir = new File(baseDir, packageAsDir)
fileDir.mkdirs()
return fileDir.absolutePath
}
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit 4034e83

Please sign in to comment.