package de.tud.kom.socom.database; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import de.tud.kom.socom.util.exceptions.IllegalParameterException; public abstract class HSQLDatabase { protected static HSQLAccess db; protected HSQLDatabase() { db = HSQLAccess.getInstance(); } protected long getId(String table, String name) throws IllegalParameterException, SQLException { PreparedStatement statement = db.getPreparedStatement("SELECT id FROM " + table + " WHERE name = ?"); statement.setString(1, name); ResultSet rs = statement.executeQuery(); if(!rs.next()) { throw new IllegalParameterException(name, name + " not found in " + table); } return rs.getLong("id"); } protected long lazyInsert(String table, String name) throws SQLException { PreparedStatement statement = db.getPreparedStatement("SELECT id FROM " + table + " WHERE name = ?"); statement.setString(1, name); ResultSet rs = statement.executeQuery(); if (!rs.next()) { // Insert PreparedStatement insertStatement = db.getPreparedStatement("INSERT INTO " + table + " (name) " + "VALUES (?);"); insertStatement.setString(1, name); insertStatement.executeUpdate(); // statement = db.getPreparedStatement("SELECT id FROM " + table + " WHERE name = ?"); // statement.setString(1, name); ResultSet result = statement.executeQuery(); if (!result.next()) throw new SQLException("Not created"); return result.getLong(1); } else { return rs.getLong("id"); } } }