Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.lang.reflect.Method;
- if (args == null || args.length == 0) {
- println "select a suitable resource (Java file)"
- return
- }
- // println "working on ${args[0]}"
- fullFileName = args[0]
- if (!fullFileName.endsWith(".java")) {
- println "selected resource is not a java file"
- return
- }
- fullFileName = fullFileName.replace("\\","/")
- pathFragmentToSplit = "src/main/java/"
- res = fullFileName.split(pathFragmentToSplit)
- // res.each { println it }
- className = res[1].replace(".java","").replace("/",".");
- // println className
- java.lang.Class clazz = java.lang.Class.forName(className);
- Method[] methods = clazz.getDeclaredMethods();
- if (methods.length == 0) {
- println "no methods found"
- return
- }
- println "\t public static class Builder {"
- println "\t\tprivate ${className} result = new ${className}();"
- println "\t\tpublic ${className} build() { return result; }"
- println "\t\tpublic static Builder create() { return new Builder(); }"
- methods.each {
- setter = it.getName()
- if (setter.startsWith('set')) {
- paramName = it.getParameters()[0].getName();
- paramType = it.getParameters()[0].getType().getName();
- println "\t\tpublic Builder ${setter}(${paramType} ${paramName}) {\n\t\t\tresult.${setter}(${paramName});\n\t\t\treturn this;\n\t\t}"
- }
- }
- println "\t}"
- /' You need a launch configuration in Eclipse or other IDE, that starts this script and gives the selected source file as argument
- Example: C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe
- Working Directory: ${workspace_loc:/my_server}
- Arguments: -cp C:\development\bin\groovy-all-2.6.0-alpha-1.jar;C:\development\my_workspace\my_server\target\classes groovy.ui.GroovyMain C:\development\my_workspace\my_server\bin\GenBuilder.groovy ${selected_resource_loc}
- '/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement