package com.megatim.fdxcommons.tools.database.queries; import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor; import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData; import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion; import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters; import java.sql.Connection; import java.sql.PreparedStatement; /** * @author Gabuntu */ public class PermanentDeleteQuery implements QueryMetaData { private final Connection connection; private final QueryCriterion queryCriterion; private final String tableName; public PermanentDeleteQuery(String tableName, Connection connection, QueryCriterion queryCriterion) { this.connection = connection; this.queryCriterion = queryCriterion; this.tableName = tableName; } @Override public Void execute() throws Exception { System.out.println("<----------------------------------------------------------------------------------------------------------->"); System.out.println(permanentDeleteQuery()); System.out.println("<----------------------------------------------------------------------------------------------------------->"); try (PreparedStatement statement = connection.prepareStatement(permanentDeleteQuery())) { connection.setAutoCommit(false); new DefaultPreparedStatementProcessor().process(statement, new WhereQueryParameters(queryCriterion).parameters()); statement.execute(); connection.commit(); return null; } } private String permanentDeleteQuery() throws Exception { return "DELETE FROM " + tableName + " " + new WhereQueryString(queryCriterion).query(); } }