Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.elbosso.db.domains.modelmgmt;
- //This is by no means production-ready code!
- /*Copyright (c) 2012-2018.
- Juergen Key. Alle Rechte vorbehalten.
- Weiterverbreitung und Verwendung in nichtkompilierter oder kompilierter Form,
- mit oder ohne Veraenderung, sind unter den folgenden Bedingungen zulaessig:
- 1. Weiterverbreitete nichtkompilierte Exemplare muessen das obige Copyright,
- die Liste der Bedingungen und den folgenden Haftungsausschluss im Quelltext
- enthalten.
- 2. Weiterverbreitete kompilierte Exemplare muessen das obige Copyright,
- die Liste der Bedingungen und den folgenden Haftungsausschluss in der
- Dokumentation und/oder anderen Materialien, die mit dem Exemplar verbreitet
- werden, enthalten.
- 3. Weder der Name des Autors noch die Namen der Beitragsleistenden
- duerfen zum Kennzeichnen oder Bewerben von Produkten, die von dieser Software
- abgeleitet wurden, ohne spezielle vorherige schriftliche Genehmigung verwendet
- werden.
- DIESE SOFTWARE WIRD VOM AUTOR UND DEN BEITRAGSLEISTENDEN OHNE
- JEGLICHE SPEZIELLE ODER IMPLIZIERTE GARANTIEN ZUR VERFUEGUNG GESTELLT, DIE
- UNTER ANDEREM EINSCHLIESSEN: DIE IMPLIZIERTE GARANTIE DER VERWENDBARKEIT DER
- SOFTWARE FUER EINEN BESTIMMTEN ZWECK. AUF KEINEN FALL IST DER AUTOR
- ODER DIE BEITRAGSLEISTENDEN FUER IRGENDWELCHE DIREKTEN, INDIREKTEN,
- ZUFAELLIGEN, SPEZIELLEN, BEISPIELHAFTEN ODER FOLGENDEN SCHAEDEN (UNTER ANDEREM
- VERSCHAFFEN VON ERSATZGUETERN ODER -DIENSTLEISTUNGEN; EINSCHRAENKUNG DER
- NUTZUNGSFAEHIGKEIT; VERLUST VON NUTZUNGSFAEHIGKEIT; DATEN; PROFIT ODER
- GESCHAEFTSUNTERBRECHUNG), WIE AUCH IMMER VERURSACHT UND UNTER WELCHER
- VERPFLICHTUNG AUCH IMMER, OB IN VERTRAG, STRIKTER VERPFLICHTUNG ODER
- UNERLAUBTE HANDLUNG (INKLUSIVE FAHRLAESSIGKEIT) VERANTWORTLICH, AUF WELCHEM
- WEG SIE AUCH IMMER DURCH DIE BENUTZUNG DIESER SOFTWARE ENTSTANDEN SIND, SOGAR,
- WENN SIE AUF DIE MOEGLICHKEIT EINES SOLCHEN SCHADENS HINGEWIESEN WORDEN SIND.
- */
- public class Utilities extends java.lang.Object
- {
- private final static org.apache.log4j.Logger CLASS_LOGGER = org.apache.log4j.Logger.getLogger(Utilities.class);
- private static final java.lang.String queryVersionStatement="SELECT version FROM MODELMGMTVERSION";
- private static final java.lang.String createVersionTableStatement="CREATE TABLE MODELMGMTVERSION ( version numeric NOT NULL, PRIMARY KEY ( version ));INSERT INTO MODELMGMTVERSION (version) VALUES (0);";
- private static final java.lang.String updateVersionStatement="UPDATE MODELMGMTVERSION set version=?";
- private Utilities()
- {
- super();
- }
- public static void bootstrap(java.sql.Connection dbConnection,java.lang.String baseName) throws java.sql.SQLException
- {
- if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace(baseName);
- java.sql.Statement stmt=dbConnection.createStatement();
- java.sql.PreparedStatement pstmt=null;
- java.sql.ResultSet rs=null;
- int currentVersion=-1;
- try
- {
- pstmt=dbConnection.prepareStatement(queryVersionStatement);
- rs=pstmt.executeQuery();
- if(rs.next())
- currentVersion=rs.getInt(1);
- }
- catch(java.sql.SQLException exp)
- {
- }
- finally
- {
- if(rs!=null)
- rs.close();
- if(pstmt!=null)
- pstmt.close();
- }
- if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("currentVersion: "+currentVersion);
- if(currentVersion<0)
- {
- pstmt=dbConnection.prepareStatement(createVersionTableStatement);
- pstmt.executeUpdate();
- pstmt.close();
- if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("resourceName: "+(baseName+".sql"));
- java.net.URL url=de.netsysit.util.ResourceLoader.getResource(baseName+".sql");
- if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("url: "+url);
- if(url!=null)
- {
- java.io.InputStream is=null;
- try
- {
- is=url.openStream();
- java.lang.String ddlScript=de.elbosso.util.Utilities.readIntoString(is);
- pstmt=dbConnection.prepareStatement(ddlScript);
- pstmt.execute();
- currentVersion++;
- }
- catch(java.io.IOException exp)
- {
- throw new java.sql.SQLException(exp.getMessage(),exp);
- }
- finally
- {
- if(is!=null)
- {
- try{is.close();}catch(java.io.IOException exp){}
- }
- pstmt.close();
- }
- }
- }
- int newerVersionNumber=currentVersion+1;
- if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("resourceName: "+(baseName+"_"+(newerVersionNumber)+".sql"));
- java.net.URL url=de.netsysit.util.ResourceLoader.getResource(baseName+"_"+(newerVersionNumber)+".sql");
- if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("url: "+url);
- while(url!=null)
- {
- java.io.InputStream is=null;
- try
- {
- is=url.openStream();
- java.lang.String ddlScript=de.elbosso.util.Utilities.readIntoString(is);
- pstmt=dbConnection.prepareStatement(ddlScript);
- pstmt.execute();
- currentVersion++;
- }
- catch(java.io.IOException exp)
- {
- throw new java.sql.SQLException(exp.getMessage(),exp);
- }
- finally
- {
- if(is!=null)
- {
- try{is.close();}catch(java.io.IOException exp){}
- }
- pstmt.close();
- }
- ++newerVersionNumber;
- if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("resourceName: "+(baseName+"_"+(newerVersionNumber)+".sql"));
- url=de.netsysit.util.ResourceLoader.getResource(baseName+"_"+(newerVersionNumber)+".sql");
- if (CLASS_LOGGER.isTraceEnabled()) CLASS_LOGGER.trace("url: "+url);
- }
- pstmt=dbConnection.prepareStatement(updateVersionStatement);
- pstmt.setInt(1,newerVersionNumber-1);
- pstmt.executeUpdate();
- pstmt.close();
- }
- }
Add Comment
Please, Sign In to add comment