Class JDBCEmitter
java.lang.Object
org.apache.tika.pipes.emitter.AbstractEmitter
org.apache.tika.pipes.emitter.jdbc.JDBCEmitter
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Initializable
,Emitter
This is only an initial, basic implementation of an emitter for JDBC.
It is currently NOT thread safe because of the shared prepared statement, and depending on the jdbc implementation because of the shared connection.
As of the 2.5.0 release, this is ALPHA version. There may be breaking changes in the future.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
static enum
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
checkInitialization
(InitializableProblemHandler problemHandler) void
close()
void
This executes the emit with each call.void
The default behavior is to callEmitter.emit(String, List)
on each item.void
initialize
(Map<String, Param> params) void
setAlterTable
(String alterTable) This is called immediately after the table is created.void
setAttachmentStrategy
(String attachmentStrategy) void
setAttachmentStrategy
(JDBCEmitter.AttachmentStrategy attachmentStrategy) void
setConnection
(String connection) void
setCreateTable
(String createTable) void
void
The implementation of keys should be a LinkedHashMap because order matters!void
setMaxRetries
(int maxRetries) void
setMaxStringLength
(int maxStringLength) Set the maximum string length in characters (not bytes).void
setMultivaluedFieldDelimiter
(String delimiter) void
setMultivaluedFieldStrategy
(String strategy) This applies to fields of type 'string' or 'varchar'.void
setMultivaluedFieldStrategy
(JDBCEmitter.MultivaluedFieldStrategy multivaluedFieldStrategy) void
setPostConnection
(String postConnection) This sql will be called immediately after the connection is made.Methods inherited from class org.apache.tika.pipes.emitter.AbstractEmitter
getName, setName
-
Constructor Details
-
JDBCEmitter
public JDBCEmitter()
-
-
Method Details
-
setAlterTable
This is called immediately after the table is created. The purpose of this is to allow for adding a complex primary key or other constraint on the table after it is created.- Parameters:
alterTable
-
-
setCreateTable
-
setInsert
-
setConnection
-
setMaxStringLength
Set the maximum string length in characters (not bytes). This is applies only to fields with name "string" not to "varchar".- Parameters:
maxStringLength
-
-
setMaxRetries
public void setMaxRetries(int maxRetries) -
setPostConnection
This sql will be called immediately after the connection is made. This was initially added for setting pragmas on sqlite3, but may be used for other connection configuration in other dbs. Note: This is called before the table is created if it needs to be created.- Parameters:
postConnection
-
-
setMultivaluedFieldStrategy
This applies to fields of type 'string' or 'varchar'. If there's a multivalued field in a metadata object, do you want the first value only or should we concatenate these with thesetMultivaluedFieldDelimiter(String)
.The default values as of 2.6.1 are
JDBCEmitter.MultivaluedFieldStrategy.CONCATENATE
and the default delimiter is ", "- Parameters:
strategy
-- Throws:
TikaConfigException
-
setMultivaluedFieldStrategy
public void setMultivaluedFieldStrategy(JDBCEmitter.MultivaluedFieldStrategy multivaluedFieldStrategy) -
setMultivaluedFieldDelimiter
- Parameters:
delimiter
-
-
setKeys
The implementation of keys should be a LinkedHashMap because order matters!Key is the name of the metadata field, value is the type of column: boolean, string, int, long
- Parameters:
keys
-
-
setAttachmentStrategy
-
setAttachmentStrategy
-
emit
public void emit(String emitKey, List<Metadata> metadataList) throws IOException, TikaEmitterException This executes the emit with each call. For more efficient batch execution useemit(List)
.- Specified by:
emit
in interfaceEmitter
- Parameters:
emitKey
- emit keymetadataList
- list of metadata per file- Throws:
IOException
TikaEmitterException
-
emit
Description copied from class:AbstractEmitter
The default behavior is to callEmitter.emit(String, List)
on each item. Some implementations, e.g. Solr/ES/vespa, can benefit from subclassing this and emitting a bunch of docs at once.- Specified by:
emit
in interfaceEmitter
- Overrides:
emit
in classAbstractEmitter
- Throws:
IOException
TikaEmitterException
-
initialize
- Specified by:
initialize
in interfaceInitializable
- Parameters:
params
- params to use for initialization- Throws:
TikaConfigException
-
checkInitialization
public void checkInitialization(InitializableProblemHandler problemHandler) throws TikaConfigException - Specified by:
checkInitialization
in interfaceInitializable
- Parameters:
problemHandler
- if there is a problem and no custom initializableProblemHandler has been configured via Initializable parameters, this is called to respond.- Throws:
TikaConfigException
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-