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<Void> {
|
|
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();
|
}
|
|
}
|