package net.codjo.broadcast.server; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import net.codjo.broadcast.common.computed.AbstractComputedField; import net.codjo.broadcast.common.computed.ComputedContext; import net.codjo.broadcast.server.api.SqlUtil; /** * */ public abstract class AbstractSqlResourceComputedField extends AbstractComputedField { protected AbstractSqlResourceComputedField(String name, int sqlType, String sqlDefinition) { super(name, sqlType, sqlDefinition); } protected String loadQuery(String queryName) throws SQLException { return SqlUtil.loadQuery(this, queryName); } protected void executeUpdate(Connection connection, String sqlQuery) throws SQLException { Statement statement = connection.createStatement(); try { statement.executeUpdate(sqlQuery); } finally { statement.close(); } } protected void initParameters(ComputedContext computedContext) { } public void compute(ComputedContext computedContext, Connection con) throws SQLException { computedContext.putParameter("selectionTable", computedContext.getSelectionTableName()); computedContext.putParameter("computedTable", computedContext.getComputedTableName()); initParameters(computedContext); executeUpdate(con, computedContext.replaceVariables(loadQuery(getClass().getSimpleName() + ".sql"))); } }