Advertisement
Guest User

Untitled

a guest
Aug 7th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. task startDatabase() {
  2. group = 'develop'
  3. outputs.upToDateWhen {
  4. return !available()
  5. }
  6. doLast {
  7. def dbUser = project.properties['dbUser'] ?: gradle.dbUser
  8. def dbPassword = project.properties['dbPassword'] ?: gradle.dbPassword
  9. def dbFile = project.properties['dbFile'] ?: gradle.dbFile
  10. def dbName = project.properties['dbName'] ?: gradle.dbName
  11.  
  12. def className = "org.hsqldb.server.Server";
  13. def filePath = "file:${projectDir}/${dbFile};user=${dbUser};password=${dbPassword}";
  14.  
  15. def process = buildProcess(className, filePath, dbName)
  16. wait(process)
  17. }
  18. }
  19.  
  20. def buildProcess(className, filePath, dbName) {
  21. def javaHome = System.getProperty("java.home");
  22. def javaBin = javaHome + File.separator + "bin" + File.separator + "java";
  23. def classpath = project.buildscript.configurations.classpath.asPath;
  24.  
  25. def builder = new ProcessBuilder(javaBin, "-cp", classpath, className, "-database.0", filePath, "-dbname.0", dbName);
  26. builder.redirectErrorStream(true)
  27. builder.directory(projectDir)
  28. def process = builder.start()
  29. process
  30. }
  31.  
  32. def wait(Process process) {
  33. def ready = "From command line, use [Ctrl]+[C] to abort abruptly"
  34. def reader = new BufferedReader(new InputStreamReader(process.getInputStream()))
  35.  
  36. def line;
  37. while ((line = reader.readLine()) != null) {
  38. logger.quiet line
  39. if (line.contains(ready)) {
  40. break;
  41. }
  42. }
  43. }
  44.  
  45.  
  46. import groovy.sql.Sql
  47.  
  48. task stopDatabase() {
  49. group = 'develop'
  50. outputs.upToDateWhen {
  51. return available()
  52. }
  53. doLast {
  54. def dbUser = project.properties['dbUser'] ?: gradle.dbUser
  55. def dbPassword = project.properties['dbPassword'] ?: gradle.dbPassword
  56. def dbUrl = project.properties['dbUrl'] ?: gradle.dbUrl
  57. def dbDrive = project.properties['dbDrive'] ?: gradle.dbDrive
  58.  
  59. ClassLoader loader = Sql.class.classLoader
  60. project.buildscript.configurations.classpath.each { File file ->
  61. loader.addURL(file.toURI().toURL())
  62. }
  63. //noinspection GroovyAssignabilityCheck
  64. Sql sql = Sql.newInstance(dbUrl, dbUser, dbPassword, dbDrive) as Sql
  65. sql.execute('SHUTDOWN;')
  66. sql.close()
  67. }
  68. }
  69.  
  70.  
  71. boolean available() {
  72. try {
  73. int dbPort = project.properties['dbPort'] ?: gradle.dbPort as int
  74. String dbHost = project.properties['dbHost'] ?: gradle.dbHost
  75. Socket ignored = new Socket(dbHost, dbPort);
  76. ignored.close();
  77. return false;
  78. }
  79. catch (IOException ignored) {
  80. return true;
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement