embulk 0.7.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.ruby-version +1 -0
- data/.travis.yml +18 -0
- data/COPYING +14 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +31 -0
- data/README.md +206 -0
- data/Rakefile +26 -0
- data/appveyor.yml +20 -0
- data/bin/embulk +106 -0
- data/build.gradle +338 -0
- data/embulk-cli/build.gradle +6 -0
- data/embulk-cli/src/main/java/org/embulk/cli/Main.java +22 -0
- data/embulk-cli/src/main/sh/selfrun.sh +158 -0
- data/embulk-cli/src/test/java/org/embulk/cli/DummyMain.java +23 -0
- data/embulk-cli/src/test/java/org/embulk/cli/SelfrunTest.java +281 -0
- data/embulk-core/build.gradle +59 -0
- data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +315 -0
- data/embulk-core/src/main/java/org/embulk/EmbulkService.java +76 -0
- data/embulk-core/src/main/java/org/embulk/command/PreviewPrinter.java +84 -0
- data/embulk-core/src/main/java/org/embulk/command/TablePreviewPrinter.java +107 -0
- data/embulk-core/src/main/java/org/embulk/command/VerticalPreviewPrinter.java +47 -0
- data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +33 -0
- data/embulk-core/src/main/java/org/embulk/config/Config.java +15 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +15 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +29 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +20 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +14 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +141 -0
- data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +31 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSource.java +39 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +231 -0
- data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +84 -0
- data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +20 -0
- data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +123 -0
- data/embulk-core/src/main/java/org/embulk/config/Task.java +10 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +180 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskReport.java +29 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +345 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +31 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +38 -0
- data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +24 -0
- data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +652 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +52 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionInterruptedException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +26 -0
- data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +43 -0
- data/embulk-core/src/main/java/org/embulk/exec/ForGuess.java +16 -0
- data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +16 -0
- data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +373 -0
- data/embulk-core/src/main/java/org/embulk/exec/LocalExecutorPlugin.java +129 -0
- data/embulk-core/src/main/java/org/embulk/exec/LocalThreadExecutor.java +34 -0
- data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +60 -0
- data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +18 -0
- data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +77 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +183 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +27 -0
- data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +17 -0
- data/embulk-core/src/main/java/org/embulk/exec/ResumeState.java +100 -0
- data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +136 -0
- data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +19 -0
- data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +24 -0
- data/embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java +35 -0
- data/embulk-core/src/main/java/org/embulk/guice/Bootstrap.java +157 -0
- data/embulk-core/src/main/java/org/embulk/guice/CloseableInjector.java +22 -0
- data/embulk-core/src/main/java/org/embulk/guice/InjectorProxy.java +145 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleInjector.java +26 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleInjectorProxy.java +61 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleManager.java +187 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleMethods.java +89 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleMethodsMap.java +38 -0
- data/embulk-core/src/main/java/org/embulk/guice/LifeCycleModule.java +97 -0
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +72 -0
- data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +119 -0
- data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +17 -0
- data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +96 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoader.java +168 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderFactory.java +9 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderModule.java +71 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +78 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +6 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +19 -0
- data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +47 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/InputPluginWrapper.java +102 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/PluginWrappers.java +30 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileInputWrapper.java +96 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileOutputWrapper.java +102 -0
- data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalPageOutputWrapper.java +95 -0
- data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +148 -0
- data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +8 -0
- data/embulk-core/src/main/java/org/embulk/spi/Column.java +92 -0
- data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +112 -0
- data/embulk-core/src/main/java/org/embulk/spi/ColumnVisitor.java +14 -0
- data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +16 -0
- data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +16 -0
- data/embulk-core/src/main/java/org/embulk/spi/Exec.java +113 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +6 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +217 -0
- data/embulk-core/src/main/java/org/embulk/spi/ExecutorPlugin.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/Extension.java +44 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +11 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +30 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +162 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +13 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +28 -0
- data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +202 -0
- data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +9 -0
- data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +33 -0
- data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +29 -0
- data/embulk-core/src/main/java/org/embulk/spi/Page.java +51 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +338 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +47 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +11 -0
- data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +226 -0
- data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/ProcessState.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/ProcessTask.java +117 -0
- data/embulk-core/src/main/java/org/embulk/spi/Schema.java +134 -0
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +93 -0
- data/embulk-core/src/main/java/org/embulk/spi/SchemaConfigException.java +22 -0
- data/embulk-core/src/main/java/org/embulk/spi/TaskState.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/TempFileException.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/TempFileSpace.java +87 -0
- data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +19 -0
- data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +17 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +55 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelper.java +8 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelperFactory.java +6 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +159 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +100 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +97 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +104 -0
- data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +49 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +58 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +12 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +41 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +15 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +44 -0
- data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +14 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +156 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFile.java +106 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFileSerDe.java +113 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ToString.java +54 -0
- data/embulk-core/src/main/java/org/embulk/spi/unit/ToStringMap.java +34 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +55 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnNotFoundException.java +10 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetter.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetterFactory.java +94 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/DynamicPageBuilder.java +161 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +81 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Executors.java +95 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +111 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +119 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +100 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +190 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamTransactionalFileInput.java +25 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +65 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +118 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +123 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +52 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +38 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +88 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +102 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +139 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/ResumableInputStream.java +128 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/RetryExecutor.java +130 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/Timestamps.java +53 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/AbstractDynamicColumnSetter.java +79 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/BooleanColumnSetter.java +64 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DefaultValueSetter.java +18 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DoubleColumnSetter.java +61 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/LongColumnSetter.java +69 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/NullDefaultValueSetter.java +34 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/SkipColumnSetter.java +52 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/StringColumnSetter.java +56 -0
- data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/TimestampColumnSetter.java +64 -0
- data/embulk-core/src/main/resources/embulk/logback-color.xml +72 -0
- data/embulk-core/src/main/resources/embulk/logback-console.xml +14 -0
- data/embulk-core/src/main/resources/embulk/logback-file.xml +25 -0
- data/embulk-core/src/main/resources/embulk/parent_first_packages.properties +70 -0
- data/embulk-core/src/main/resources/embulk/parent_first_resources.properties +28 -0
- data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +114 -0
- data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +72 -0
- data/embulk-core/src/test/java/org/embulk/RandomManager.java +53 -0
- data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +23 -0
- data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +17 -0
- data/embulk-core/src/test/java/org/embulk/config/TestConfigLoader.java +66 -0
- data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +114 -0
- data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +70 -0
- data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +58 -0
- data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +18 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +63 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +101 -0
- data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +73 -0
- data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +57 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestBuffer.java +24 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +89 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +196 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +207 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +188 -0
- data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +319 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +116 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +63 -0
- data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParserDeprecated.java +67 -0
- data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +45 -0
- data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +79 -0
- data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +132 -0
- data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +123 -0
- data/embulk-docs/Makefile +178 -0
- data/embulk-docs/build.gradle +32 -0
- data/embulk-docs/make.bat +243 -0
- data/embulk-docs/push-gh-pages.sh +49 -0
- data/embulk-docs/src/_static/embulk-architecture.png +0 -0
- data/embulk-docs/src/_static/embulk-logo.png +0 -0
- data/embulk-docs/src/_static/embulk-logo.svg +133 -0
- data/embulk-docs/src/built-in.rst +440 -0
- data/embulk-docs/src/conf.py +260 -0
- data/embulk-docs/src/customization.rst +184 -0
- data/embulk-docs/src/index.rst +84 -0
- data/embulk-docs/src/recipe.rst +8 -0
- data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana4.rst +153 -0
- data/embulk-docs/src/release.rst +57 -0
- data/embulk-docs/src/release/release-0.1.0.rst +8 -0
- data/embulk-docs/src/release/release-0.2.0.rst +16 -0
- data/embulk-docs/src/release/release-0.2.1.rst +19 -0
- data/embulk-docs/src/release/release-0.3.0.rst +34 -0
- data/embulk-docs/src/release/release-0.3.1.rst +11 -0
- data/embulk-docs/src/release/release-0.3.2.rst +15 -0
- data/embulk-docs/src/release/release-0.4.0.rst +74 -0
- data/embulk-docs/src/release/release-0.4.1.rst +18 -0
- data/embulk-docs/src/release/release-0.4.10.rst +17 -0
- data/embulk-docs/src/release/release-0.4.2.rst +18 -0
- data/embulk-docs/src/release/release-0.4.3.rst +34 -0
- data/embulk-docs/src/release/release-0.4.4.rst +39 -0
- data/embulk-docs/src/release/release-0.4.5.rst +24 -0
- data/embulk-docs/src/release/release-0.4.6.rst +30 -0
- data/embulk-docs/src/release/release-0.4.7.rst +16 -0
- data/embulk-docs/src/release/release-0.4.8.rst +15 -0
- data/embulk-docs/src/release/release-0.4.9.rst +23 -0
- data/embulk-docs/src/release/release-0.5.0.rst +89 -0
- data/embulk-docs/src/release/release-0.5.1.rst +13 -0
- data/embulk-docs/src/release/release-0.5.2.rst +30 -0
- data/embulk-docs/src/release/release-0.5.3.rst +22 -0
- data/embulk-docs/src/release/release-0.5.4.rst +24 -0
- data/embulk-docs/src/release/release-0.5.5.rst +18 -0
- data/embulk-docs/src/release/release-0.6.0.rst +34 -0
- data/embulk-docs/src/release/release-0.6.1.rst +11 -0
- data/embulk-docs/src/release/release-0.6.10.rst +15 -0
- data/embulk-docs/src/release/release-0.6.11.rst +19 -0
- data/embulk-docs/src/release/release-0.6.12.rst +31 -0
- data/embulk-docs/src/release/release-0.6.13.rst +23 -0
- data/embulk-docs/src/release/release-0.6.14.rst +47 -0
- data/embulk-docs/src/release/release-0.6.15.rst +26 -0
- data/embulk-docs/src/release/release-0.6.16.rst +26 -0
- data/embulk-docs/src/release/release-0.6.17.rst +39 -0
- data/embulk-docs/src/release/release-0.6.18.rst +14 -0
- data/embulk-docs/src/release/release-0.6.19.rst +18 -0
- data/embulk-docs/src/release/release-0.6.2.rst +17 -0
- data/embulk-docs/src/release/release-0.6.20.rst +19 -0
- data/embulk-docs/src/release/release-0.6.21.rst +20 -0
- data/embulk-docs/src/release/release-0.6.22.rst +26 -0
- data/embulk-docs/src/release/release-0.6.23.rst +17 -0
- data/embulk-docs/src/release/release-0.6.24.rst +13 -0
- data/embulk-docs/src/release/release-0.6.25.rst +12 -0
- data/embulk-docs/src/release/release-0.6.3.rst +23 -0
- data/embulk-docs/src/release/release-0.6.4.rst +13 -0
- data/embulk-docs/src/release/release-0.6.5.rst +17 -0
- data/embulk-docs/src/release/release-0.6.6.rst +17 -0
- data/embulk-docs/src/release/release-0.6.7.rst +17 -0
- data/embulk-docs/src/release/release-0.6.8.rst +24 -0
- data/embulk-docs/src/release/release-0.6.9.rst +24 -0
- data/embulk-docs/src/release/release-0.7.0.rst +96 -0
- data/embulk-standards/build.gradle +5 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +284 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +379 -0
- data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +411 -0
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +55 -0
- data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +71 -0
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +203 -0
- data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +148 -0
- data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +59 -0
- data/embulk-standards/src/main/java/org/embulk/standards/RenameFilterPlugin.java +56 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +16 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +53 -0
- data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +85 -0
- data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +1 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvFormatterPlugin.java +312 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +75 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +360 -0
- data/embulk-standards/src/test/java/org/embulk/standards/TestRenameFilterPlugin.java +88 -0
- data/embulk.gemspec +39 -0
- data/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/gradlew +164 -0
- data/gradlew.bat +90 -0
- data/lib/embulk.rb +72 -0
- data/lib/embulk/buffer.rb +22 -0
- data/lib/embulk/column.rb +70 -0
- data/lib/embulk/command/embulk_bundle.rb +56 -0
- data/lib/embulk/command/embulk_example.rb +32 -0
- data/lib/embulk/command/embulk_generate_bin.rb +62 -0
- data/lib/embulk/command/embulk_main.rb +2 -0
- data/lib/embulk/command/embulk_migrate_plugin.rb +170 -0
- data/lib/embulk/command/embulk_new_plugin.rb +124 -0
- data/lib/embulk/command/embulk_run.rb +470 -0
- data/lib/embulk/command/embulk_selfupdate.rb +84 -0
- data/lib/embulk/data/bundle/.bundle/config +3 -0
- data/lib/embulk/data/bundle/.ruby-version +1 -0
- data/lib/embulk/data/bundle/Gemfile +26 -0
- data/lib/embulk/data/bundle/embulk/filter/example.rb +42 -0
- data/lib/embulk/data/bundle/embulk/input/example.rb +54 -0
- data/lib/embulk/data/bundle/embulk/output/example.rb +58 -0
- data/lib/embulk/data/new/LICENSE.txt +21 -0
- data/lib/embulk/data/new/README.md.erb +111 -0
- data/lib/embulk/data/new/gitignore.erb +13 -0
- data/lib/embulk/data/new/java/build.gradle.erb +73 -0
- data/lib/embulk/data/new/java/decoder.java.erb +84 -0
- data/lib/embulk/data/new/java/encoder.java.erb +86 -0
- data/lib/embulk/data/new/java/file_input.java.erb +143 -0
- data/lib/embulk/data/new/java/file_output.java.erb +93 -0
- data/lib/embulk/data/new/java/filter.java.erb +56 -0
- data/lib/embulk/data/new/java/formatter.java.erb +54 -0
- data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
- data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +6 -0
- data/lib/embulk/data/new/java/gradlew +164 -0
- data/lib/embulk/data/new/java/gradlew.bat +90 -0
- data/lib/embulk/data/new/java/input.java.erb +87 -0
- data/lib/embulk/data/new/java/output.java.erb +77 -0
- data/lib/embulk/data/new/java/parser.java.erb +60 -0
- data/lib/embulk/data/new/java/plugin_loader.rb.erb +3 -0
- data/lib/embulk/data/new/java/test.java.erb +5 -0
- data/lib/embulk/data/new/ruby/.ruby-version +1 -0
- data/lib/embulk/data/new/ruby/Gemfile +2 -0
- data/lib/embulk/data/new/ruby/Rakefile +3 -0
- data/lib/embulk/data/new/ruby/decoder_guess.rb.erb +25 -0
- data/lib/embulk/data/new/ruby/filter.rb.erb +41 -0
- data/lib/embulk/data/new/ruby/formatter.rb.erb +49 -0
- data/lib/embulk/data/new/ruby/gemspec.erb +20 -0
- data/lib/embulk/data/new/ruby/input.rb.erb +59 -0
- data/lib/embulk/data/new/ruby/output.rb.erb +61 -0
- data/lib/embulk/data/new/ruby/parser.rb.erb +44 -0
- data/lib/embulk/data/new/ruby/parser_guess.rb.erb +65 -0
- data/lib/embulk/data/package_data.rb +50 -0
- data/lib/embulk/data_source.rb +220 -0
- data/lib/embulk/decoder_plugin.rb +27 -0
- data/lib/embulk/encoder_plugin.rb +27 -0
- data/lib/embulk/error.rb +8 -0
- data/lib/embulk/executor_plugin.rb +23 -0
- data/lib/embulk/file_input.rb +87 -0
- data/lib/embulk/file_input_plugin.rb +27 -0
- data/lib/embulk/file_output.rb +56 -0
- data/lib/embulk/file_output_plugin.rb +27 -0
- data/lib/embulk/filter_plugin.rb +105 -0
- data/lib/embulk/formatter_plugin.rb +105 -0
- data/lib/embulk/guess/charset.rb +44 -0
- data/lib/embulk/guess/csv.rb +327 -0
- data/lib/embulk/guess/gzip.rb +18 -0
- data/lib/embulk/guess/newline.rb +22 -0
- data/lib/embulk/guess/schema_guess.rb +118 -0
- data/lib/embulk/guess/time_format_guess.rb +394 -0
- data/lib/embulk/guess_plugin.rb +129 -0
- data/lib/embulk/input_plugin.rb +121 -0
- data/lib/embulk/java/bootstrap.rb +24 -0
- data/lib/embulk/java/imports.rb +69 -0
- data/lib/embulk/java/time_helper.rb +79 -0
- data/lib/embulk/java_plugin.rb +90 -0
- data/lib/embulk/logger.rb +154 -0
- data/lib/embulk/output_plugin.rb +150 -0
- data/lib/embulk/page.rb +30 -0
- data/lib/embulk/page_builder.rb +76 -0
- data/lib/embulk/parser_plugin.rb +78 -0
- data/lib/embulk/plugin.rb +239 -0
- data/lib/embulk/plugin_registry.rb +96 -0
- data/lib/embulk/runner.rb +184 -0
- data/lib/embulk/schema.rb +103 -0
- data/lib/embulk/version.rb +3 -0
- data/settings.gradle +6 -0
- data/test/guess/test_schema_guess.rb +11 -0
- data/test/guess/test_time_format_guess.rb +133 -0
- data/test/helper.rb +21 -0
- data/test/run-test.rb +14 -0
- metadata +566 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
package <%= java_package_name %>;
|
|
2
|
+
|
|
3
|
+
import java.io.InputStream;
|
|
4
|
+
import java.io.IOException;
|
|
5
|
+
import com.google.common.base.Optional;
|
|
6
|
+
import org.embulk.config.Config;
|
|
7
|
+
import org.embulk.config.ConfigDefault;
|
|
8
|
+
import org.embulk.config.ConfigInject;
|
|
9
|
+
import org.embulk.config.ConfigSource;
|
|
10
|
+
import org.embulk.config.Task;
|
|
11
|
+
import org.embulk.config.TaskSource;
|
|
12
|
+
import org.embulk.spi.DecoderPlugin;
|
|
13
|
+
import org.embulk.spi.FileInput;
|
|
14
|
+
import org.embulk.spi.BufferAllocator;
|
|
15
|
+
import org.embulk.spi.util.FileInputInputStream;
|
|
16
|
+
import org.embulk.spi.util.InputStreamFileInput;
|
|
17
|
+
|
|
18
|
+
public class <%= java_class_name %>
|
|
19
|
+
implements DecoderPlugin
|
|
20
|
+
{
|
|
21
|
+
public interface PluginTask
|
|
22
|
+
extends Task
|
|
23
|
+
{
|
|
24
|
+
// configuration option 1 (required integer)
|
|
25
|
+
@Config("option1")
|
|
26
|
+
public int getOption1();
|
|
27
|
+
|
|
28
|
+
// configuration option 2 (optional string, null is not allowed)
|
|
29
|
+
@Config("optoin2")
|
|
30
|
+
@ConfigDefault("\"myvalue\"")
|
|
31
|
+
public String getOption2();
|
|
32
|
+
|
|
33
|
+
// configuration option 3 (optional string, null is allowed)
|
|
34
|
+
@Config("optoin3")
|
|
35
|
+
@ConfigDefault("null")
|
|
36
|
+
public Optional<String> getOption3();
|
|
37
|
+
|
|
38
|
+
@ConfigInject
|
|
39
|
+
public BufferAllocator getBufferAllocator();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@Override
|
|
43
|
+
public void transaction(ConfigSource config, DecoderPlugin.Control control)
|
|
44
|
+
{
|
|
45
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
|
46
|
+
|
|
47
|
+
control.run(task.dump());
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@Override
|
|
51
|
+
public FileInput open(TaskSource taskSource, FileInput fileInput)
|
|
52
|
+
{
|
|
53
|
+
final PluginTask task = taskSource.loadTask(PluginTask.class);
|
|
54
|
+
|
|
55
|
+
// Write your code here :)
|
|
56
|
+
throw new UnsupportedOperationException("<%= java_class_name %>.open method is not implemented yet");
|
|
57
|
+
|
|
58
|
+
// If expect InputStream, you can use this code:
|
|
59
|
+
|
|
60
|
+
//final FileInputInputStream files = new FileInputInputStream(fileInput);
|
|
61
|
+
//
|
|
62
|
+
//return new InputStreamFileInput(
|
|
63
|
+
// task.getBufferAllocator(),
|
|
64
|
+
// new InputStreamFileInput.Provider() {
|
|
65
|
+
// public InputStream openNext() throws IOException
|
|
66
|
+
// {
|
|
67
|
+
// if (!files.nextFile()) {
|
|
68
|
+
// return null;
|
|
69
|
+
// }
|
|
70
|
+
// return newDecoderInputStream(task, files);
|
|
71
|
+
// }
|
|
72
|
+
//
|
|
73
|
+
// public void close() throws IOException
|
|
74
|
+
// {
|
|
75
|
+
// files.close();
|
|
76
|
+
// }
|
|
77
|
+
// });
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//private static InputStream newDecoderInputStream(PluginTask task, InputStream file) throws IOException
|
|
81
|
+
//{
|
|
82
|
+
// return new MyInputStream(file);
|
|
83
|
+
//}
|
|
84
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
package <%= java_package_name %>;
|
|
2
|
+
|
|
3
|
+
import java.io.OutputStream;
|
|
4
|
+
import java.io.IOException;
|
|
5
|
+
import com.google.common.base.Optional;
|
|
6
|
+
import org.embulk.config.Config;
|
|
7
|
+
import org.embulk.config.ConfigDefault;
|
|
8
|
+
import org.embulk.config.ConfigInject;
|
|
9
|
+
import org.embulk.config.ConfigSource;
|
|
10
|
+
import org.embulk.config.Task;
|
|
11
|
+
import org.embulk.config.TaskSource;
|
|
12
|
+
import org.embulk.spi.EncoderPlugin;
|
|
13
|
+
import org.embulk.spi.FileOutput;
|
|
14
|
+
import org.embulk.spi.BufferAllocator;
|
|
15
|
+
import org.embulk.spi.util.FileOutputOutputStream;
|
|
16
|
+
import org.embulk.spi.util.OutputStreamFileOutput;
|
|
17
|
+
|
|
18
|
+
public class <%= java_class_name %>
|
|
19
|
+
implements EncoderPlugin
|
|
20
|
+
{
|
|
21
|
+
public interface PluginTask
|
|
22
|
+
extends Task
|
|
23
|
+
{
|
|
24
|
+
// configuration option 1 (required integer)
|
|
25
|
+
@Config("option1")
|
|
26
|
+
public int getOption1();
|
|
27
|
+
|
|
28
|
+
// configuration option 2 (optional string, null is not allowed)
|
|
29
|
+
@Config("optoin2")
|
|
30
|
+
@ConfigDefault("\"myvalue\"")
|
|
31
|
+
public String getOption2();
|
|
32
|
+
|
|
33
|
+
// configuration option 3 (optional string, null is allowed)
|
|
34
|
+
@Config("optoin3")
|
|
35
|
+
@ConfigDefault("null")
|
|
36
|
+
public Optional<String> getOption3();
|
|
37
|
+
|
|
38
|
+
@ConfigInject
|
|
39
|
+
public BufferAllocator getBufferAllocator();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@Override
|
|
43
|
+
public void transaction(ConfigSource config, EncoderPlugin.Control control)
|
|
44
|
+
{
|
|
45
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
|
46
|
+
|
|
47
|
+
control.run(task.dump());
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@Override
|
|
51
|
+
public FileOutput open(TaskSource taskSource, FileOutput fileOutput)
|
|
52
|
+
{
|
|
53
|
+
final PluginTask task = taskSource.loadTask(PluginTask.class);
|
|
54
|
+
|
|
55
|
+
// Write your code here :)
|
|
56
|
+
throw new UnsupportedOperationException("<%= java_class_name %>.open method is not implemented yet");
|
|
57
|
+
|
|
58
|
+
// If expect OutputStream, you can use this code:
|
|
59
|
+
|
|
60
|
+
//final FileOutputOutputStream output = new FileOutputOutputStream(fileOutput,
|
|
61
|
+
// task.getBufferAllocator(), FileOutputOutputStream.CloseMode.FLUSH);
|
|
62
|
+
//
|
|
63
|
+
//return new OutputStreamFileOutput(new OutputStreamFileOutput.Provider() {
|
|
64
|
+
// public OutputStream openNext() throws IOException
|
|
65
|
+
// {
|
|
66
|
+
// output.nextFile();
|
|
67
|
+
// return newEncoderOutputStream(task, output);
|
|
68
|
+
// }
|
|
69
|
+
//
|
|
70
|
+
// public void finish() throws IOException
|
|
71
|
+
// {
|
|
72
|
+
// output.finish();
|
|
73
|
+
// }
|
|
74
|
+
//
|
|
75
|
+
// public void close() throws IOException
|
|
76
|
+
// {
|
|
77
|
+
// output.close();
|
|
78
|
+
// }
|
|
79
|
+
//});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//private static OutputStream newEncoderOutputStream(PluginTask task, OutputStream file) throws IOException
|
|
83
|
+
//{
|
|
84
|
+
// return new MyOutputStream(file);
|
|
85
|
+
//}
|
|
86
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
package <%= java_package_name %>;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import java.util.ArrayList;
|
|
5
|
+
import com.google.common.base.Optional;
|
|
6
|
+
import com.google.common.collect.ImmutableList;
|
|
7
|
+
import org.embulk.config.TaskReport;
|
|
8
|
+
import org.embulk.config.Config;
|
|
9
|
+
import org.embulk.config.ConfigDefault;
|
|
10
|
+
import org.embulk.config.ConfigInject;
|
|
11
|
+
import org.embulk.config.ConfigDiff;
|
|
12
|
+
import org.embulk.config.ConfigSource;
|
|
13
|
+
import org.embulk.config.Task;
|
|
14
|
+
import org.embulk.config.TaskSource;
|
|
15
|
+
import org.embulk.spi.Exec;
|
|
16
|
+
import org.embulk.spi.FileInputPlugin;
|
|
17
|
+
import org.embulk.spi.BufferAllocator;
|
|
18
|
+
import org.embulk.spi.TransactionalFileInput;
|
|
19
|
+
import org.embulk.spi.util.InputStreamTransactionalFileInput;
|
|
20
|
+
|
|
21
|
+
public class <%= java_class_name %>
|
|
22
|
+
implements FileInputPlugin
|
|
23
|
+
{
|
|
24
|
+
public interface PluginTask
|
|
25
|
+
extends Task
|
|
26
|
+
{
|
|
27
|
+
// configuration option 1 (required integer)
|
|
28
|
+
@Config("option1")
|
|
29
|
+
public int getOption1();
|
|
30
|
+
|
|
31
|
+
// configuration option 2 (optional string, null is not allowed)
|
|
32
|
+
@Config("optoin2")
|
|
33
|
+
@ConfigDefault("\"myvalue\"")
|
|
34
|
+
public String getOption2();
|
|
35
|
+
|
|
36
|
+
// configuration option 3 (optional string, null is allowed)
|
|
37
|
+
@Config("optoin3")
|
|
38
|
+
@ConfigDefault("null")
|
|
39
|
+
public Optional<String> getOption3();
|
|
40
|
+
|
|
41
|
+
//@Config("path_prefix")
|
|
42
|
+
//public String getPathPrefix();
|
|
43
|
+
|
|
44
|
+
//@Config("last_path")
|
|
45
|
+
//@ConfigDefault("null")
|
|
46
|
+
//public Optional<String> getLastPath();
|
|
47
|
+
|
|
48
|
+
// usually, you store list of files in task to pass them from transaction() to run().
|
|
49
|
+
//public List<String> getFiles();
|
|
50
|
+
//public void setFiles(List<String> files);
|
|
51
|
+
|
|
52
|
+
@ConfigInject
|
|
53
|
+
public BufferAllocator getBufferAllocator();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@Override
|
|
57
|
+
public ConfigDiff transaction(ConfigSource config, FileInputPlugin.Control control)
|
|
58
|
+
{
|
|
59
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
|
60
|
+
|
|
61
|
+
// run() method is called for this number of times in parallel.
|
|
62
|
+
int taskCount = 1;
|
|
63
|
+
|
|
64
|
+
// usually, taskCount is number of input files.
|
|
65
|
+
//task.setFiles(listFiles(task));
|
|
66
|
+
//int taskCount = task.getFiles().size();
|
|
67
|
+
|
|
68
|
+
return resume(task.dump(), taskCount, control);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// usually, you have an method to create list of files
|
|
72
|
+
//List<String> listFiles(PluginTask task)
|
|
73
|
+
//{
|
|
74
|
+
// final ImmutableList.Builder<String> builder = ImmutableList.builder();
|
|
75
|
+
// for (String path : listFilesWithPrefix(task.getPathPrefix())) {
|
|
76
|
+
// if (task.getLastPath().isPresent() && path.compareTo(task.getLastPath().get())) {
|
|
77
|
+
// continue;
|
|
78
|
+
// }
|
|
79
|
+
// builder.add(path);
|
|
80
|
+
// }
|
|
81
|
+
// return builder.build();
|
|
82
|
+
//}
|
|
83
|
+
|
|
84
|
+
@Override
|
|
85
|
+
public ConfigDiff resume(TaskSource taskSource,
|
|
86
|
+
int taskCount,
|
|
87
|
+
FileInputPlugin.Control control)
|
|
88
|
+
{
|
|
89
|
+
control.run(taskSource, taskCount);
|
|
90
|
+
|
|
91
|
+
ConfigDiff configDiff = Exec.newConfigDiff();
|
|
92
|
+
|
|
93
|
+
// usually, yo uset last_path
|
|
94
|
+
//if (task.getFiles().isEmpty()) {
|
|
95
|
+
// if (task.getLastPath().isPresent()) {
|
|
96
|
+
// configDiff.set("last_path", task.getLastPath().get());
|
|
97
|
+
// }
|
|
98
|
+
//} else {
|
|
99
|
+
// List<String> files = new ArrayList<String>(task.getFiles());
|
|
100
|
+
// Collections.sort(files);
|
|
101
|
+
// configDiff.set("last_path", files.get(files.size() - 1));
|
|
102
|
+
//}
|
|
103
|
+
|
|
104
|
+
return configDiff;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@Override
|
|
108
|
+
public void cleanup(TaskSource taskSource,
|
|
109
|
+
int taskCount,
|
|
110
|
+
List<TaskReport> successTaskReports)
|
|
111
|
+
{
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@Override
|
|
115
|
+
public TransactionalFileInput open(TaskSource taskSource, int taskIndex)
|
|
116
|
+
{
|
|
117
|
+
final PluginTask task = taskSource.loadTask(PluginTask.class);
|
|
118
|
+
|
|
119
|
+
// Write your code here :)
|
|
120
|
+
throw new UnsupportedOperationException("<%= java_class_name %>.open method is not implemented yet");
|
|
121
|
+
|
|
122
|
+
// if you expect InputStream, you can use this code:
|
|
123
|
+
|
|
124
|
+
//InputStream input = openInputStream(task, task.getFiles().get(taskIndex));
|
|
125
|
+
//
|
|
126
|
+
//return new InputStreamTransactionalFileInput(task.getBufferAllocator(), input) {
|
|
127
|
+
// @Override
|
|
128
|
+
// public void abort()
|
|
129
|
+
// { }
|
|
130
|
+
//
|
|
131
|
+
// @Override
|
|
132
|
+
// public TaskReport commit()
|
|
133
|
+
// {
|
|
134
|
+
// return Exec.newTaskReport();
|
|
135
|
+
// }
|
|
136
|
+
//}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
//private static InputStream openInputStream(PluginTask task, String path)
|
|
140
|
+
//{
|
|
141
|
+
// return new MyInputStream(file);
|
|
142
|
+
//}
|
|
143
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
package <%= java_package_name %>;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import com.google.common.base.Optional;
|
|
5
|
+
import org.embulk.config.TaskReport;
|
|
6
|
+
import org.embulk.config.Config;
|
|
7
|
+
import org.embulk.config.ConfigDefault;
|
|
8
|
+
import org.embulk.config.ConfigDiff;
|
|
9
|
+
import org.embulk.config.ConfigSource;
|
|
10
|
+
import org.embulk.config.Task;
|
|
11
|
+
import org.embulk.config.TaskSource;
|
|
12
|
+
import org.embulk.spi.Exec;
|
|
13
|
+
import org.embulk.spi.FileOutputPlugin;
|
|
14
|
+
import org.embulk.spi.TransactionalFileOutput;
|
|
15
|
+
|
|
16
|
+
public class <%= java_class_name %>
|
|
17
|
+
implements FileOutputPlugin
|
|
18
|
+
{
|
|
19
|
+
public interface PluginTask
|
|
20
|
+
extends Task
|
|
21
|
+
{
|
|
22
|
+
// configuration option 1 (required integer)
|
|
23
|
+
@Config("option1")
|
|
24
|
+
public int getOption1();
|
|
25
|
+
|
|
26
|
+
// configuration option 2 (optional string, null is not allowed)
|
|
27
|
+
@Config("optoin2")
|
|
28
|
+
@ConfigDefault("\"myvalue\"")
|
|
29
|
+
public String getOption2();
|
|
30
|
+
|
|
31
|
+
// configuration option 3 (optional string, null is allowed)
|
|
32
|
+
@Config("optoin3")
|
|
33
|
+
@ConfigDefault("null")
|
|
34
|
+
public Optional<String> getOption3();
|
|
35
|
+
|
|
36
|
+
// usually, run() method needs to write multiple files because size of a file
|
|
37
|
+
// can be very large. So, file name will be:
|
|
38
|
+
//
|
|
39
|
+
// path_prefix + String.format(sequence_format, taskIndex, sequenceCounterInRunMethod) + file_ext
|
|
40
|
+
//
|
|
41
|
+
|
|
42
|
+
//@Config("path_prefix")
|
|
43
|
+
//public String getPathPrefix();
|
|
44
|
+
|
|
45
|
+
//@Config("file_ext")
|
|
46
|
+
//public String getFileNameExtension();
|
|
47
|
+
|
|
48
|
+
//@Config("sequence_format")
|
|
49
|
+
//@ConfigDefault("\"%03d.%02d.\"")
|
|
50
|
+
//public String getSequenceFormat();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@Override
|
|
54
|
+
public ConfigDiff transaction(ConfigSource config, int taskCount,
|
|
55
|
+
FileOutputPlugin.Control control)
|
|
56
|
+
{
|
|
57
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
|
58
|
+
|
|
59
|
+
// retryable (idempotent) output:
|
|
60
|
+
// return resume(task.dump(), taskCount, control);
|
|
61
|
+
|
|
62
|
+
// non-retryable (non-idempotent) output:
|
|
63
|
+
control.run(task.dump());
|
|
64
|
+
return Exec.newConfigDiff();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@Override
|
|
68
|
+
public ConfigDiff resume(TaskSource taskSource,
|
|
69
|
+
int taskCount,
|
|
70
|
+
FileOutputPlugin.Control control)
|
|
71
|
+
{
|
|
72
|
+
throw new UnsupportedOperationException("<%= name %> output plugin does not support resuming");
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@Override
|
|
76
|
+
public void cleanup(TaskSource taskSource,
|
|
77
|
+
int taskCount,
|
|
78
|
+
List<TaskReport> successTaskReports)
|
|
79
|
+
{
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@Override
|
|
83
|
+
public TransactionalFileOutput open(TaskSource taskSource, final int taskIndex)
|
|
84
|
+
{
|
|
85
|
+
PluginTask task = taskSource.loadTask(PluginTask.class);
|
|
86
|
+
|
|
87
|
+
// Write your code here :)
|
|
88
|
+
throw new UnsupportedOperationException("<%= java_class_name %>.open method is not implemented yet");
|
|
89
|
+
|
|
90
|
+
// See LocalFileOutputPlugin as an example implementation:
|
|
91
|
+
// https://github.com/embulk/embulk/blob/master/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
package <%= java_package_name %>;
|
|
2
|
+
|
|
3
|
+
import com.google.common.base.Optional;
|
|
4
|
+
import org.embulk.config.Config;
|
|
5
|
+
import org.embulk.config.ConfigDefault;
|
|
6
|
+
import org.embulk.config.ConfigDiff;
|
|
7
|
+
import org.embulk.config.ConfigSource;
|
|
8
|
+
import org.embulk.config.Task;
|
|
9
|
+
import org.embulk.config.TaskSource;
|
|
10
|
+
import org.embulk.spi.Column;
|
|
11
|
+
import org.embulk.spi.FilterPlugin;
|
|
12
|
+
import org.embulk.spi.PageOutput;
|
|
13
|
+
import org.embulk.spi.Schema;
|
|
14
|
+
|
|
15
|
+
public class <%= java_class_name %>
|
|
16
|
+
implements FilterPlugin
|
|
17
|
+
{
|
|
18
|
+
public interface PluginTask
|
|
19
|
+
extends Task
|
|
20
|
+
{
|
|
21
|
+
// configuration option 1 (required integer)
|
|
22
|
+
@Config("option1")
|
|
23
|
+
public int getOption1();
|
|
24
|
+
|
|
25
|
+
// configuration option 2 (optional string, null is not allowed)
|
|
26
|
+
@Config("optoin2")
|
|
27
|
+
@ConfigDefault("\"myvalue\"")
|
|
28
|
+
public String getOption2();
|
|
29
|
+
|
|
30
|
+
// configuration option 3 (optional string, null is allowed)
|
|
31
|
+
@Config("optoin3")
|
|
32
|
+
@ConfigDefault("null")
|
|
33
|
+
public Optional<String> getOption3();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@Override
|
|
37
|
+
public void transaction(ConfigSource config, Schema inputSchema,
|
|
38
|
+
FilterPlugin.Control control)
|
|
39
|
+
{
|
|
40
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
|
41
|
+
|
|
42
|
+
Schema outputSchema = inputSchema;
|
|
43
|
+
|
|
44
|
+
control.run(task.dump(), outputSchema);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Override
|
|
48
|
+
public PageOutput open(TaskSource taskSource, Schema inputSchema,
|
|
49
|
+
Schema outputSchema, PageOutput output)
|
|
50
|
+
{
|
|
51
|
+
PluginTask task = taskSource.loadTask(PluginTask.class);
|
|
52
|
+
|
|
53
|
+
// Write your code here :)
|
|
54
|
+
throw new UnsupportedOperationException("<%= java_class_name %>.open method is not implemented yet");
|
|
55
|
+
}
|
|
56
|
+
}
|