You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2017/03/03 16:41:21 UTC

[tika] branch master updated: TIKA-2287 -- bug fix, improve handling when ref tables already exist

This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tika.git

The following commit(s) were added to refs/heads/master by this push:
       new  409e905   TIKA-2287 --   bug fix, improve handling when ref tables already exist
409e905 is described below

commit 409e90582cbf078716c59854e4f77ea67a591dbe
Author: tballison <ta...@mitre.org>
AuthorDate: Fri Mar 3 11:41:11 2017 -0500

    TIKA-2287 --   bug fix, improve handling when ref tables already exist
---
 .../org/apache/tika/eval/batch/EvalConsumerBuilder.java    |  6 ++++--
 .../org/apache/tika/eval/batch/EvalConsumersBuilder.java   |  5 ++++-
 .../org/apache/tika/eval/batch/ExtractComparerBuilder.java |  6 +++++-
 .../org/apache/tika/eval/batch/ExtractProfilerBuilder.java |  9 ++++++---
 .../src/main/java/org/apache/tika/eval/db/JDBCUtil.java    | 14 ++++++++++++--
 .../test/java/org/apache/tika/eval/TikaEvalCLITest.java    |  6 +++---
 6 files changed, 34 insertions(+), 12 deletions(-)

diff --git a/tika-eval/src/main/java/org/apache/tika/eval/batch/EvalConsumerBuilder.java b/tika-eval/src/main/java/org/apache/tika/eval/batch/EvalConsumerBuilder.java
index c8781e2..4a09f0b 100644
--- a/tika-eval/src/main/java/org/apache/tika/eval/batch/EvalConsumerBuilder.java
+++ b/tika-eval/src/main/java/org/apache/tika/eval/batch/EvalConsumerBuilder.java
@@ -62,7 +62,9 @@ public abstract class EvalConsumerBuilder {
 
     public abstract FileResourceConsumer build() throws IOException, SQLException;
 
-    protected abstract List<TableInfo> getTableInfo(String tableNamePrefixA, String tableNamePrefixB);
+    protected abstract List<TableInfo> getTableInfos(String tableNamePrefixA, String tableNamePrefixB);
+
+    protected abstract List<TableInfo> getRefTableInfos();
 
     protected abstract void addErrorLogTablePairs(DBConsumersManager manager);
 
@@ -113,7 +115,7 @@ public abstract class EvalConsumerBuilder {
 
     protected IDBWriter getDBWriter() throws IOException, SQLException {
         Connection conn = dbUtil.getConnection();
-        return new DBWriter(conn, getTableInfo(null, null), dbUtil, mimeBuffer);
+        return new DBWriter(conn, getTableInfos(null, null), dbUtil, mimeBuffer);
     }
 
     ExtractReader.ALTER_METADATA_LIST getAlterMetadata(Map<String, String> localAttrs) {
diff --git a/tika-eval/src/main/java/org/apache/tika/eval/batch/EvalConsumersBuilder.java b/tika-eval/src/main/java/org/apache/tika/eval/batch/EvalConsumersBuilder.java
index d1b6465..6e20df0 100644
--- a/tika-eval/src/main/java/org/apache/tika/eval/batch/EvalConsumersBuilder.java
+++ b/tika-eval/src/main/java/org/apache/tika/eval/batch/EvalConsumersBuilder.java
@@ -104,8 +104,11 @@ public class EvalConsumersBuilder extends AbstractConsumersBuilder {
         tablePrefixB = (tablePrefixB == null || tablePrefixB.endsWith("_")) ? tablePrefixB : tablePrefixB+"_";
 
         MimeBuffer mimeBuffer = null;
+        JDBCUtil.CREATE_TABLE createTable = (forceDrop) ? JDBCUtil.CREATE_TABLE.DROP_IF_EXISTS :
+                JDBCUtil.CREATE_TABLE.THROW_EX_IF_EXISTS;
         try {
-            jdbcUtil.createTables(consumerBuilder.getTableInfo(tablePrefixA, tablePrefixB), forceDrop);
+            jdbcUtil.createTables(consumerBuilder.getTableInfos(tablePrefixA, tablePrefixB), createTable);
+            jdbcUtil.createTables(consumerBuilder.getRefTableInfos(), JDBCUtil.CREATE_TABLE.SKIP_IF_EXISTS);
             mimeBuffer = new MimeBuffer(jdbcUtil.getConnection(), TikaConfig.getDefaultConfig());
             consumerBuilder.init(queue, localAttrs, jdbcUtil, mimeBuffer);
         } catch (IOException | SQLException e) {
diff --git a/tika-eval/src/main/java/org/apache/tika/eval/batch/ExtractComparerBuilder.java b/tika-eval/src/main/java/org/apache/tika/eval/batch/ExtractComparerBuilder.java
index 09152cd..8fa6c9d 100644
--- a/tika-eval/src/main/java/org/apache/tika/eval/batch/ExtractComparerBuilder.java
+++ b/tika-eval/src/main/java/org/apache/tika/eval/batch/ExtractComparerBuilder.java
@@ -101,7 +101,7 @@ public class ExtractComparerBuilder extends EvalConsumerBuilder {
     }
 
     @Override
-    protected List<TableInfo> getTableInfo(String tableNamePrefixA, String tableNamePrefixB) {
+    protected List<TableInfo> getTableInfos(String tableNamePrefixA, String tableNamePrefixB) {
         List<TableInfo> allTables = new ArrayList<>();
         if (tableNamePrefixA != null) {
             for (TableInfo tableInfo : tableInfosA) {
@@ -131,6 +131,10 @@ public class ExtractComparerBuilder extends EvalConsumerBuilder {
         return allTables;
     }
 
+    @Override
+    protected List<TableInfo> getRefTableInfos() {
+        return refTableInfos;
+    }
 
     @Override
     protected void addErrorLogTablePairs(DBConsumersManager manager) {
diff --git a/tika-eval/src/main/java/org/apache/tika/eval/batch/ExtractProfilerBuilder.java b/tika-eval/src/main/java/org/apache/tika/eval/batch/ExtractProfilerBuilder.java
index 0df225d..1f613d9 100644
--- a/tika-eval/src/main/java/org/apache/tika/eval/batch/ExtractProfilerBuilder.java
+++ b/tika-eval/src/main/java/org/apache/tika/eval/batch/ExtractProfilerBuilder.java
@@ -87,19 +87,22 @@ public class ExtractProfilerBuilder extends EvalConsumerBuilder {
 
     //TODO: clean up the interface so we don't need vestigial B
     @Override
-    protected List<TableInfo> getTableInfo(String tableNamePrefix, String tableNamePrefixB) {
+    protected List<TableInfo> getTableInfos(String tableNamePrefix, String tableNamePrefixB) {
         //ignore b
         if (tableNamePrefix != null && !tableNamePrefix.equals("null")) {
             for (TableInfo tableInfo : tableInfos) {
                 tableInfo.setNamePrefix(tableNamePrefix);
             }
         }
-        List allTables = new ArrayList();
+        List<TableInfo> allTables = new ArrayList<>();
         allTables.addAll(tableInfos);
-        allTables.addAll(refTableInfos);
         return Collections.unmodifiableList(allTables);
     }
 
+    @Override
+    protected List<TableInfo> getRefTableInfos() {
+        return refTableInfos;
+    }
 
     @Override
     protected void addErrorLogTablePairs(DBConsumersManager manager) {
diff --git a/tika-eval/src/main/java/org/apache/tika/eval/db/JDBCUtil.java b/tika-eval/src/main/java/org/apache/tika/eval/db/JDBCUtil.java
index 0f7f5a5..f8a97f3 100644
--- a/tika-eval/src/main/java/org/apache/tika/eval/db/JDBCUtil.java
+++ b/tika-eval/src/main/java/org/apache/tika/eval/db/JDBCUtil.java
@@ -41,6 +41,12 @@ import org.apache.log4j.Logger;
 
 public class JDBCUtil {
 
+    public enum CREATE_TABLE {
+        DROP_IF_EXISTS,
+        SKIP_IF_EXISTS,
+        THROW_EX_IF_EXISTS,
+    }
+
     public static Logger logger = Logger.getLogger(JDBCUtil.class);
     private final String connectionString;
     private String driverClass;
@@ -206,13 +212,17 @@ public class JDBCUtil {
         }
     }
 
-    public void createTables(List<TableInfo> tableInfos, boolean forceDrop) throws SQLException, IOException {
+    public void createTables(List<TableInfo> tableInfos, CREATE_TABLE createTable) throws SQLException, IOException {
 
         try (Connection conn = getConnection ()) {
             for (TableInfo tableInfo : tableInfos) {
 
-                if (forceDrop) {
+                if (createTable.equals(CREATE_TABLE.DROP_IF_EXISTS)) {
                     dropTableIfExists(conn, tableInfo.getName());
+                } else if (createTable.equals(CREATE_TABLE.SKIP_IF_EXISTS)) {
+                    if (containsTable(tableInfo.getName())) {
+                        continue;
+                    }
                 }
                 createTable(conn, tableInfo);
             }
diff --git a/tika-eval/src/test/java/org/apache/tika/eval/TikaEvalCLITest.java b/tika-eval/src/test/java/org/apache/tika/eval/TikaEvalCLITest.java
index a0c02ff..6c4566b 100644
--- a/tika-eval/src/test/java/org/apache/tika/eval/TikaEvalCLITest.java
+++ b/tika-eval/src/test/java/org/apache/tika/eval/TikaEvalCLITest.java
@@ -31,9 +31,9 @@ public class TikaEvalCLITest {
         List<String> args = new ArrayList<>();
         args.add("Compare");
         args.add("-extractsA");
-        args.add("watson2");
+        args.add("extractsA");
         args.add("-extractsB");
-        args.add("tika");
+        args.add("extractsB");
         args.add("-db");
         args.add("comparedb");
         args.add("-drop");
@@ -50,7 +50,7 @@ public class TikaEvalCLITest {
         List<String> args = new ArrayList<>();
         args.add("Profile");
         args.add("-extracts");
-        args.add("watson2");
+        args.add("extracts");
         args.add("-db");
         args.add("testdb");
         TikaEvalCLI.main(args.toArray(new String[args.size()]));

-- 
To stop receiving notification emails like this one, please contact
['"commits@tika.apache.org" <co...@tika.apache.org>'].