import java.util.Collection;
import java.util.Comparator;
import java.util.Enumeration;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
return true;
}
- @Override
- public boolean removeArchive(final HashMap<String, DocumentModel> dms, final String archiveName, final XemeliosUser user) throws DataConfigurationException, DataAccessException, UnauthorizedException {
- if (!user.hasRole(XemeliosUser.ROLE_IMPORT)) {
- throw new UnauthorizedException("Vous n'êtes pas autorisé à supprimer des données.");
- }
- Connection con = null;
- PreparedStatement ps = null;
-
- // Suppression des données à partir des docId du manifeste
- try {
- con = PoolManager.getInstance().getConnection();
- for (final DocumentModel dm : dms.values()) {
- final TDocument pc = this.getPersistenceConfig(dm, user).getLayer(this.getLayerName()).getDocument(dm.getId());
- for (final TEtat etat : pc.getEtats()) {
- // Suppression des documents index
- for (final TTable table : pc.getEtat(etat.getId()).getIndexTables()) {
- final StringBuilder sb = new StringBuilder();
- sb.append("DELETE FROM ").append(table.getBaseName()).append(" WHERE ARCHIVE_NAME = ?");
- OracleDataLayer.logger.debug(sb.toString());
-
- ps = con.prepareStatement(sb.toString());
- ps.setString(1, archiveName);
-
- ps.executeUpdate();
- ps.close();
- }
- // Suppression des documents de l'etat
- final StringBuilder queryDocument = new StringBuilder();
- queryDocument.append("DELETE FROM ").append(pc.getEtat(etat.getId()).getDocumentTable().getBaseName()).append(" WHERE ARCHIVE_NAME = ?");
- OracleDataLayer.logger.debug(queryDocument.toString());
- ps = con.prepareStatement(queryDocument.toString());
- ps.setString(1, archiveName);
- ps.executeUpdate();
- ps.close();
-
- // Suppression des budegt/collectivite du doc
- final StringBuilder queryBc = new StringBuilder();
- queryBc.append("DELETE FROM ").append(pc.getListBcTable().getBaseName()).append(" WHERE ARCHIVE_NAME = ?");
- OracleDataLayer.logger.debug(queryBc.toString());
- ps = con.prepareStatement(queryBc.toString());
- ps.setString(1, archiveName);
- ps.executeUpdate();
- ps.close();
- }
- // Suppression des special keys du doc
- if (pc.getSpecialKeyTable() != null) {
- final StringBuilder querySps = new StringBuilder();
- querySps.append("DELETE FROM ").append(pc.getSpecialKeyTable().getBaseName()).append(" WHERE ARCHIVE_NAME = ?");
- OracleDataLayer.logger.debug(querySps.toString());
- ps = con.prepareStatement(querySps.toString());
- ps.setString(1, archiveName);
- ps.executeUpdate();
- ps.close();
- }
-
- }
- // suppression de l'entrée dans IMPORTED_ARCHIVES
- ps = con.prepareStatement("DELETE FROM IMPORTED_ARCHIVES WHERE ARCHIVE_NAME=?");
- ps.setString(1, archiveName);
- ps.executeUpdate();
- ps.close();
- con.commit();
- } catch (final Throwable t) {
- OracleDataLayer.logger.error(t);
- throw new DataConfigurationException("Problème lors de la suppression des données de l'archive !", t);
- } finally {
- if (ps != null) {
- try {
- ps.close();
- } catch (final Throwable t) {
- OracleDataLayer.logger.info("can not close ps !", t);
- }
- }
- if (con != null) {
- PoolManager.getInstance().releaseConnection(con);
- con = null;
- }
- }
- return true;
- }
-
@Override
public boolean removeSpecialKey1(final DocumentModel dm, final Pair collectivite, final Pair budget, final Pair key1, final XemeliosUser user) throws DataConfigurationException, DataAccessException, UnauthorizedException {
if (!user.hasRole(XemeliosUser.ROLE_CLEAN)) {
return sql.replaceAll("= *''", " IS NULL");
}
+ protected void adaptCommitForDatabaseEngine(final Connection connection) throws SQLException {
+ connection.commit();
+ }
+
}