Skip to content

Instantly share code, notes, and snippets.

@bherrmann7
Created June 23, 2010 03:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bherrmann7/449466 to your computer and use it in GitHub Desktop.
Save bherrmann7/449466 to your computer and use it in GitHub Desktop.
Takes table columns and generates fields and get/setters for hibernate classes
// Takes table columns and generates fields and get/setters for hibernate classes
def schema = '''
full_name varchar(64) not null,
given_name varchar(32),
middle_initial varchar(1),
last_name varchar(32),
creation_time datetime, -- some comment
'''
def types = [
'varchar(32)':'String',
'varchar(64)':'String',
'datetime': 'Date',
'varchar(128)':'String',
'varchar(1)':'String',
'int':'int',
'varchar(16)':'String',
]
// assert schema2hibernate('take_this') == 'takeThis'
def schema2hibernate = { table_name ->
boolean lastUnder = false
table_name.collect {
if( it == '_' ){
lastUnder = true
return ''
}
if (lastUnder) {
lastUnder = false
return it.toUpperCase()
}
it
}.join('')
}
assert schema2hibernate('take_this') == 'takeThis'
def fields = []
def clfile = ""
schema.eachLine {
def dx = it.split('--')
if (!dx[0].trim())
return
def sections = dx[0].trim().split(' ').collect { it.replaceAll(',','') }
def field = [ type: types[sections[1]],
name: schema2hibernate(sections[0]),
dbname: sections[0] ]
clfile += " private $field.type $field.name;\n"
fields += field
}
// getter/setter
fields.each {
def methodName = it.name[0].toUpperCase()+it.name[1..-1]
clfile += """
@Column(name = "${it.dbname}")
public $it.type get$methodName(){
return $it.name;
}
public void set$methodName(){
this.$it.name = $it.name;
}
"""
}
java.awt.datatransfer.StringSelection data = new java.awt.datatransfer.StringSelection(clfile);
java.awt.Toolkit.getDefaultToolkit().getSystemClipboard().setContents(data, data);
println 'output sent to clipboard.'
''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment