From eccea3dbd4923e49b21cb350e6f2ae0591803325 Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Mon, 3 Oct 2022 12:16:36 +0200 Subject: [PATCH] Build package from repo (first steps) #1 --- build.xml | 92 +++ .../EtlActionHandlerExecuteMask.java | 51 -- src/de/superx/etl/TableUploader.java | 779 ------------------ 3 files changed, 92 insertions(+), 830 deletions(-) delete mode 100644 src/de/superx/etl/ActionHandler/EtlActionHandlerExecuteMask.java delete mode 100644 src/de/superx/etl/TableUploader.java diff --git a/build.xml b/build.xml index b0b0e9d..f277a76 100644 --- a/build.xml +++ b/build.xml @@ -7,8 +7,42 @@ ant -DMODULE_PATH=$ETL_PFAD -DBASE_DIR=. -DWEBAPP=$WEBAPP -DMODULE=etl all So erzeugen Sie dann ein SuperX-Paket: ant -DMODULE_PATH=$ETL_PFAD -DWEBAPP_DIR=$WEBAPP -DMODULE=etl dist +ETL-JAR erzeugen: +ant -DWEBAPP=$WEBAPP distEtl +ant -DWEBAPP=$WEBAPP cleanBuildPath --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -18,6 +52,10 @@ ant -DMODULE_PATH=$ETL_PFAD -DWEBAPP_DIR=$WEBAPP -DMODULE=etl dist + + + + @@ -26,6 +64,14 @@ ant -DMODULE_PATH=$ETL_PFAD -DWEBAPP_DIR=$WEBAPP -DMODULE=etl dist + + + + + + @@ -67,4 +113,50 @@ ant -DMODULE_PATH=$ETL_PFAD -DWEBAPP_DIR=$WEBAPP -DMODULE=etl dist + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/de/superx/etl/ActionHandler/EtlActionHandlerExecuteMask.java b/src/de/superx/etl/ActionHandler/EtlActionHandlerExecuteMask.java deleted file mode 100644 index cea989e..0000000 --- a/src/de/superx/etl/ActionHandler/EtlActionHandlerExecuteMask.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * de.superx.etl - a package for controlling ETL routines - * Copyright (C) 2021 Daniel Quathamer - * - * This package is licensed under the CampusSource License; - * http://www.campussource.de/org/license/ - */ -package de.superx.etl.ActionHandler; - -import java.io.StringWriter; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Properties; -import java.util.logging.Logger; - -import de.superx.bin.SxConnection; -import de.superx.etl.MaskExecutor; -import de.superx.etl.QueryResultSerializer; - -public class EtlActionHandlerExecuteMask extends EtlActionHandler implements EtlActionHandlerI { - - public EtlActionHandlerExecuteMask() { - - } - @Override - public int execute(StringWriter sw, String mandantid, String stepUniquename,String outFormat) - throws SQLException, Exception - { - int returnCode=0; - this.getConnection(); - int maskeninfo_id=new Integer(handlerSpecificProperties.getProperty("maskeninfo_id")); - String username=handlerSpecificProperties.getProperty("username"); - String mandantenId="default"; - Properties params=null ;//todo aus assertion lesen - MaskExecutor myMaskExecutor=new MaskExecutor(mandantenId, stepSxConnection,maskeninfo_id, username, - params,sw); - myMaskExecutor.setLogger(logger); - super.setNumberOfRows(myMaskExecutor.executeMask(mandantenId, - maskeninfo_id, - username, - params)); - super.setReturnCode(myMaskExecutor.getReturnCode()); - super.setOutputStringWriter(myMaskExecutor.getOutputString()); - - //System.out.println(sw.toString()); - stepSxConnection.close(); - //super.setLogOutput(msg); - return returnCode; - } - -} diff --git a/src/de/superx/etl/TableUploader.java b/src/de/superx/etl/TableUploader.java deleted file mode 100644 index 7987014..0000000 --- a/src/de/superx/etl/TableUploader.java +++ /dev/null @@ -1,779 +0,0 @@ -/* - * de.superx.etl - a package for controlling ETL routines - * Copyright (C) 2021 Daniel Quathamer - * - * This package is licensed under the CampusSource License; - * http://www.campussource.de/org/license/ - */ -package de.superx.etl; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.PrintStream; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.nio.charset.CodingErrorAction; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.sql.Connection; -import java.sql.DatabaseMetaData; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.ResultSetMetaData; -import java.sql.SQLException; -import java.sql.Statement; -import java.sql.Types; -import java.text.ParseException; -import java.util.Iterator; -import java.util.Properties; - -import de.superx.util.FileUtils; -import de.superx.util.SqlStringUtils; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.XPathFactory; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathConstants; - -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.*; - - -import org.postgresql.PGConnection; -import org.postgresql.copy.CopyManager; - -import de.superx.bin.SxConnection; -import de.superx.bin.SxJdbcClient; -import de.superx.bin.UploadRecords; -import de.memtext.util.DateUtils; -import de.memtext.util.GetOpts; -import de.memtext.util.StringUtils; -import de.memtext.util.XMLUtils; -public class TableUploader { - private String logfile; - private String dbpropfile; - private String mode="stop"; - private String inFormat; - private String targetTable; - private String srcFile; - private boolean header=false; - - private String delim="^"; - private String encoding=SqlStringUtils.getEncoding(); - private String inserts=""; - private boolean truncateTargetTable=true; - private boolean continueAfterError; - private boolean removeTrailingDelim=true; - private boolean isPostgres; - private boolean useBatch=true; - private static int maxCols=1000; - private String[] insert_cols = new String[maxCols]; - private int[] insert_types = new int[maxCols]; - private int numberOfColumns; - public long numberOfRows; - private int returnCode; - private String xml_search_path; - private Connection uploadConnection; - private DatabaseMetaData dbmd; - private PreparedStatement pst; - - - public TableUploader() { - // TODO Auto-generated constructor stub - - } - - public Connection getUploadConnection() { - return uploadConnection; - } - public void setUploadConnection(Connection uploadConnection) { - this.uploadConnection = uploadConnection; - } - public boolean isRemoveTrailingDelim() { - return removeTrailingDelim; - } - public void setRemoveTrailingDelim(boolean removeTrailingDelim) { - this.removeTrailingDelim = removeTrailingDelim; - } - public void setHeader(boolean header) { - this.header = header; - } - - - public String getDbpropfile() { - return dbpropfile; - } - public void setDbpropfile(String dbpropfile) { - this.dbpropfile = dbpropfile; - } - public String getMode() { - return mode; - } - public void setMode(String mode) { - if (!mode.equals("stop") && !mode.equals("exclude-field")&& !mode.equals("transaction")) - mode = "exclude-row"; - this.mode = mode; - } - public String getInFormat() { - return inFormat; - } - public void setInFormat(String inFormat) { - this.inFormat = inFormat; - } - public String getTargetTable() { - return targetTable; - } - public void setTargetTable(String targetTable) { - this.targetTable = targetTable; - } - public String getSrcFile() { - return srcFile; - } - public void setSrcFile(String srcFile) { - this.srcFile = srcFile; - } - - public String getDelim() { - return delim; - } - public void setDelim(String delim) { - if (delim.equals("tab")) - delim = "\t"; //Tab - if (delim.equals("")) - delim = "^"; //default Delimiter - this.delim = delim; - } - public String getEncoding() { - return encoding; - } - public void setEncoding(String encoding) { - if(encoding==null || encoding.equals("")) - encoding="UTF-8"; - this.encoding = encoding; - } - public String getInserts() { - return inserts; - } - public void setInserts(String inserts) { - if(inserts.equalsIgnoreCase("batch")) - useBatch=true; - if(inserts.equalsIgnoreCase("simple")) - useBatch=false; - - this.inserts = inserts; - } - public boolean isTruncateTargetTable() { - return truncateTargetTable; - } - - public void setTruncateTargetTable(boolean truncateTargetTable) { - this.truncateTargetTable = truncateTargetTable; - } - public void setTruncateTargetTable(String truncateTargetTable) { - if(truncateTargetTable!=null) - {if(truncateTargetTable.equalsIgnoreCase("true")) - this.truncateTargetTable =true; - else - this.truncateTargetTable =false; - } - else - this.truncateTargetTable =false; - } - - public int getReturnCode() { - return returnCode; - } - - public void setReturnCode(int returnCode) { - this.returnCode = returnCode; - } - - public boolean isContinueAfterError() { - return continueAfterError; - } - public void setContinueAfterError(boolean continueAfterError) { - this.continueAfterError = continueAfterError; - } - public String getXml_search_path() { - return xml_search_path; - } - - public void setXml_search_path(String xml_search_path) { - this.xml_search_path = xml_search_path; - } - - public long uploadFile() throws Exception - { - String protokoll=""; - long numberOfRows=0; - returnCode=0; - try { - //dbmd=uploadConnection.getMetaData(); - String dbname=uploadConnection.getCatalog(); - if(truncateTargetTable) - { - Statement stm=uploadConnection.createStatement(); - stm.execute("delete from "+this.targetTable+";"); - stm.close(); - } - if(inFormat.equalsIgnoreCase("xml")) - { - numberOfRows=uploadXML(); - } - else - numberOfRows=uploadCSV(); - } catch (Exception e) { - returnCode=1; - throw new Exception(e); - } - return numberOfRows; - - } - private long uploadXML() throws Exception - { - String feld_wert; - String errmsg=""; - Document mydomres=null; - numberOfRows=0; - org.xml.sax.InputSource is; - NodeList rowlist; - - mydomres = de.superx.etl.EtlUtils.buildDocumentFromXmlFile(srcFile); - - if(xml_search_path==null) - { - rowlist = mydomres.getElementsByTagName("row"); - } - else - - { - //XPath xPath = XPathFactory.newInstance().newXPath(); - File inputFile = new File(srcFile); - //XPathFactory factory = XPathFactory.newInstance(); - XPathFactory factory = new net.sf.saxon.xpath.XPathFactoryImpl(); - - XPath xPath = factory.newXPath(); - //Document doc = builder.parse(inputFile); - //doc.getDocumentElement().normalize(); - rowlist=(NodeList) xPath.compile(xml_search_path).evaluate( - mydomres, XPathConstants.NODESET); - } - Node rownode; - initializeColumnSchema(); - String insertHead=createPreparedStatementHead(); - pst = uploadConnection.prepareStatement(insertHead); - if(useBatch) - pst.clearBatch(); - int anz_rows = rowlist.getLength(); - for (int zeilennr = 0; zeilennr < anz_rows; zeilennr++) { - //Schleife über jede Zeile des XML-Stroms - rownode = rowlist.item(zeilennr); - //pst.clearParameters(); - - for(int col=0; col < numberOfColumns;col++) - { - for (Iterator it = XMLUtils.getChildNodeIterator(rownode); it.hasNext();) { - Node fldNode = (Node) it.next(); - //System.out.println(XMLUtils.getTheValue(fldNode)); - if (XMLUtils.getAttribValue(fldNode,"name").equalsIgnoreCase(insert_cols[col])) { - //int p; - feld_wert=""; - try{ - feld_wert = XMLUtils.getTheValue(fldNode).trim(); - feld_wert=StringUtils.replace(feld_wert, - "CDATASTART", ""); - - - } - catch (IllegalArgumentException e) - { - //Node ist NULL, keine Warnung notwendig - } - - errmsg = feld_wert_to_pst(zeilennr, col, errmsg, feld_wert); - - } //Wenn Feldname übereinstimmt - } - } //Ende der Schleife über die Spalten - if(!errmsg.equals("") && mode.equals("stop")) - { - break; - } - if(useBatch) - pst.addBatch(); - else - pst.executeUpdate(); - - numberOfRows++; - - } //Ende der Schleife über die Zeilen - if(useBatch) - pst.executeBatch(); - return numberOfRows; - } - - - - private long uploadCSV() throws Exception - { - String line; - String line2; - File outFile=null; - String protokoll=""; - long numberOfRows=0; - if(isPostgres && !inserts.equalsIgnoreCase("simple") && !inserts.equalsIgnoreCase("batch")) - { - if(removeTrailingDelim) - srcFile=removeTrailingDelim(srcFile); - numberOfRows=uploadCSVinPostgres(srcFile,removeTrailingDelim); - } - else - numberOfRows=uploadCSVwithAnsiSQL(srcFile); - return numberOfRows; - - - } - private String removeTrailingDelim(String srcFile) throws UnsupportedEncodingException, FileNotFoundException, IOException { - String line; - File outFile; - String returnSrcFile=srcFile+".tmp"; - BufferedReader in2 = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile), encoding)); - - outFile=new File(srcFile+".tmp"); - FileOutputStream out = new FileOutputStream(outFile, false); - PrintStream out2 = new PrintStream(out, true, encoding); - - - while ((line = in2.readLine()) != null) { - - if (line.endsWith(delim)) - line=line.substring(0,line.length()-delim.length()); - out2.println(line); - out2.flush(); - - } - return returnSrcFile; - } - private long uploadCSVinPostgres(String srcFile, boolean deleteSrcFile) { - long numOfRows=0; - String copySql = "COPY " + targetTable + " FROM STDIN WITH DELIMITER '" + delim + "' NULL '' ENCODING '"+ encoding+"'"; - copySql += header ? " HEADER" : ""; - - String srcFileContent=de.superx.etl.EtlUtils.getFileContentsWithEncoding(srcFile, encoding); - String msg=""; - try { - //dbmd=uploadConnection.getMetaData(); - String dbname=uploadConnection.getCatalog(); - Statement stm=uploadConnection.createStatement(); - int isIso=0; - ResultSet rs=stm.executeQuery("SELECT distinct 1 FROM pg_catalog.pg_database where datname='"+dbname+"' and datctype ilike '%euro%' or datctype ilike '%1252%' or datctype ilike '%8859%';"); - while (rs.next()) { - if(rs.getObject(1)!=null) - isIso= Integer.parseInt(rs.getObject(1).toString()); - - } - rs.close(); - stm.close(); - Reader in4=null; - final CopyManager cpm = ((PGConnection) uploadConnection).getCopyAPI(); - long anz = 0; - msg = ""; - - if(isIso==1) - { - String srcFileIso=srcFile+"_iso.tmp"; - String srcFileContentValidIso = FileUtils.convertToIso(srcFileContent,"postgres") ;//new String(srcFileContent.getBytes("ISO-8859-1")); - de.superx.etl.EtlUtils.saveFileContentsWithEncoding(srcFileIso, srcFileContentValidIso, "iso-8859-9"); - FileInputStream fis = new FileInputStream(srcFileIso); - in4 = new BufferedReader(new InputStreamReader(fis, "iso-8859-9")); - - } - else - { - FileReader in3 = new FileReader(srcFile); - in4 = new BufferedReader(in3); - - } - - numOfRows= cpm.copyIn(copySql, in4); - numberOfRows =numOfRows; - if(deleteSrcFile) - { - File outFile=new File(srcFile); - if(outFile!=null) - outFile.delete(); - } - } catch (Exception e) { - // TODO Auto-generated catch block - msg=e.toString(); - } - return numOfRows; - } - - private long uploadCSVwithAnsiSQL(String srcFile) throws SQLException, FileNotFoundException, IOException { - numberOfRows=0; - String text; - String text2; - String msg=""; - int zeilennr=1; - int fehlerSaetze=0; - - BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile), encoding)); - initializeColumnSchema(); - String insertHead=createPreparedStatementHead(); - pst = uploadConnection.prepareStatement(insertHead); - if(useBatch) - pst.clearBatch(); - - while ((text = in.readLine()) != null) { - if (text.endsWith("\\")) { - text=text.substring(0, text.length()-1); - text2 = in.readLine(); - if (text2 != null) { - text += "\n"+ text2; - while (text2.endsWith("\\")) { - text=text.substring(0, text.length()-1); - text2 = in.readLine(); - if (text2 != null) - text += "\n"+text2; - - } - } - } - - String prepare = - createPreparedInsertStatement(zeilennr, - insertHead, - text); - if(!prepare.equals("") && mode.equals("stop")) - { - msg=prepare; - break; - } - if(useBatch) - pst.addBatch(); - else - pst.executeUpdate(); - numberOfRows++; - - - - } - if(useBatch) - pst.executeBatch(); - //TODO: msg - return numberOfRows; - } - - private String createPreparedInsertStatement( - int line, - String insertHead, - String text) - throws SQLException { - int p; - int i=0; - int k=0; - String errmsg = ""; - String feld_wert; - //pst.clearParameters(); - do { - //ggf. Trennzeichen am Ende hinzufügen: - if(!text.endsWith(delim)) - text+= delim; - p = text.indexOf(delim, i); - //logger.config("Type "+types[k]); - //maskierte Trennzeichen abfangen: - if(p>0 && text.substring(p-1, p).equals("\\")) - p = text.indexOf(delim, p+1); - - if (p > -1 ) { - if(p==-1) - feld_wert = text.substring(i); - else - feld_wert = text.substring(i, p); - //wenn der Feldwert zufällig das Zeichen "\\n" enthält, wird es zu "\n" - if(feld_wert != null && (feld_wert.indexOf("\\\\n") >0 )) - { - feld_wert=de.memtext.util.StringUtils.replace(feld_wert, "\\\\n", "\\n"); - } - //wenn der Feldwert das Zeichen "\Trennzeichen" enthält, wird der \ entfernt - if(feld_wert != null && (feld_wert.indexOf("\\"+delim) >0 )) - { - feld_wert=de.memtext.util.StringUtils.replace(feld_wert, "\\", ""); - } - //wenn der Feldwert das Zeichen "\\" enthält, wird ein \ entfernt - if(feld_wert != null && (feld_wert.indexOf("\\\\") >0 )) - { - feld_wert=de.memtext.util.StringUtils.replace(feld_wert, "\\\\", "\\"); - } - - errmsg = feld_wert_to_pst(line,k, errmsg, feld_wert); - k++; - i = p + 1; - } - - } while (p > -1); - return errmsg; - } - private String feld_wert_to_pst(int line, int col, String errmsg, String feld_wert) throws SQLException { - - - if( col >= numberOfColumns) - errmsg+= "Anzahl Spalten in Datei ist "+col+", aber es sollten nur "+(numberOfColumns-1)+" Spalten sein. Bitte prüfen Sie das Trennzeichen"; - else - { - if (feld_wert.equals("")) - try { - pst.setNull(col + 1, insert_types[col]); - } catch (SQLException e1) { - errmsg += e1.toString(); - } else { - - switch (insert_types[col]) { - case Types.BIGINT : - case Types.TINYINT : - case Types.SMALLINT : - case Types.INTEGER : - - try { - int myInt = (int) Integer.parseInt(feld_wert.trim()); - pst.setInt(col + 1, myInt); - } catch (NumberFormatException e1) { - errmsg += e1.toString(); - setFieldToNull(col, insert_types, pst); - } catch (SQLException e1) { - errmsg += conversionException(line, col, feld_wert,e1.toString()); - setFieldToNull(col, insert_types, pst); - } - break; - case Types.FLOAT : - try { - float myFloat = - (float) Float.parseFloat(feld_wert.trim()); - pst.setFloat(col + 1, myFloat); - } catch (NumberFormatException e1) { - errmsg += conversionException(line, col, feld_wert,e1.toString()); - setFieldToNull(col, insert_types, pst); - } catch (SQLException e1) { - errmsg += conversionException(line, col, feld_wert,e1.toString()); - setFieldToNull(col, insert_types, pst); - } - break; - - case Types.REAL : - case Types.DOUBLE : - case Types.NUMERIC : - case Types.DECIMAL : - try { - double myDouble = - (double) Double.parseDouble(feld_wert.trim()); - pst.setDouble(col + 1, myDouble); - } catch (NumberFormatException e1) { - errmsg += conversionException(line, col, feld_wert,e1.toString()); - setFieldToNull(col, insert_types, pst); - } catch (SQLException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } - break; - - case Types.CHAR : - case Types.VARCHAR : - default : - if(feld_wert.equals(" ")) - feld_wert=""; //Leerzeichen im UNL-File wird zu Leerstring - try { - pst.setString(col + 1, feld_wert); - } catch (SQLException e1) { - errmsg += conversionException(line, col, feld_wert,e1.toString()); - setFieldToNull(col, insert_types, pst); - } - break; - case Types.LONGVARCHAR : - ByteArrayInputStream by = - new ByteArrayInputStream(feld_wert.getBytes()); - pst.setAsciiStream( - col + 1, - by, - feld_wert.length()); - break; - case Types.DATE : - try { - java.util.Date datum = - DateUtils.parse(feld_wert.trim()); - feld_wert = DateUtils.formatUS(datum); - //Leider ist dieser Schritt wg java.sql.Date nötig - pst.setDate( - col + 1, - java.sql.Date.valueOf(feld_wert)); - - } catch (SQLException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } catch (ParseException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } - catch (IllegalArgumentException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } - - break; - case Types.TIME : - - try { - //Time zeit = (java.sql.Time) - //DateUtils.timeParse(feld_wert); - pst.setTime(col + 1, java.sql.Time.valueOf( - feld_wert.trim())); - } catch (SQLException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } - catch (IllegalArgumentException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } - - break; - case Types.TIMESTAMP : - try { - java.util.Date datum = - DateUtils.dateTimeParse(feld_wert.trim()); - feld_wert = DateUtils.dateTimeFormatUS(datum); - //Leider ist dieser Schritt wg java.sql.Date nötig - pst.setTimestamp( - col + 1, - java.sql.Timestamp.valueOf( - feld_wert + ".0")); - - } catch (SQLException e1) { - errmsg += conversionException(line, col,feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } catch (ParseException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } - catch (IllegalArgumentException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } - - break; - - case Types.BIT : - // Types.BOOLEAN gibt es im jdk 1.3 nicht - try { - boolean wf = - (boolean) Boolean.getBoolean(feld_wert.trim()); - pst.setBoolean(col + 1, wf); - } catch (SQLException e1) { - errmsg += conversionException(line, col, feld_wert, e1.toString()); - setFieldToNull(col, insert_types, pst); - } - //Boolean wird vom Informix-Treiber als OTHER (1111) erkannt - //Da aber default '' ist, klappt es trotzdem - break; - } - - } - } - return errmsg; - } - private void setFieldToNull( - int k, - int[] insert_types, - PreparedStatement pst) { - if (mode.equals("exclude-field")) - try { - pst.setNull(k + 1, insert_types[k]); - } catch (SQLException e3) { - System.err.println("Invalid Field " + (k + 1) + " could not be set to null"); - } - - } - private String conversionException(int line,int col, String field_value, String error) { - String err_msg = ""; - - err_msg = "Error in line "+line+" in Column " + (col + 1) + " "+insert_cols[col]+" value "+ field_value+ ": " + error.toString() + "; "; - - return err_msg; - } - private void initializeColumnSchema() throws SQLException - { - int i=0; - - ResultSet rs = null; - ResultSetMetaData rsmd = null; - String tabelle=targetTable; - if (!dbmd.storesLowerCaseIdentifiers()) - tabelle = tabelle.toUpperCase(); - rs =dbmd.getColumns(uploadConnection.getCatalog(), null, tabelle, null); - rsmd = rs.getMetaData(); - while (rs.next()) { - insert_cols[i] = rs.getObject("COLUMN_NAME").toString(); - insert_types[i] = rs.getInt("DATA_TYPE"); - i++; - } - numberOfColumns=i; - if(!dbmd.supportsBatchUpdates()) - useBatch=false; - - } - private String createPreparedStatementHead() throws SQLException - { - - String sql=null; - - String insert_head = "insert into " + targetTable+"("; - String insert_val=""; - for (int i = 0; i < numberOfColumns; i++) - { - insert_head += insert_cols[i] + ", "; - insert_val+="?, "; - } - insert_head = insert_head.substring(0, insert_head.length() - 2); - insert_val = insert_val.substring(0, insert_val.length() - 2); - insert_head +=") values( "; - sql=insert_head + insert_val+");"; - return sql; - - } - public Connection getConnection(Connection myConnection,String propfile) throws Exception { - - if(myConnection==null) - { - SxConnection mySxConnection = null; - mySxConnection = new SxConnection(); - mySxConnection.setPropfile(propfile); - - myConnection = mySxConnection.getConnection(); - - String db_driver = mySxConnection.m_DriverClass; - if(db_driver.equals("org.postgresql.Driver")) - isPostgres=true; - } - dbmd = myConnection.getMetaData(); - - return myConnection; - - } - -}