*/
package fr.gouv.finances.dgfip.xemelios.edmn.patchers;
-import fr.gouv.finances.dgfip.utils.xml.FactoryProvider;
-import fr.gouv.finances.dgfip.xemelios.common.FileInfo;
-import fr.gouv.finances.dgfip.xemelios.data.impl.pool.PoolManager;
-import fr.gouv.finances.dgfip.xemelios.importers.AbstractImportPatcherImpl;
-import fr.gouv.finances.dgfip.xemelios.importers.QueryProvider;
-
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
+
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
+
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import fr.gouv.finances.dgfip.utils.xml.FactoryProvider;
+import fr.gouv.finances.dgfip.xemelios.common.FileInfo;
+import fr.gouv.finances.dgfip.xemelios.data.impl.pool.PoolManager;
+import fr.gouv.finances.dgfip.xemelios.importers.AbstractImportPatcherImpl;
+
/**
*
* @author christophe.marchand
public class NumLiassePatcher extends AbstractImportPatcherImpl {
private static final Logger logger = Logger.getLogger(NumLiassePatcher.class);
- private transient final QueryProvider queryProvider;
-
protected DocumentBuilderFactory domFactory;
protected TransformerFactory transformerFactory;
domFactory = FactoryProvider.getDocumentBuilderFactory();
domFactory.setNamespaceAware(true);
transformerFactory = FactoryProvider.getTransformerFactory();
- queryProvider = this.getQueryProvider();
+ initializeQueryProvider();
}
@Override
conPatch = PoolManager.getInstance().getConnection();
con2 = PoolManager.getInstance().getConnection();
con3 = PoolManager.getInstance().getConnection();
+
+ // ---------------------------------------------------
+ // on vérifie si la table existe et on la créée au besoin (if not
+ // exists n'existe pas pour Oracle)
+ boolean tableExists;
+ ResultSet rsTableExists = conPatch.createStatement().executeQuery(queryProvider.getQuery("checkTableIndexPatchExists"));
+ try {
+ tableExists = rsTableExists.next();
+ } finally {
+ rsTableExists.close();
+ rsTableExists = null;
+ }
+
Statement st = conPatch.createStatement();
- st.execute(queryProvider.getQuery("createTableIndexPatch"));
+ if (!tableExists) {
+ st.execute(queryProvider.getQuery("createTableIndexPatch"));
+ }
+ // --------------------------------------------------
+
st.execute(queryProvider.getQuery("truncateTableIndexPatch"));
PreparedStatement ps = conPatch.prepareStatement(queryProvider.getQuery("insertIndexPatch"));
BufferedReader br = new BufferedReader(new FileReader(indexFile));