import java.util.Collection;
import java.util.Comparator;
import java.util.Enumeration;
-import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Stack;
return manifeste;
}
- @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;
-
- final StringBuilder log = new StringBuilder();
-
- // Suppression des données à partir des docId du manifeste
- try {
- con = this.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 = ?");
-
- ps = con.prepareStatement(sb.toString());
- ps.setString(1, archiveName);
-
- ps.executeUpdate();
- ps.close();
- log.append(sb.toString()).append("; // ").append(archiveName).append("\n");
- }
- // 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 = ?");
- ps = con.prepareStatement(queryDocument.toString());
- ps.setString(1, archiveName);
- ps.executeUpdate();
- log.append(queryDocument.toString()).append("; // ").append(archiveName).append("\n");
- 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 = ?");
- ps = con.prepareStatement(querySps.toString());
- ps.setString(1, archiveName);
- ps.executeUpdate();
- log.append(querySps.toString()).append("; // ").append(archiveName).append("\n");
- 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 = ?");
- ps = con.prepareStatement(queryBc.toString());
- ps.setString(1, archiveName);
- ps.executeUpdate();
- log.append(queryBc.toString()).append("; // ").append(archiveName).append("\n");
- 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();
- log.append("DELETE FROM IMPORTED_ARCHIVES WHERE ARCHIVE_NAME=?; // ").append(archiveName).append("\n");
- ps.close();
-
- // on ne touche pas la traçabilité ici, ce n'est pas du ressort de la persistence, mais du métier de l'importeur d'archive
-
- // logger.debug(log.toString());
- } catch (final Throwable 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) {
- MySqlDataLayer.logger.info("can not close ps !", t);
- }
- }
- if (con != null) {
- this.releaseConnection(con);
- con = null;
- }
- }
- return true;
- }
-
@Override
public boolean updateManifeste(final String archiveName, final XemeliosUser user) throws DataConfigurationException, DataAccessException, UnauthorizedException {
boolean retour = true;
Connection con = null;
try {
con = this.getConnection();
- final String s = "SELECT 1 FROM ATTACHMENTS WHERE COLLECTIVITE=? AND PJ_NAME=?";
- ps = con.prepareStatement(s);
+
+ ps = con.prepareStatement("DELETE FROM ATTACHMENTS WHERE COLLECTIVITE=? AND PJ_NAME=?");
ps.setString(1, pj.getCollectivite());
ps.setString(2, pj.getPjName());
- rs = ps.executeQuery();
- if (rs.next()) {
- ps.close();
- ps = con.prepareStatement("DELETE FROM ATTACHMENTS WHERE COLLECTIVITE=? AND PJ_NAME=?");
- ps.setString(1, pj.getCollectivite());
- ps.setString(2, pj.getPjName());
- ps.executeUpdate();
- }
+ ps.executeUpdate();
ps.close();
+
ps = con.prepareStatement("INSERT INTO ATTACHMENTS (COLLECTIVITE,ARCHIVE_NAME,PJ_NAME,FILE_NAME,DATA) VALUES (?,?,?,?,?)");
ps.setString(1, pj.getCollectivite());
if (archiveName != null) {
return sql;
}
+ protected void adaptCommitForDatabaseEngine(final Connection connection) throws SQLException {
+ // pas de commit, la transaction est en auto-commit
+ }
+
}