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>'].