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,161 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import java.util.Map;
|
|
5
|
+
import com.google.common.base.Optional;
|
|
6
|
+
import org.joda.time.DateTimeZone;
|
|
7
|
+
import org.jruby.embed.ScriptingContainer;
|
|
8
|
+
import com.google.common.collect.ImmutableList;
|
|
9
|
+
import com.google.common.collect.ImmutableMap;
|
|
10
|
+
import org.embulk.config.Config;
|
|
11
|
+
import org.embulk.config.ConfigDefault;
|
|
12
|
+
import org.embulk.config.ConfigInject;
|
|
13
|
+
import org.embulk.config.ConfigSource;
|
|
14
|
+
import org.embulk.config.Task;
|
|
15
|
+
import org.embulk.spi.Schema;
|
|
16
|
+
import org.embulk.spi.Column;
|
|
17
|
+
import org.embulk.spi.BufferAllocator;
|
|
18
|
+
import org.embulk.spi.PageBuilder;
|
|
19
|
+
import org.embulk.spi.PageOutput;
|
|
20
|
+
import org.embulk.spi.time.TimestampFormatter;
|
|
21
|
+
import org.embulk.spi.time.TimestampParser;
|
|
22
|
+
import org.embulk.spi.time.TimestampFormat;
|
|
23
|
+
import org.embulk.spi.util.dynamic.SkipColumnSetter;
|
|
24
|
+
|
|
25
|
+
public class DynamicPageBuilder
|
|
26
|
+
implements AutoCloseable
|
|
27
|
+
{
|
|
28
|
+
private final PageBuilder pageBuilder;
|
|
29
|
+
private final Schema schema;
|
|
30
|
+
private final DynamicColumnSetter[] setters;
|
|
31
|
+
private final Map<String, DynamicColumnSetter> columnLookup;
|
|
32
|
+
|
|
33
|
+
public static interface BuilderTask
|
|
34
|
+
extends Task
|
|
35
|
+
{
|
|
36
|
+
@Config("default_timezone")
|
|
37
|
+
@ConfigDefault("\"UTC\"")
|
|
38
|
+
public DateTimeZone getDefaultTimeZone();
|
|
39
|
+
|
|
40
|
+
@Config("column_options")
|
|
41
|
+
@ConfigDefault("{}")
|
|
42
|
+
public Map<String, ConfigSource> getColumnOptions();
|
|
43
|
+
|
|
44
|
+
// required by TimestampFormatter
|
|
45
|
+
@ConfigInject
|
|
46
|
+
public ScriptingContainer getJRuby();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public static interface ColumnOption
|
|
50
|
+
extends Task
|
|
51
|
+
{
|
|
52
|
+
@Config("timestamp_format")
|
|
53
|
+
@ConfigDefault("\"%Y-%m-%d %H:%M:%S.%6N\"")
|
|
54
|
+
public TimestampFormat getTimestampFormat();
|
|
55
|
+
|
|
56
|
+
@Config("timezone")
|
|
57
|
+
@ConfigDefault("null")
|
|
58
|
+
public Optional<DateTimeZone> getTimeZone();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public DynamicPageBuilder(BuilderTask task,
|
|
62
|
+
BufferAllocator allocator, Schema schema, PageOutput output)
|
|
63
|
+
{
|
|
64
|
+
this.pageBuilder = new PageBuilder(allocator, schema, output);
|
|
65
|
+
this.schema = schema;
|
|
66
|
+
|
|
67
|
+
// TODO configurable default value
|
|
68
|
+
DynamicColumnSetterFactory factory = new DynamicColumnSetterFactory(task,
|
|
69
|
+
DynamicColumnSetterFactory.nullDefaultValue());
|
|
70
|
+
|
|
71
|
+
ImmutableList.Builder<DynamicColumnSetter> setters = ImmutableList.builder();
|
|
72
|
+
ImmutableMap.Builder<String, DynamicColumnSetter> lookup = ImmutableMap.builder();
|
|
73
|
+
for (Column c : schema.getColumns()) {
|
|
74
|
+
DynamicColumnSetter setter = factory.newColumnSetter(pageBuilder, c);
|
|
75
|
+
setters.add(setter);
|
|
76
|
+
lookup.put(c.getName(), setter);
|
|
77
|
+
}
|
|
78
|
+
this.setters = setters.build().toArray(new DynamicColumnSetter[0]);
|
|
79
|
+
this.columnLookup = lookup.build();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public List<Column> getColumns()
|
|
83
|
+
{
|
|
84
|
+
return schema.getColumns();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public DynamicColumnSetter column(Column c)
|
|
88
|
+
{
|
|
89
|
+
return setters[c.getIndex()];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public DynamicColumnSetter column(int index)
|
|
93
|
+
{
|
|
94
|
+
if (index < 0 || setters.length <= index) {
|
|
95
|
+
throw new DynamicColumnNotFoundException("Column index '"+index+"' is not exist");
|
|
96
|
+
}
|
|
97
|
+
return setters[index];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public DynamicColumnSetter lookupColumn(String columnName)
|
|
101
|
+
{
|
|
102
|
+
DynamicColumnSetter setter = columnLookup.get(columnName);
|
|
103
|
+
if (setter == null) {
|
|
104
|
+
throw new DynamicColumnNotFoundException("Column '"+columnName+"' is not exist");
|
|
105
|
+
}
|
|
106
|
+
return setter;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
public DynamicColumnSetter columnOrSkip(int index)
|
|
110
|
+
{
|
|
111
|
+
if (index < 0 || setters.length <= index) {
|
|
112
|
+
return SkipColumnSetter.get();
|
|
113
|
+
}
|
|
114
|
+
return setters[index];
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
public DynamicColumnSetter columnOrSkip(String columnName)
|
|
118
|
+
{
|
|
119
|
+
DynamicColumnSetter setter = columnLookup.get(columnName);
|
|
120
|
+
if (setter == null) {
|
|
121
|
+
return SkipColumnSetter.get();
|
|
122
|
+
}
|
|
123
|
+
return setter;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// for jruby
|
|
127
|
+
protected DynamicColumnSetter columnOrNull(int index)
|
|
128
|
+
{
|
|
129
|
+
if (index < 0 || setters.length <= index) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return setters[index];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// for jruby
|
|
136
|
+
protected DynamicColumnSetter columnOrNull(String columnName)
|
|
137
|
+
{
|
|
138
|
+
return columnLookup.get(columnName);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
public void addRecord()
|
|
142
|
+
{
|
|
143
|
+
pageBuilder.addRecord();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
public void flush()
|
|
147
|
+
{
|
|
148
|
+
pageBuilder.flush();
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
public void finish()
|
|
152
|
+
{
|
|
153
|
+
pageBuilder.finish();
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@Override
|
|
157
|
+
public void close()
|
|
158
|
+
{
|
|
159
|
+
pageBuilder.close();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
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.plugin.PluginType;
|
|
8
|
+
import org.embulk.spi.ExecSession;
|
|
9
|
+
import org.embulk.spi.FileOutput;
|
|
10
|
+
import org.embulk.spi.EncoderPlugin;
|
|
11
|
+
|
|
12
|
+
public abstract class Encoders
|
|
13
|
+
{
|
|
14
|
+
private Encoders() { }
|
|
15
|
+
|
|
16
|
+
public static List<EncoderPlugin> newEncoderPlugins(ExecSession exec, List<ConfigSource> configs)
|
|
17
|
+
{
|
|
18
|
+
ImmutableList.Builder<EncoderPlugin> builder = ImmutableList.builder();
|
|
19
|
+
for (ConfigSource config : configs) {
|
|
20
|
+
builder.add(exec.newPlugin(EncoderPlugin.class, config.get(PluginType.class, "type")));
|
|
21
|
+
}
|
|
22
|
+
return builder.build();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public interface Control
|
|
26
|
+
{
|
|
27
|
+
public void run(List<TaskSource> taskSources);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public static void transaction(List<EncoderPlugin> plugins, List<ConfigSource> configs,
|
|
31
|
+
Encoders.Control control)
|
|
32
|
+
{
|
|
33
|
+
new RecursiveControl(plugins, configs, control).transaction();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public static FileOutput open(List<EncoderPlugin> plugins, List<TaskSource> taskSources,
|
|
37
|
+
FileOutput output)
|
|
38
|
+
{
|
|
39
|
+
FileOutput out = output;
|
|
40
|
+
int pos = 0;
|
|
41
|
+
while (pos < plugins.size()) {
|
|
42
|
+
out = plugins.get(pos).open(taskSources.get(pos), out);
|
|
43
|
+
pos++;
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
private static class RecursiveControl
|
|
49
|
+
{
|
|
50
|
+
private final List<EncoderPlugin> plugins;
|
|
51
|
+
private final List<ConfigSource> configs;
|
|
52
|
+
private final Encoders.Control finalControl;
|
|
53
|
+
private final ImmutableList.Builder<TaskSource> taskSources;
|
|
54
|
+
private int pos;
|
|
55
|
+
|
|
56
|
+
RecursiveControl(List<EncoderPlugin> plugins, List<ConfigSource> configs,
|
|
57
|
+
Encoders.Control finalControl)
|
|
58
|
+
{
|
|
59
|
+
this.plugins = plugins;
|
|
60
|
+
this.configs = configs;
|
|
61
|
+
this.finalControl = finalControl;
|
|
62
|
+
this.taskSources = ImmutableList.builder();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public void transaction()
|
|
66
|
+
{
|
|
67
|
+
if (pos < plugins.size()) {
|
|
68
|
+
plugins.get(pos).transaction(configs.get(pos), new EncoderPlugin.Control() {
|
|
69
|
+
public void run(TaskSource taskSource)
|
|
70
|
+
{
|
|
71
|
+
taskSources.add(taskSource);
|
|
72
|
+
pos++;
|
|
73
|
+
transaction();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
} else {
|
|
77
|
+
finalControl.run(taskSources.build());
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import org.embulk.config.TaskSource;
|
|
5
|
+
import org.embulk.config.TaskReport;
|
|
6
|
+
import org.embulk.spi.ExecSession;
|
|
7
|
+
import org.embulk.spi.ProcessState;
|
|
8
|
+
import org.embulk.spi.Schema;
|
|
9
|
+
import org.embulk.spi.TransactionalPageOutput;
|
|
10
|
+
import org.embulk.spi.PageOutput;
|
|
11
|
+
import org.embulk.spi.InputPlugin;
|
|
12
|
+
import org.embulk.spi.FilterPlugin;
|
|
13
|
+
import org.embulk.spi.OutputPlugin;
|
|
14
|
+
import org.embulk.spi.ProcessTask;
|
|
15
|
+
import org.embulk.plugin.compat.PluginWrappers;
|
|
16
|
+
|
|
17
|
+
public abstract class Executors
|
|
18
|
+
{
|
|
19
|
+
private Executors() { }
|
|
20
|
+
|
|
21
|
+
public interface ProcessStateCallback
|
|
22
|
+
{
|
|
23
|
+
public void started();
|
|
24
|
+
|
|
25
|
+
public void inputCommitted(TaskReport report);
|
|
26
|
+
|
|
27
|
+
public void outputCommitted(TaskReport report);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public static void process(ExecSession exec,
|
|
31
|
+
ProcessTask task, int taskIndex,
|
|
32
|
+
ProcessStateCallback callback)
|
|
33
|
+
{
|
|
34
|
+
InputPlugin inputPlugin = exec.newPlugin(InputPlugin.class, task.getInputPluginType());
|
|
35
|
+
List<FilterPlugin> filterPlugins = Filters.newFilterPlugins(exec, task.getFilterPluginTypes());
|
|
36
|
+
OutputPlugin outputPlugin = exec.newPlugin(OutputPlugin.class, task.getOutputPluginType());
|
|
37
|
+
|
|
38
|
+
// TODO assert task.getExecutorSchema().equals task.getOutputSchema()
|
|
39
|
+
|
|
40
|
+
process(exec, taskIndex,
|
|
41
|
+
inputPlugin, task.getInputSchema(), task.getInputTaskSource(),
|
|
42
|
+
filterPlugins, task.getFilterSchemas(), task.getFilterTaskSources(),
|
|
43
|
+
outputPlugin, task.getOutputSchema(), task.getOutputTaskSource(),
|
|
44
|
+
callback);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public static void process(ExecSession exec, int taskIndex,
|
|
48
|
+
InputPlugin inputPlugin, Schema inputSchema, TaskSource inputTaskSource,
|
|
49
|
+
List<FilterPlugin> filterPlugins, List<Schema> filterSchemas, List<TaskSource> filterTaskSources,
|
|
50
|
+
OutputPlugin outputPlugin, Schema outputSchema, TaskSource outputTaskSource,
|
|
51
|
+
ProcessStateCallback callback)
|
|
52
|
+
{
|
|
53
|
+
TransactionalPageOutput tran = PluginWrappers.transactionalPageOutput(
|
|
54
|
+
outputPlugin.open(outputTaskSource, outputSchema, taskIndex));
|
|
55
|
+
|
|
56
|
+
PageOutput closeThis = tran;
|
|
57
|
+
callback.started();
|
|
58
|
+
try {
|
|
59
|
+
PageOutput filtered = closeThis = Filters.open(filterPlugins, filterTaskSources, filterSchemas, tran);
|
|
60
|
+
|
|
61
|
+
TaskReport inputTaskReport = inputPlugin.run(inputTaskSource, inputSchema, taskIndex, filtered);
|
|
62
|
+
|
|
63
|
+
if (inputTaskReport == null) {
|
|
64
|
+
inputTaskReport = exec.newTaskReport();
|
|
65
|
+
}
|
|
66
|
+
callback.inputCommitted(inputTaskReport);
|
|
67
|
+
|
|
68
|
+
TaskReport outputTaskReport = tran.commit();
|
|
69
|
+
tran = null;
|
|
70
|
+
if (outputTaskReport == null) {
|
|
71
|
+
outputTaskReport = exec.newTaskReport();
|
|
72
|
+
}
|
|
73
|
+
callback.outputCommitted(outputTaskReport); // TODO check output.finish() is called. wrap or abstract
|
|
74
|
+
|
|
75
|
+
} finally {
|
|
76
|
+
try {
|
|
77
|
+
if (tran != null) {
|
|
78
|
+
tran.abort();
|
|
79
|
+
}
|
|
80
|
+
} finally {
|
|
81
|
+
closeThis.close();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public static Schema getInputSchema(List<Schema> schemas)
|
|
87
|
+
{
|
|
88
|
+
return schemas.get(0);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public static Schema getOutputSchema(List<Schema> schemas)
|
|
92
|
+
{
|
|
93
|
+
return schemas.get(schemas.size() - 1);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.io.InputStream;
|
|
4
|
+
import org.embulk.spi.Buffer;
|
|
5
|
+
import org.embulk.spi.FileInput;
|
|
6
|
+
|
|
7
|
+
public class FileInputInputStream
|
|
8
|
+
extends InputStream
|
|
9
|
+
{
|
|
10
|
+
private final FileInput in;
|
|
11
|
+
private int pos;
|
|
12
|
+
private Buffer buffer = Buffer.EMPTY;
|
|
13
|
+
|
|
14
|
+
public FileInputInputStream(FileInput in)
|
|
15
|
+
{
|
|
16
|
+
this.in = in;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public boolean markSupported()
|
|
20
|
+
{
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public boolean nextFile()
|
|
25
|
+
{
|
|
26
|
+
releaseBuffer();
|
|
27
|
+
return in.nextFile();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@Override
|
|
31
|
+
public int available()
|
|
32
|
+
{
|
|
33
|
+
return buffer.limit() - pos;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@Override
|
|
37
|
+
public int read()
|
|
38
|
+
{
|
|
39
|
+
while (pos >= buffer.limit()) {
|
|
40
|
+
if (!nextBuffer()) {
|
|
41
|
+
return -1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
byte b = buffer.array()[buffer.offset() + pos];
|
|
45
|
+
pos++;
|
|
46
|
+
if (pos >= buffer.limit()) {
|
|
47
|
+
releaseBuffer();
|
|
48
|
+
}
|
|
49
|
+
return b & 0xff;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@Override
|
|
53
|
+
public int read(byte[] b, int off, int len)
|
|
54
|
+
{
|
|
55
|
+
while (pos >= buffer.limit()) {
|
|
56
|
+
if (!nextBuffer()) {
|
|
57
|
+
return -1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
int remaining = buffer.limit() - pos;
|
|
61
|
+
boolean allConsumed;
|
|
62
|
+
if (remaining <= len) {
|
|
63
|
+
allConsumed = true;
|
|
64
|
+
len = remaining;
|
|
65
|
+
} else {
|
|
66
|
+
allConsumed = false;
|
|
67
|
+
}
|
|
68
|
+
if (b != null) {
|
|
69
|
+
// b == null if skip
|
|
70
|
+
buffer.getBytes(pos, b, off, len);
|
|
71
|
+
}
|
|
72
|
+
if (allConsumed) {
|
|
73
|
+
releaseBuffer();
|
|
74
|
+
} else {
|
|
75
|
+
pos += len;
|
|
76
|
+
}
|
|
77
|
+
return len;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@Override
|
|
81
|
+
public long skip(long len)
|
|
82
|
+
{
|
|
83
|
+
int skipped = read(null, 0, (int) Math.min(len, Integer.MAX_VALUE));
|
|
84
|
+
return skipped > 0 ? skipped : 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
private boolean nextBuffer()
|
|
88
|
+
{
|
|
89
|
+
releaseBuffer();
|
|
90
|
+
Buffer b = in.poll();
|
|
91
|
+
if (b == null) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
buffer = b;
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
private void releaseBuffer()
|
|
99
|
+
{
|
|
100
|
+
buffer.release();
|
|
101
|
+
buffer = Buffer.EMPTY;
|
|
102
|
+
pos = 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@Override
|
|
106
|
+
public void close()
|
|
107
|
+
{
|
|
108
|
+
releaseBuffer();
|
|
109
|
+
in.close();
|
|
110
|
+
}
|
|
111
|
+
}
|