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,119 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.io.OutputStream;
|
|
4
|
+
import org.embulk.spi.Buffer;
|
|
5
|
+
import org.embulk.spi.BufferAllocator;
|
|
6
|
+
import org.embulk.spi.FileOutput;
|
|
7
|
+
|
|
8
|
+
public class FileOutputOutputStream
|
|
9
|
+
extends OutputStream
|
|
10
|
+
{
|
|
11
|
+
private final FileOutput out;
|
|
12
|
+
private final BufferAllocator allocator;
|
|
13
|
+
private final CloseMode closeMode;
|
|
14
|
+
private int pos;
|
|
15
|
+
private Buffer buffer;
|
|
16
|
+
|
|
17
|
+
public static enum CloseMode {
|
|
18
|
+
FLUSH,
|
|
19
|
+
FLUSH_FINISH,
|
|
20
|
+
FLUSH_FINISH_CLOSE,
|
|
21
|
+
CLOSE;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public FileOutputOutputStream(FileOutput out, BufferAllocator allocator, CloseMode closeMode)
|
|
25
|
+
{
|
|
26
|
+
this.out = out;
|
|
27
|
+
this.allocator = allocator;
|
|
28
|
+
this.buffer = allocator.allocate();
|
|
29
|
+
this.closeMode = closeMode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public void nextFile()
|
|
33
|
+
{
|
|
34
|
+
out.nextFile();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public void finish()
|
|
38
|
+
{
|
|
39
|
+
doFlush();
|
|
40
|
+
out.finish();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Override
|
|
44
|
+
public void write(int b)
|
|
45
|
+
{
|
|
46
|
+
buffer.array()[buffer.offset() + pos] = (byte) b;
|
|
47
|
+
pos++;
|
|
48
|
+
if (pos >= buffer.capacity()) {
|
|
49
|
+
flush();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@Override
|
|
54
|
+
public void write(byte[] b, int off, int len)
|
|
55
|
+
{
|
|
56
|
+
while (true) {
|
|
57
|
+
int available = buffer.capacity() - pos;
|
|
58
|
+
if (available < len) {
|
|
59
|
+
buffer.setBytes(pos, b, off, available);
|
|
60
|
+
pos += available;
|
|
61
|
+
len -= available;
|
|
62
|
+
off += available;
|
|
63
|
+
flush();
|
|
64
|
+
} else {
|
|
65
|
+
buffer.setBytes(pos, b, off, len);
|
|
66
|
+
pos += len;
|
|
67
|
+
if (available <= len) {
|
|
68
|
+
flush();
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
private boolean doFlush()
|
|
76
|
+
{
|
|
77
|
+
if (pos > 0) {
|
|
78
|
+
buffer.limit(pos);
|
|
79
|
+
out.add(buffer);
|
|
80
|
+
buffer = Buffer.EMPTY;
|
|
81
|
+
pos = 0;
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@Override
|
|
88
|
+
public void flush()
|
|
89
|
+
{
|
|
90
|
+
if (doFlush()) {
|
|
91
|
+
buffer = allocator.allocate();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@Override
|
|
96
|
+
public void close()
|
|
97
|
+
{
|
|
98
|
+
switch (closeMode) {
|
|
99
|
+
case FLUSH:
|
|
100
|
+
doFlush();
|
|
101
|
+
break;
|
|
102
|
+
case FLUSH_FINISH:
|
|
103
|
+
doFlush();
|
|
104
|
+
out.finish();
|
|
105
|
+
break;
|
|
106
|
+
case FLUSH_FINISH_CLOSE:
|
|
107
|
+
doFlush();
|
|
108
|
+
out.finish();
|
|
109
|
+
out.close();
|
|
110
|
+
break;
|
|
111
|
+
case CLOSE:
|
|
112
|
+
out.close();
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
buffer.release();
|
|
116
|
+
buffer = Buffer.EMPTY;
|
|
117
|
+
pos = 0;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import com.google.common.collect.ImmutableList;
|
|
5
|
+
import org.embulk.config.TaskSource;
|
|
6
|
+
import org.embulk.config.ConfigSource;
|
|
7
|
+
import org.embulk.config.ConfigDiff;
|
|
8
|
+
import org.embulk.plugin.PluginType;
|
|
9
|
+
import org.embulk.spi.ExecSession;
|
|
10
|
+
import org.embulk.spi.Schema;
|
|
11
|
+
import org.embulk.spi.PageOutput;
|
|
12
|
+
import org.embulk.spi.FilterPlugin;
|
|
13
|
+
|
|
14
|
+
public abstract class Filters
|
|
15
|
+
{
|
|
16
|
+
private Filters() { }
|
|
17
|
+
|
|
18
|
+
public static List<PluginType> getPluginTypes(List<ConfigSource> configs)
|
|
19
|
+
{
|
|
20
|
+
ImmutableList.Builder<PluginType> builder = ImmutableList.builder();
|
|
21
|
+
for (ConfigSource config : configs) {
|
|
22
|
+
builder.add(config.get(PluginType.class, "type"));
|
|
23
|
+
}
|
|
24
|
+
return builder.build();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public static List<FilterPlugin> newFilterPluginsFromConfigSources(ExecSession exec, List<ConfigSource> configs)
|
|
28
|
+
{
|
|
29
|
+
return newFilterPlugins(exec, getPluginTypes(configs));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public static List<FilterPlugin> newFilterPlugins(ExecSession exec, List<PluginType> pluginTypes)
|
|
33
|
+
{
|
|
34
|
+
ImmutableList.Builder<FilterPlugin> builder = ImmutableList.builder();
|
|
35
|
+
for (PluginType pluginType : pluginTypes) {
|
|
36
|
+
builder.add(exec.newPlugin(FilterPlugin.class, pluginType));
|
|
37
|
+
}
|
|
38
|
+
return builder.build();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public interface Control
|
|
42
|
+
{
|
|
43
|
+
public void run(List<TaskSource> taskSources, List<Schema> filterSchemas);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public static void transaction(List<FilterPlugin> plugins, List<ConfigSource> configs,
|
|
47
|
+
Schema inputSchema, Filters.Control control)
|
|
48
|
+
{
|
|
49
|
+
new RecursiveControl(plugins, configs, control).transaction(inputSchema);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public static PageOutput open(List<FilterPlugin> plugins, List<TaskSource> taskSources,
|
|
53
|
+
List<Schema> filterSchemas, PageOutput output)
|
|
54
|
+
{
|
|
55
|
+
PageOutput out = output;
|
|
56
|
+
int pos = plugins.size() - 1;
|
|
57
|
+
while (pos >= 0) {
|
|
58
|
+
out = plugins.get(pos).open(taskSources.get(pos), filterSchemas.get(pos), filterSchemas.get(pos + 1), out);
|
|
59
|
+
pos--;
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
private static class RecursiveControl
|
|
65
|
+
{
|
|
66
|
+
private final List<FilterPlugin> plugins;
|
|
67
|
+
private final List<ConfigSource> configs;
|
|
68
|
+
private final Filters.Control finalControl;
|
|
69
|
+
private final ImmutableList.Builder<TaskSource> taskSources;
|
|
70
|
+
private final ImmutableList.Builder<Schema> filterSchemas;
|
|
71
|
+
private int pos;
|
|
72
|
+
|
|
73
|
+
RecursiveControl(List<FilterPlugin> plugins, List<ConfigSource> configs,
|
|
74
|
+
Filters.Control finalControl)
|
|
75
|
+
{
|
|
76
|
+
this.plugins = plugins;
|
|
77
|
+
this.configs = configs;
|
|
78
|
+
this.finalControl = finalControl;
|
|
79
|
+
this.taskSources = ImmutableList.builder();
|
|
80
|
+
this.filterSchemas = ImmutableList.builder();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public void transaction(Schema inputSchema)
|
|
84
|
+
{
|
|
85
|
+
filterSchemas.add(inputSchema);
|
|
86
|
+
if (pos < plugins.size()) {
|
|
87
|
+
plugins.get(pos).transaction(configs.get(pos), inputSchema, new FilterPlugin.Control() {
|
|
88
|
+
public void run(TaskSource taskSource, Schema outputSchema)
|
|
89
|
+
{
|
|
90
|
+
taskSources.add(taskSource);
|
|
91
|
+
pos++;
|
|
92
|
+
transaction(outputSchema);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
} else {
|
|
96
|
+
finalControl.run(taskSources.build(), filterSchemas.build());
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.util.Arrays;
|
|
4
|
+
import java.util.Iterator;
|
|
5
|
+
import java.io.InputStream;
|
|
6
|
+
import java.io.Closeable;
|
|
7
|
+
import java.io.IOException;
|
|
8
|
+
import org.embulk.spi.Buffer;
|
|
9
|
+
import org.embulk.spi.FileInput;
|
|
10
|
+
import org.embulk.spi.BufferAllocator;
|
|
11
|
+
|
|
12
|
+
public class InputStreamFileInput
|
|
13
|
+
implements FileInput
|
|
14
|
+
{
|
|
15
|
+
public interface Provider extends Closeable
|
|
16
|
+
{
|
|
17
|
+
public InputStream openNext() throws IOException;
|
|
18
|
+
|
|
19
|
+
public void close() throws IOException;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public interface Opener
|
|
23
|
+
{
|
|
24
|
+
public InputStream open() throws IOException;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public static class IteratorProvider implements Provider
|
|
28
|
+
{
|
|
29
|
+
private Iterator<InputStream> iterator;
|
|
30
|
+
|
|
31
|
+
public IteratorProvider(Iterable<InputStream> iterable)
|
|
32
|
+
{
|
|
33
|
+
this.iterator = iterable.iterator();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public IteratorProvider(Iterator<InputStream> iterator)
|
|
37
|
+
{
|
|
38
|
+
this.iterator = iterator;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@Override
|
|
42
|
+
public InputStream openNext() throws IOException
|
|
43
|
+
{
|
|
44
|
+
if (!iterator.hasNext()) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return iterator.next();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@Override
|
|
51
|
+
public void close() throws IOException
|
|
52
|
+
{
|
|
53
|
+
while (iterator.hasNext()) {
|
|
54
|
+
iterator.next().close();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private static class OpenerProvider implements Provider
|
|
60
|
+
{
|
|
61
|
+
private Opener opener;
|
|
62
|
+
|
|
63
|
+
public OpenerProvider(Opener opener)
|
|
64
|
+
{
|
|
65
|
+
this.opener = opener;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@Override
|
|
69
|
+
public InputStream openNext() throws IOException
|
|
70
|
+
{
|
|
71
|
+
if (opener == null) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
InputStream stream = opener.open();
|
|
75
|
+
opener = null;
|
|
76
|
+
return stream;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@Override
|
|
80
|
+
public void close() throws IOException
|
|
81
|
+
{ }
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private static class InputStreamProvider implements Provider
|
|
85
|
+
{
|
|
86
|
+
private InputStream input;
|
|
87
|
+
|
|
88
|
+
public InputStreamProvider(InputStream input)
|
|
89
|
+
{
|
|
90
|
+
this.input = input;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@Override
|
|
94
|
+
public InputStream openNext() throws IOException
|
|
95
|
+
{
|
|
96
|
+
if (input == null) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
InputStream ret = input;
|
|
100
|
+
input = null;
|
|
101
|
+
return ret;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@Override
|
|
105
|
+
public void close() throws IOException
|
|
106
|
+
{
|
|
107
|
+
if (input != null) {
|
|
108
|
+
input.close();
|
|
109
|
+
input = null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private final BufferAllocator allocator;
|
|
115
|
+
private final Provider provider;
|
|
116
|
+
private InputStream current;
|
|
117
|
+
|
|
118
|
+
public InputStreamFileInput(BufferAllocator allocator, Provider provider)
|
|
119
|
+
{
|
|
120
|
+
this.allocator = allocator;
|
|
121
|
+
this.provider = provider;
|
|
122
|
+
this.current = null;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
public InputStreamFileInput(BufferAllocator allocator, Opener opener)
|
|
126
|
+
{
|
|
127
|
+
this(allocator, new OpenerProvider(opener));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
public InputStreamFileInput(BufferAllocator allocator, InputStream openedStream)
|
|
131
|
+
{
|
|
132
|
+
this(allocator, new InputStreamProvider(openedStream));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
public Buffer poll()
|
|
136
|
+
{
|
|
137
|
+
// TODO check current != null and throw Illegal State - file is not opened
|
|
138
|
+
if (current == null) {
|
|
139
|
+
throw new IllegalStateException("nextFile() must be called before poll()");
|
|
140
|
+
}
|
|
141
|
+
Buffer buffer = allocator.allocate();
|
|
142
|
+
try {
|
|
143
|
+
int n = current.read(buffer.array(), buffer.offset(), buffer.capacity());
|
|
144
|
+
if (n < 0) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
buffer.limit(n);
|
|
148
|
+
Buffer b = buffer;
|
|
149
|
+
buffer = null;
|
|
150
|
+
return b;
|
|
151
|
+
} catch (IOException ex) {
|
|
152
|
+
throw new RuntimeException(ex);
|
|
153
|
+
} finally {
|
|
154
|
+
if (buffer != null) {
|
|
155
|
+
buffer.release();
|
|
156
|
+
buffer = null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
public boolean nextFile()
|
|
162
|
+
{
|
|
163
|
+
try {
|
|
164
|
+
if (current != null) {
|
|
165
|
+
current.close();
|
|
166
|
+
current = null;
|
|
167
|
+
}
|
|
168
|
+
current = provider.openNext();
|
|
169
|
+
return current != null;
|
|
170
|
+
} catch (IOException ex) {
|
|
171
|
+
throw new RuntimeException(ex);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
public void close()
|
|
176
|
+
{
|
|
177
|
+
try {
|
|
178
|
+
try {
|
|
179
|
+
if (current != null) {
|
|
180
|
+
current.close();
|
|
181
|
+
current = null;
|
|
182
|
+
}
|
|
183
|
+
} finally {
|
|
184
|
+
provider.close();
|
|
185
|
+
}
|
|
186
|
+
} catch (IOException ex) {
|
|
187
|
+
throw new RuntimeException(ex);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.io.InputStream;
|
|
4
|
+
import org.embulk.spi.TransactionalFileInput;
|
|
5
|
+
import org.embulk.spi.BufferAllocator;
|
|
6
|
+
|
|
7
|
+
public abstract class InputStreamTransactionalFileInput
|
|
8
|
+
extends InputStreamFileInput
|
|
9
|
+
implements TransactionalFileInput
|
|
10
|
+
{
|
|
11
|
+
public InputStreamTransactionalFileInput(BufferAllocator allocator, Provider provider)
|
|
12
|
+
{
|
|
13
|
+
super(allocator, provider);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public InputStreamTransactionalFileInput(BufferAllocator allocator, Opener opener)
|
|
17
|
+
{
|
|
18
|
+
super(allocator, opener);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public InputStreamTransactionalFileInput(BufferAllocator allocator, InputStream openedStream)
|
|
22
|
+
{
|
|
23
|
+
super(allocator, openedStream);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.util.Iterator;
|
|
4
|
+
import java.util.NoSuchElementException;
|
|
5
|
+
|
|
6
|
+
import org.embulk.spi.Exec;
|
|
7
|
+
import org.embulk.spi.FileInput;
|
|
8
|
+
import org.embulk.spi.Buffer;
|
|
9
|
+
import org.embulk.spi.time.Timestamp;
|
|
10
|
+
import org.embulk.spi.time.TimestampFormatter;
|
|
11
|
+
import org.joda.time.DateTimeZone;
|
|
12
|
+
|
|
13
|
+
public class Inputs
|
|
14
|
+
{
|
|
15
|
+
private static abstract class AbstractPollIterator <E>
|
|
16
|
+
implements Iterator<E>
|
|
17
|
+
{
|
|
18
|
+
private E next;
|
|
19
|
+
|
|
20
|
+
protected abstract E poll();
|
|
21
|
+
|
|
22
|
+
@Override
|
|
23
|
+
public boolean hasNext()
|
|
24
|
+
{
|
|
25
|
+
if (next != null) {
|
|
26
|
+
return true;
|
|
27
|
+
} else {
|
|
28
|
+
next = poll();
|
|
29
|
+
return next != null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@Override
|
|
34
|
+
public E next()
|
|
35
|
+
{
|
|
36
|
+
if (!hasNext()) {
|
|
37
|
+
throw new NoSuchElementException();
|
|
38
|
+
}
|
|
39
|
+
E l = next;
|
|
40
|
+
next = null;
|
|
41
|
+
return l;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@Override
|
|
45
|
+
public void remove()
|
|
46
|
+
{
|
|
47
|
+
throw new UnsupportedOperationException();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public static Iterable<Buffer> each(final FileInput input)
|
|
52
|
+
{
|
|
53
|
+
return new Iterable<Buffer>() {
|
|
54
|
+
public Iterator<Buffer> iterator()
|
|
55
|
+
{
|
|
56
|
+
return new AbstractPollIterator<Buffer>() {
|
|
57
|
+
public Buffer poll()
|
|
58
|
+
{
|
|
59
|
+
return input.poll();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|