Guest User

Untitled

a guest
Jan 6th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. package de.elbosso.db.domains.modelmgmt;
  2.  
  3. //This is by no means production-ready code!
  4.  
  5. /*Copyright (c) 2012-2018.
  6.  
  7. Juergen Key. Alle Rechte vorbehalten.
  8.  
  9. Weiterverbreitung und Verwendung in nichtkompilierter oder kompilierter Form,
  10. mit oder ohne Veraenderung, sind unter den folgenden Bedingungen zulaessig:
  11.  
  12. 1. Weiterverbreitete nichtkompilierte Exemplare muessen das obige Copyright,
  13. die Liste der Bedingungen und den folgenden Haftungsausschluss im Quelltext
  14. enthalten.
  15. 2. Weiterverbreitete kompilierte Exemplare muessen das obige Copyright,
  16. die Liste der Bedingungen und den folgenden Haftungsausschluss in der
  17. Dokumentation und/oder anderen Materialien, die mit dem Exemplar verbreitet
  18. werden, enthalten.
  19. 3. Weder der Name des Autors noch die Namen der Beitragsleistenden
  20. duerfen zum Kennzeichnen oder Bewerben von Produkten, die von dieser Software
  21. abgeleitet wurden, ohne spezielle vorherige schriftliche Genehmigung verwendet
  22. werden.
  23.  
  24. DIESE SOFTWARE WIRD VOM AUTOR UND DEN BEITRAGSLEISTENDEN OHNE
  25. JEGLICHE SPEZIELLE ODER IMPLIZIERTE GARANTIEN ZUR VERFUEGUNG GESTELLT, DIE
  26. UNTER ANDEREM EINSCHLIESSEN: DIE IMPLIZIERTE GARANTIE DER VERWENDBARKEIT DER
  27. SOFTWARE FUER EINEN BESTIMMTEN ZWECK. AUF KEINEN FALL IST DER AUTOR
  28. ODER DIE BEITRAGSLEISTENDEN FUER IRGENDWELCHE DIREKTEN, INDIREKTEN,
  29. ZUFAELLIGEN, SPEZIELLEN, BEISPIELHAFTEN ODER FOLGENDEN SCHAEDEN (UNTER ANDEREM
  30. VERSCHAFFEN VON ERSATZGUETERN ODER -DIENSTLEISTUNGEN; EINSCHRAENKUNG DER
  31. NUTZUNGSFAEHIGKEIT; VERLUST VON NUTZUNGSFAEHIGKEIT; DATEN; PROFIT ODER
  32. GESCHAEFTSUNTERBRECHUNG), WIE AUCH IMMER VERURSACHT UND UNTER WELCHER
  33. VERPFLICHTUNG AUCH IMMER, OB IN VERTRAG, STRIKTER VERPFLICHTUNG ODER
  34. UNERLAUBTE HANDLUNG (INKLUSIVE FAHRLAESSIGKEIT) VERANTWORTLICH, AUF WELCHEM
  35. WEG SIE AUCH IMMER DURCH DIE BENUTZUNG DIESER SOFTWARE ENTSTANDEN SIND, SOGAR,
  36. WENN SIE AUF DIE MOEGLICHKEIT EINES SOLCHEN SCHADENS HINGEWIESEN WORDEN SIND.
  37. */
  38. public class Utilities extends java.lang.Object
  39. {
  40. private final static org.apache.log4j.Logger CLASS_LOGGER = org.apache.log4j.Logger.getLogger(Utilities.class);
  41. private static final java.lang.String queryVersionStatement="SELECT version FROM MODELMGMTVERSION";
  42. private static final java.lang.String createVersionTableStatement="CREATE TABLE MODELMGMTVERSION ( version numeric NOT NULL, PRIMARY KEY ( version ));INSERT INTO MODELMGMTVERSION (version) VALUES (0);";
  43. private static final java.lang.String updateVersionStatement="UPDATE MODELMGMTVERSION set version=?";
  44.  
  45. private Utilities()
  46. {
  47. super();
  48. }
  49. public static void bootstrap(java.sql.Connection dbConnection,java.lang.String baseName) throws java.sql.SQLException
  50. {
  51. if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace(baseName);
  52. java.sql.Statement stmt=dbConnection.createStatement();
  53. java.sql.PreparedStatement pstmt=null;
  54. java.sql.ResultSet rs=null;
  55. int currentVersion=-1;
  56. try
  57. {
  58. pstmt=dbConnection.prepareStatement(queryVersionStatement);
  59. rs=pstmt.executeQuery();
  60. if(rs.next())
  61. currentVersion=rs.getInt(1);
  62. }
  63. catch(java.sql.SQLException exp)
  64. {
  65.  
  66. }
  67. finally
  68. {
  69. if(rs!=null)
  70. rs.close();
  71. if(pstmt!=null)
  72. pstmt.close();
  73. }
  74. if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("currentVersion: "+currentVersion);
  75. if(currentVersion<0)
  76. {
  77. pstmt=dbConnection.prepareStatement(createVersionTableStatement);
  78. pstmt.executeUpdate();
  79. pstmt.close();
  80. if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("resourceName: "+(baseName+".sql"));
  81. java.net.URL url=de.netsysit.util.ResourceLoader.getResource(baseName+".sql");
  82. if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("url: "+url);
  83. if(url!=null)
  84. {
  85. java.io.InputStream is=null;
  86. try
  87. {
  88. is=url.openStream();
  89. java.lang.String ddlScript=de.elbosso.util.Utilities.readIntoString(is);
  90. pstmt=dbConnection.prepareStatement(ddlScript);
  91. pstmt.execute();
  92. currentVersion++;
  93. }
  94. catch(java.io.IOException exp)
  95. {
  96. throw new java.sql.SQLException(exp.getMessage(),exp);
  97. }
  98. finally
  99. {
  100. if(is!=null)
  101. {
  102. try{is.close();}catch(java.io.IOException exp){}
  103. }
  104. pstmt.close();
  105. }
  106. }
  107. }
  108. int newerVersionNumber=currentVersion+1;
  109. if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("resourceName: "+(baseName+"_"+(newerVersionNumber)+".sql"));
  110. java.net.URL url=de.netsysit.util.ResourceLoader.getResource(baseName+"_"+(newerVersionNumber)+".sql");
  111. if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("url: "+url);
  112. while(url!=null)
  113. {
  114. java.io.InputStream is=null;
  115. try
  116. {
  117. is=url.openStream();
  118. java.lang.String ddlScript=de.elbosso.util.Utilities.readIntoString(is);
  119. pstmt=dbConnection.prepareStatement(ddlScript);
  120. pstmt.execute();
  121. currentVersion++;
  122. }
  123. catch(java.io.IOException exp)
  124. {
  125. throw new java.sql.SQLException(exp.getMessage(),exp);
  126. }
  127. finally
  128. {
  129. if(is!=null)
  130. {
  131. try{is.close();}catch(java.io.IOException exp){}
  132. }
  133. pstmt.close();
  134. }
  135. ++newerVersionNumber;
  136. if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("resourceName: "+(baseName+"_"+(newerVersionNumber)+".sql"));
  137. url=de.netsysit.util.ResourceLoader.getResource(baseName+"_"+(newerVersionNumber)+".sql");
  138. if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("url: "+url);
  139. }
  140. pstmt=dbConnection.prepareStatement(updateVersionStatement);
  141. pstmt.setInt(1,newerVersionNumber-1);
  142. pstmt.executeUpdate();
  143. pstmt.close();
  144. }
  145. }
Add Comment
Please, Sign In to add comment