Class JDBCEmitter
- java.lang.Object
-
- org.apache.tika.pipes.emitter.AbstractEmitter
-
- org.apache.tika.pipes.emitter.jdbc.JDBCEmitter
-
- All Implemented Interfaces:
Closeable,AutoCloseable,org.apache.tika.config.Initializable,org.apache.tika.pipes.emitter.Emitter
public class JDBCEmitter extends org.apache.tika.pipes.emitter.AbstractEmitter implements org.apache.tika.config.Initializable, Closeable
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
Nested Classes Modifier and Type Class Description static classJDBCEmitter.AttachmentStrategystatic classJDBCEmitter.MultivaluedFieldStrategy
-
Constructor Summary
Constructors Constructor Description JDBCEmitter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheckInitialization(org.apache.tika.config.InitializableProblemHandler problemHandler)voidclose()voidemit(String emitKey, List<org.apache.tika.metadata.Metadata> metadataList, org.apache.tika.parser.ParseContext parseContext)This executes the emit with each call.voidemit(List<? extends org.apache.tika.pipes.emitter.EmitData> emitData)voidinitialize(Map<String,org.apache.tika.config.Param> params)voidsetAlterTable(String alterTable)This is called immediately after the table is created.voidsetAttachmentStrategy(String attachmentStrategy)voidsetAttachmentStrategy(JDBCEmitter.AttachmentStrategy attachmentStrategy)voidsetConnection(String connection)voidsetCreateTable(String createTable)voidsetInsert(String insert)voidsetKeys(Map<String,String> keys)The implementation of keys should be a LinkedHashMap because order matters!voidsetMaxRetries(int maxRetries)voidsetMaxStringLength(int maxStringLength)Set the maximum string length in characters (not bytes).voidsetMultivaluedFieldDelimiter(String delimiter)voidsetMultivaluedFieldStrategy(String strategy)This applies to fields of type 'string' or 'varchar'.voidsetMultivaluedFieldStrategy(JDBCEmitter.MultivaluedFieldStrategy multivaluedFieldStrategy)voidsetPostConnection(String postConnection)This sql will be called immediately after the connection is made.
-
-
-
Method Detail
-
setAlterTable
public void setAlterTable(String alterTable)
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
@Field public void setCreateTable(String createTable)
-
setInsert
@Field public void setInsert(String insert)
-
setConnection
@Field public void setConnection(String connection)
-
setMaxStringLength
@Field public void setMaxStringLength(int maxStringLength)
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
@Field public void setPostConnection(String postConnection)
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
@Field public void setMultivaluedFieldStrategy(String strategy) throws org.apache.tika.exception.TikaConfigException
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.CONCATENATEand the default delimiter is ", "- Parameters:
strategy-- Throws:
org.apache.tika.exception.TikaConfigException
-
setMultivaluedFieldStrategy
public void setMultivaluedFieldStrategy(JDBCEmitter.MultivaluedFieldStrategy multivaluedFieldStrategy)
-
setMultivaluedFieldDelimiter
@Field public void setMultivaluedFieldDelimiter(String delimiter)
- Parameters:
delimiter-
-
setKeys
@Field public void setKeys(Map<String,String> keys)
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
public void setAttachmentStrategy(JDBCEmitter.AttachmentStrategy attachmentStrategy)
-
setAttachmentStrategy
@Field public void setAttachmentStrategy(String attachmentStrategy)
-
emit
public void emit(String emitKey, List<org.apache.tika.metadata.Metadata> metadataList, org.apache.tika.parser.ParseContext parseContext) throws IOException, org.apache.tika.pipes.emitter.TikaEmitterException
This executes the emit with each call. For more efficient batch execution useemit(List).- Specified by:
emitin interfaceorg.apache.tika.pipes.emitter.Emitter- Parameters:
emitKey- emit keymetadataList- list of metadata per file- Throws:
IOExceptionorg.apache.tika.pipes.emitter.TikaEmitterException
-
emit
public void emit(List<? extends org.apache.tika.pipes.emitter.EmitData> emitData) throws IOException, org.apache.tika.pipes.emitter.TikaEmitterException
- Specified by:
emitin interfaceorg.apache.tika.pipes.emitter.Emitter- Overrides:
emitin classorg.apache.tika.pipes.emitter.AbstractEmitter- Throws:
IOExceptionorg.apache.tika.pipes.emitter.TikaEmitterException
-
initialize
public void initialize(Map<String,org.apache.tika.config.Param> params) throws org.apache.tika.exception.TikaConfigException
- Specified by:
initializein interfaceorg.apache.tika.config.Initializable- Throws:
org.apache.tika.exception.TikaConfigException
-
checkInitialization
public void checkInitialization(org.apache.tika.config.InitializableProblemHandler problemHandler) throws org.apache.tika.exception.TikaConfigException- Specified by:
checkInitializationin interfaceorg.apache.tika.config.Initializable- Throws:
org.apache.tika.exception.TikaConfigException
-
close
public void close() throws IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
-