commit
360f469bf1
@ -0,0 +1,59 @@ |
||||
package org.airsonic.player.dao; |
||||
|
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
import org.springframework.jdbc.core.JdbcTemplate; |
||||
import org.springframework.jdbc.datasource.DataSourceUtils; |
||||
|
||||
import javax.annotation.PreDestroy; |
||||
import javax.sql.DataSource; |
||||
|
||||
import java.sql.Connection; |
||||
import java.sql.SQLException; |
||||
|
||||
/** |
||||
* Special Dao Helper with additional features for managing the legacy embedded HSQL database. |
||||
*/ |
||||
public class LegacyHsqlDaoHelper extends GenericDaoHelper { |
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(LegacyHsqlDaoHelper.class); |
||||
|
||||
public LegacyHsqlDaoHelper(DataSource dataSource) { |
||||
super(dataSource); |
||||
} |
||||
|
||||
@Override |
||||
public void checkpoint() { |
||||
// HSQLDB (at least version 1) does not handle automatic checkpoints very well by default.
|
||||
// This makes sure the temporary log is actually written to more persistent storage.
|
||||
LOG.debug("Database checkpoint in progress..."); |
||||
getJdbcTemplate().execute("CHECKPOINT DEFRAG"); |
||||
LOG.debug("Database checkpoint complete."); |
||||
} |
||||
|
||||
@PreDestroy |
||||
public void onDestroy() { |
||||
Connection conn = null; |
||||
try { |
||||
// Properly shutdown the embedded HSQLDB database.
|
||||
LOG.debug("Database shutdown in progress..."); |
||||
JdbcTemplate jdbcTemplate = getJdbcTemplate(); |
||||
conn = DataSourceUtils.getConnection(jdbcTemplate.getDataSource()); |
||||
conn.setAutoCommit(true); |
||||
jdbcTemplate.execute("SHUTDOWN"); |
||||
LOG.debug("Database shutdown complete."); |
||||
|
||||
} catch (SQLException e) { |
||||
LOG.error("Database shutdown failed: " + e); |
||||
e.printStackTrace(); |
||||
|
||||
} finally { |
||||
try { |
||||
if(conn != null) |
||||
conn.close(); |
||||
} catch(Exception ex) { |
||||
ex.printStackTrace(); |
||||
} |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue