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,139 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import java.util.Iterator;
|
|
5
|
+
import com.google.common.collect.ImmutableList;
|
|
6
|
+
import org.embulk.spi.time.Timestamp;
|
|
7
|
+
import org.embulk.spi.Schema;
|
|
8
|
+
import org.embulk.spi.ColumnVisitor;
|
|
9
|
+
import org.embulk.spi.Column;
|
|
10
|
+
import org.embulk.spi.Page;
|
|
11
|
+
import org.embulk.spi.PageReader;
|
|
12
|
+
|
|
13
|
+
public class Pages
|
|
14
|
+
{
|
|
15
|
+
public static List<Object[]> toObjects(Schema schema, Page page)
|
|
16
|
+
{
|
|
17
|
+
return toObjects(schema, ImmutableList.of(page));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// TODO use streaming and return Iterable
|
|
21
|
+
public static List<Object[]> toObjects(Schema schema, Iterable<Page> pages)
|
|
22
|
+
{
|
|
23
|
+
ImmutableList.Builder<Object[]> builder = ImmutableList.builder();
|
|
24
|
+
Iterator<Page> ite = pages.iterator();
|
|
25
|
+
try (PageReader reader = new PageReader(schema)) {
|
|
26
|
+
while (ite.hasNext()) {
|
|
27
|
+
reader.setPage(ite.next());
|
|
28
|
+
while (reader.nextRecord()) {
|
|
29
|
+
builder.add(toObjects(reader));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return builder.build();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public static Object[] toObjects(final PageReader record)
|
|
37
|
+
{
|
|
38
|
+
final Object[] values = new Object[record.getSchema().getColumns().size()];
|
|
39
|
+
record.getSchema().visitColumns(new ObjectColumnVisitor(record) {
|
|
40
|
+
@Override
|
|
41
|
+
public void visit(Column column, Object object)
|
|
42
|
+
{
|
|
43
|
+
values[column.getIndex()] = object;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
return values;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public static abstract class ObjectColumnVisitor
|
|
50
|
+
implements ColumnVisitor
|
|
51
|
+
{
|
|
52
|
+
private final PageReader record;
|
|
53
|
+
|
|
54
|
+
public ObjectColumnVisitor(PageReader record)
|
|
55
|
+
{
|
|
56
|
+
this.record = record;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public abstract void visit(Column column, Object obj);
|
|
60
|
+
|
|
61
|
+
@Override
|
|
62
|
+
public void booleanColumn(Column column)
|
|
63
|
+
{
|
|
64
|
+
if (record.isNull(column)) {
|
|
65
|
+
visit(column, null);
|
|
66
|
+
} else {
|
|
67
|
+
visit(column, record.getBoolean(column));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@Override
|
|
72
|
+
public void longColumn(Column column)
|
|
73
|
+
{
|
|
74
|
+
if (record.isNull(column)) {
|
|
75
|
+
visit(column, null);
|
|
76
|
+
} else {
|
|
77
|
+
visit(column, record.getLong(column));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@Override
|
|
82
|
+
public void doubleColumn(Column column)
|
|
83
|
+
{
|
|
84
|
+
if (record.isNull(column)) {
|
|
85
|
+
visit(column, null);
|
|
86
|
+
} else {
|
|
87
|
+
visit(column, record.getDouble(column));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@Override
|
|
92
|
+
public void stringColumn(Column column)
|
|
93
|
+
{
|
|
94
|
+
if (record.isNull(column)) {
|
|
95
|
+
visit(column, null);
|
|
96
|
+
} else {
|
|
97
|
+
visit(column, record.getString(column));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@Override
|
|
102
|
+
public void timestampColumn(Column column)
|
|
103
|
+
{
|
|
104
|
+
if (record.isNull(column)) {
|
|
105
|
+
visit(column, null);
|
|
106
|
+
} else {
|
|
107
|
+
visit(column, record.getTimestamp(column));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
public static Object getObject(PageReader record, Column column)
|
|
113
|
+
{
|
|
114
|
+
GetObjectColumnVisitor visitor = new GetObjectColumnVisitor(record);
|
|
115
|
+
column.visit(visitor);
|
|
116
|
+
return visitor.get();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private static class GetObjectColumnVisitor
|
|
120
|
+
extends ObjectColumnVisitor
|
|
121
|
+
{
|
|
122
|
+
private Object object;
|
|
123
|
+
|
|
124
|
+
public GetObjectColumnVisitor(PageReader record)
|
|
125
|
+
{
|
|
126
|
+
super(record);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public Object get()
|
|
130
|
+
{
|
|
131
|
+
return object;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
public void visit(Column column, Object object)
|
|
135
|
+
{
|
|
136
|
+
this.object = object;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.io.InputStream;
|
|
4
|
+
import java.io.IOException;
|
|
5
|
+
|
|
6
|
+
public class ResumableInputStream
|
|
7
|
+
extends InputStream
|
|
8
|
+
{
|
|
9
|
+
public interface Reopener
|
|
10
|
+
{
|
|
11
|
+
public InputStream reopen(long offset, Exception closedCause) throws IOException;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
private final Reopener reopener;
|
|
15
|
+
protected InputStream in;
|
|
16
|
+
private long offset;
|
|
17
|
+
private long markedOffset;
|
|
18
|
+
|
|
19
|
+
public ResumableInputStream(InputStream initialInputStream, Reopener reopener)
|
|
20
|
+
{
|
|
21
|
+
this.reopener = reopener;
|
|
22
|
+
this.in = initialInputStream;
|
|
23
|
+
this.offset = 0L;
|
|
24
|
+
this.markedOffset = 0L;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public ResumableInputStream(Reopener reopener) throws IOException
|
|
28
|
+
{
|
|
29
|
+
this(reopener.reopen(0, null), reopener);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private void reopen(Exception closedCause) throws IOException
|
|
33
|
+
{
|
|
34
|
+
if (in != null) {
|
|
35
|
+
in.close();
|
|
36
|
+
in = null;
|
|
37
|
+
}
|
|
38
|
+
in = reopener.reopen(offset, closedCause);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@Override
|
|
42
|
+
public int read() throws IOException
|
|
43
|
+
{
|
|
44
|
+
while (true) {
|
|
45
|
+
try {
|
|
46
|
+
int v = in.read();
|
|
47
|
+
offset += 1;
|
|
48
|
+
return v;
|
|
49
|
+
} catch (IOException | RuntimeException ex) {
|
|
50
|
+
reopen(ex);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@Override
|
|
56
|
+
public int read(byte[] b) throws IOException
|
|
57
|
+
{
|
|
58
|
+
while (true) {
|
|
59
|
+
try {
|
|
60
|
+
int r = in.read(b);
|
|
61
|
+
offset += r;
|
|
62
|
+
return r;
|
|
63
|
+
} catch (IOException | RuntimeException ex) {
|
|
64
|
+
reopen(ex);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@Override
|
|
70
|
+
public int read(byte[] b, int off, int len) throws IOException
|
|
71
|
+
{
|
|
72
|
+
while (true) {
|
|
73
|
+
try {
|
|
74
|
+
int r = in.read(b, off, len);
|
|
75
|
+
offset += r;
|
|
76
|
+
return r;
|
|
77
|
+
} catch (IOException | RuntimeException ex) {
|
|
78
|
+
reopen(ex);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@Override
|
|
84
|
+
public long skip(long n) throws IOException
|
|
85
|
+
{
|
|
86
|
+
while (true) {
|
|
87
|
+
try {
|
|
88
|
+
long r = in.skip(n);
|
|
89
|
+
offset += r;
|
|
90
|
+
return r;
|
|
91
|
+
} catch (IOException | RuntimeException ex) {
|
|
92
|
+
reopen(ex);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@Override
|
|
98
|
+
public int available() throws IOException
|
|
99
|
+
{
|
|
100
|
+
return in.available();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Override
|
|
104
|
+
public void close() throws IOException
|
|
105
|
+
{
|
|
106
|
+
in.close();
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@Override
|
|
110
|
+
public void mark(int readlimit)
|
|
111
|
+
{
|
|
112
|
+
in.mark(readlimit);
|
|
113
|
+
markedOffset = offset;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@Override
|
|
117
|
+
public void reset() throws IOException
|
|
118
|
+
{
|
|
119
|
+
in.reset();
|
|
120
|
+
offset = markedOffset;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@Override
|
|
124
|
+
public boolean markSupported()
|
|
125
|
+
{
|
|
126
|
+
return in.markSupported();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.util.concurrent.Callable;
|
|
4
|
+
import java.util.concurrent.ExecutionException;
|
|
5
|
+
|
|
6
|
+
public class RetryExecutor
|
|
7
|
+
{
|
|
8
|
+
public static RetryExecutor retryExecutor()
|
|
9
|
+
{
|
|
10
|
+
// TODO default configuration
|
|
11
|
+
return new RetryExecutor(3, 500, 30*60*1000);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public static class RetryGiveupException
|
|
15
|
+
extends ExecutionException
|
|
16
|
+
{
|
|
17
|
+
public RetryGiveupException(String message, Exception cause)
|
|
18
|
+
{
|
|
19
|
+
super(cause);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public RetryGiveupException(Exception cause)
|
|
23
|
+
{
|
|
24
|
+
super(cause);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public Exception getCause()
|
|
28
|
+
{
|
|
29
|
+
return (Exception) super.getCause();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public static interface Retryable<T>
|
|
34
|
+
extends Callable<T>
|
|
35
|
+
{
|
|
36
|
+
public T call()
|
|
37
|
+
throws Exception;
|
|
38
|
+
|
|
39
|
+
public boolean isRetryableException(Exception exception);
|
|
40
|
+
|
|
41
|
+
public void onRetry(Exception exception, int retryCount, int retryLimit, int retryWait)
|
|
42
|
+
throws RetryGiveupException;
|
|
43
|
+
|
|
44
|
+
public void onGiveup(Exception firstException, Exception lastException)
|
|
45
|
+
throws RetryGiveupException;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
private final int retryLimit;
|
|
49
|
+
private final int initialRetryWait;
|
|
50
|
+
private final int maxRetryWait;
|
|
51
|
+
|
|
52
|
+
private RetryExecutor(int retryLimit, int initialRetryWait, int maxRetryWait)
|
|
53
|
+
{
|
|
54
|
+
this.retryLimit = retryLimit;
|
|
55
|
+
this.initialRetryWait = initialRetryWait;
|
|
56
|
+
this.maxRetryWait = maxRetryWait;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public RetryExecutor withRetryLimit(int count)
|
|
60
|
+
{
|
|
61
|
+
return new RetryExecutor(count, initialRetryWait, maxRetryWait);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public RetryExecutor withInitialRetryWait(int msec)
|
|
65
|
+
{
|
|
66
|
+
return new RetryExecutor(retryLimit, msec, maxRetryWait);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public RetryExecutor withMaxRetryWait(int msec)
|
|
70
|
+
{
|
|
71
|
+
return new RetryExecutor(retryLimit, initialRetryWait, msec);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public <T> T runInterruptible(Retryable<T> op)
|
|
75
|
+
throws InterruptedException, RetryGiveupException
|
|
76
|
+
{
|
|
77
|
+
return run(op, true);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
public <T> T run(Retryable<T> op)
|
|
81
|
+
throws RetryGiveupException
|
|
82
|
+
{
|
|
83
|
+
try {
|
|
84
|
+
return run(op, false);
|
|
85
|
+
} catch (InterruptedException ex) {
|
|
86
|
+
throw new RetryGiveupException("Unexpected interruption", ex);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
private <T> T run(Retryable<T> op, boolean interruptible)
|
|
91
|
+
throws InterruptedException, RetryGiveupException
|
|
92
|
+
{
|
|
93
|
+
int retryWait = initialRetryWait;
|
|
94
|
+
int retryCount = 0;
|
|
95
|
+
|
|
96
|
+
Exception firstException = null;
|
|
97
|
+
|
|
98
|
+
while(true) {
|
|
99
|
+
try {
|
|
100
|
+
return op.call();
|
|
101
|
+
} catch (Exception exception) {
|
|
102
|
+
if (firstException == null) {
|
|
103
|
+
firstException = exception;
|
|
104
|
+
}
|
|
105
|
+
if (!op.isRetryableException(exception) || retryCount >= retryLimit) {
|
|
106
|
+
op.onGiveup(firstException, exception);
|
|
107
|
+
throw new RetryGiveupException(firstException);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
retryCount++;
|
|
111
|
+
op.onRetry(exception, retryCount, retryLimit, retryWait);
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
Thread.sleep(retryWait);
|
|
115
|
+
} catch (InterruptedException ex) {
|
|
116
|
+
if (interruptible) {
|
|
117
|
+
throw ex;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// exponential back-off with hard limit
|
|
122
|
+
retryWait *= 2;
|
|
123
|
+
if (retryWait > maxRetryWait) {
|
|
124
|
+
retryWait = maxRetryWait;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
package org.embulk.spi.util;
|
|
2
|
+
|
|
3
|
+
import java.util.Map;
|
|
4
|
+
import com.google.common.base.Optional;
|
|
5
|
+
import org.embulk.config.Task;
|
|
6
|
+
import org.embulk.spi.Column;
|
|
7
|
+
import org.embulk.spi.Schema;
|
|
8
|
+
import org.embulk.spi.ColumnConfig;
|
|
9
|
+
import org.embulk.spi.SchemaConfig;
|
|
10
|
+
import org.embulk.spi.time.TimestampFormatter;
|
|
11
|
+
import org.embulk.spi.type.TimestampType;
|
|
12
|
+
import org.embulk.spi.time.TimestampParser;
|
|
13
|
+
import org.embulk.spi.SchemaConfig;
|
|
14
|
+
|
|
15
|
+
public class Timestamps
|
|
16
|
+
{
|
|
17
|
+
private Timestamps() { }
|
|
18
|
+
|
|
19
|
+
private interface TimestampColumnOption
|
|
20
|
+
extends Task, TimestampParser.TimestampColumnOption
|
|
21
|
+
{ }
|
|
22
|
+
|
|
23
|
+
public static TimestampParser[] newTimestampColumnParsers(
|
|
24
|
+
TimestampParser.Task parserTask, SchemaConfig schema)
|
|
25
|
+
{
|
|
26
|
+
TimestampParser[] parsers = new TimestampParser[schema.getColumnCount()];
|
|
27
|
+
int i = 0;
|
|
28
|
+
for (ColumnConfig column : schema.getColumns()) {
|
|
29
|
+
if (column.getType() instanceof TimestampType) {
|
|
30
|
+
TimestampColumnOption option = column.getOption().loadConfig(TimestampColumnOption.class);
|
|
31
|
+
parsers[i] = new TimestampParser(parserTask, option);
|
|
32
|
+
}
|
|
33
|
+
i++;
|
|
34
|
+
}
|
|
35
|
+
return parsers;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public static TimestampFormatter[] newTimestampColumnFormatters(
|
|
39
|
+
TimestampFormatter.Task formatterTask, Schema schema,
|
|
40
|
+
Map<String, ? extends TimestampFormatter.TimestampColumnOption> columnOptions)
|
|
41
|
+
{
|
|
42
|
+
TimestampFormatter[] formatters = new TimestampFormatter[schema.getColumnCount()];
|
|
43
|
+
int i = 0;
|
|
44
|
+
for (Column column : schema.getColumns()) {
|
|
45
|
+
if (column.getType() instanceof TimestampType) {
|
|
46
|
+
Optional<TimestampFormatter.TimestampColumnOption> option = Optional.fromNullable(columnOptions.get(column.getName()));
|
|
47
|
+
formatters[i] = new TimestampFormatter(formatterTask, option);
|
|
48
|
+
}
|
|
49
|
+
i++;
|
|
50
|
+
}
|
|
51
|
+
return formatters;
|
|
52
|
+
}
|
|
53
|
+
}
|