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,47 @@
|
|
|
1
|
+
package org.embulk.spi;
|
|
2
|
+
|
|
3
|
+
abstract class PageFormat
|
|
4
|
+
{
|
|
5
|
+
// PageHeader
|
|
6
|
+
// +---+
|
|
7
|
+
// | 4 |
|
|
8
|
+
// +---+
|
|
9
|
+
// count (number of records)
|
|
10
|
+
|
|
11
|
+
private PageFormat() { }
|
|
12
|
+
|
|
13
|
+
static final int PAGE_HEADER_SIZE = 4;
|
|
14
|
+
|
|
15
|
+
// PageBuilder.setVariableLengthData and PageReader.readVariableLengthData
|
|
16
|
+
// uses 4 bytes integer
|
|
17
|
+
static final int VARIABLE_LENGTH_COLUMN_SIZE = 4;
|
|
18
|
+
|
|
19
|
+
static int nullBitSetSize(Schema schema)
|
|
20
|
+
{
|
|
21
|
+
return (schema.getColumnCount() + 7) / 8;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
static int recordHeaderSize(Schema schema)
|
|
25
|
+
{
|
|
26
|
+
return 4 + nullBitSetSize(schema);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static int totalColumnSize(Schema schema)
|
|
30
|
+
{
|
|
31
|
+
return recordHeaderSize(schema) + schema.getFixedStorageSize();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static int[] columnOffsets(Schema schema)
|
|
35
|
+
{
|
|
36
|
+
int[] offsets = new int[schema.getColumnCount()];
|
|
37
|
+
|
|
38
|
+
if (!schema.isEmpty()) {
|
|
39
|
+
offsets[0] = recordHeaderSize(schema);
|
|
40
|
+
for (int i=0; i < schema.getColumnCount()-1; i++) {
|
|
41
|
+
offsets[i+1] = offsets[i] + schema.getColumnType(i).getFixedStorageSize();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return offsets;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
package org.embulk.spi;
|
|
2
|
+
|
|
3
|
+
import io.airlift.slice.Slice;
|
|
4
|
+
import io.airlift.slice.Slices;
|
|
5
|
+
import org.embulk.spi.time.Timestamp;
|
|
6
|
+
|
|
7
|
+
public class PageReader
|
|
8
|
+
implements AutoCloseable
|
|
9
|
+
{
|
|
10
|
+
private final Schema schema;
|
|
11
|
+
private final int[] columnOffsets;
|
|
12
|
+
|
|
13
|
+
private Page page = SENTINEL;
|
|
14
|
+
private Slice pageSlice = null;
|
|
15
|
+
private int pageRecordCount = 0;
|
|
16
|
+
|
|
17
|
+
private int readCount = 0;
|
|
18
|
+
private int position;
|
|
19
|
+
private final byte[] nullBitSet;
|
|
20
|
+
|
|
21
|
+
private static final Page SENTINEL = Page.wrap(Buffer.wrap(new byte[4])); // buffer().release() does nothing
|
|
22
|
+
|
|
23
|
+
public PageReader(Schema schema)
|
|
24
|
+
{
|
|
25
|
+
this.schema = schema;
|
|
26
|
+
this.columnOffsets = PageFormat.columnOffsets(schema);
|
|
27
|
+
this.nullBitSet = new byte[PageFormat.nullBitSetSize(schema)];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public static int getRecordCount(Page page)
|
|
31
|
+
{
|
|
32
|
+
Buffer pageBuffer = page.buffer();
|
|
33
|
+
Slice pageSlice = Slices.wrappedBuffer(pageBuffer.array(), pageBuffer.offset(), pageBuffer.limit());
|
|
34
|
+
return pageSlice.getInt(0); // see page format
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public void setPage(Page page)
|
|
38
|
+
{
|
|
39
|
+
this.page.buffer().release();
|
|
40
|
+
this.page = SENTINEL;
|
|
41
|
+
|
|
42
|
+
Buffer pageBuffer = page.buffer();
|
|
43
|
+
Slice pageSlice = Slices.wrappedBuffer(pageBuffer.array(), pageBuffer.offset(), pageBuffer.limit());
|
|
44
|
+
|
|
45
|
+
pageRecordCount = pageSlice.getInt(0); // see page format
|
|
46
|
+
readCount = 0;
|
|
47
|
+
position = PageFormat.PAGE_HEADER_SIZE;
|
|
48
|
+
|
|
49
|
+
this.page = page;
|
|
50
|
+
this.pageSlice = pageSlice;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public Schema getSchema()
|
|
54
|
+
{
|
|
55
|
+
return schema;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public boolean isNull(Column column)
|
|
59
|
+
{
|
|
60
|
+
return isNull(column.getIndex());
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public boolean isNull(int columnIndex)
|
|
64
|
+
{
|
|
65
|
+
return (nullBitSet[columnIndex >>> 3] & (1 << (columnIndex & 7))) != 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public boolean getBoolean(Column column)
|
|
69
|
+
{
|
|
70
|
+
// TODO check type?
|
|
71
|
+
return getBoolean(column.getIndex());
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public boolean getBoolean(int columnIndex)
|
|
75
|
+
{
|
|
76
|
+
return pageSlice.getByte(getOffset(columnIndex)) != (byte) 0;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public long getLong(Column column)
|
|
80
|
+
{
|
|
81
|
+
// TODO check type?
|
|
82
|
+
return getLong(column.getIndex());
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public long getLong(int columnIndex)
|
|
86
|
+
{
|
|
87
|
+
return pageSlice.getLong(getOffset(columnIndex));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public double getDouble(Column column)
|
|
91
|
+
{
|
|
92
|
+
// TODO check type?
|
|
93
|
+
return getDouble(column.getIndex());
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public double getDouble(int columnIndex)
|
|
97
|
+
{
|
|
98
|
+
return pageSlice.getDouble(getOffset(columnIndex));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public String getString(Column column)
|
|
102
|
+
{
|
|
103
|
+
// TODO check type?
|
|
104
|
+
return getString(column.getIndex());
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
public String getString(int columnIndex)
|
|
108
|
+
{
|
|
109
|
+
int index = pageSlice.getInt(getOffset(columnIndex));
|
|
110
|
+
return page.getStringReference(index);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
public Timestamp getTimestamp(Column column)
|
|
114
|
+
{
|
|
115
|
+
// TODO check type?
|
|
116
|
+
return getTimestamp(column.getIndex());
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
public Timestamp getTimestamp(int columnIndex)
|
|
120
|
+
{
|
|
121
|
+
int offset = getOffset(columnIndex);
|
|
122
|
+
long sec = pageSlice.getLong(offset);
|
|
123
|
+
int nsec = pageSlice.getInt(offset + 8);
|
|
124
|
+
return Timestamp.ofEpochSecond(sec, nsec);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
private int getOffset(int columnIndex)
|
|
128
|
+
{
|
|
129
|
+
return position + columnOffsets[columnIndex];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
public boolean nextRecord()
|
|
133
|
+
{
|
|
134
|
+
if (pageRecordCount <= readCount) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (readCount > 0) {
|
|
139
|
+
// advance position excepting the first record
|
|
140
|
+
int lastRecordSize = pageSlice.getInt(position);
|
|
141
|
+
position += lastRecordSize;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
readCount++;
|
|
145
|
+
pageSlice.getBytes(position + 4, nullBitSet, 0, nullBitSet.length);
|
|
146
|
+
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@Override
|
|
151
|
+
public void close()
|
|
152
|
+
{
|
|
153
|
+
page.buffer().release();
|
|
154
|
+
page = SENTINEL;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* TODO for variable-length types
|
|
158
|
+
public VariableLengthDataReader getVariableLengthData(int columnIndex, int variableLengthDataOffset)
|
|
159
|
+
{
|
|
160
|
+
return new VariableLengthDataReader(variableLengthDataOffset);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
public class VariableLengthDataReader
|
|
164
|
+
{
|
|
165
|
+
private int offsetFromPosition;
|
|
166
|
+
|
|
167
|
+
VariableLengthDataReader(int offsetFromPosition)
|
|
168
|
+
{
|
|
169
|
+
this.offsetFromPosition = offsetFromPosition;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
public byte readByte()
|
|
173
|
+
{
|
|
174
|
+
byte value = page.getByte(position + offsetFromPosition);
|
|
175
|
+
offsetFromPosition += 1;
|
|
176
|
+
return value;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
public short readShort()
|
|
180
|
+
{
|
|
181
|
+
short value = page.getShort(position + offsetFromPosition);
|
|
182
|
+
offsetFromPosition += 2;
|
|
183
|
+
return value;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
public int readInt()
|
|
187
|
+
{
|
|
188
|
+
int value = page.getInt(position + offsetFromPosition);
|
|
189
|
+
offsetFromPosition += 4;
|
|
190
|
+
return value;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
public long readLong()
|
|
194
|
+
{
|
|
195
|
+
long value = page.getLong(position + offsetFromPosition);
|
|
196
|
+
offsetFromPosition += 8;
|
|
197
|
+
return value;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
public float readFloat()
|
|
201
|
+
{
|
|
202
|
+
float value = page.getFloat(position + offsetFromPosition);
|
|
203
|
+
offsetFromPosition += 4;
|
|
204
|
+
return value;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
public double readDouble()
|
|
208
|
+
{
|
|
209
|
+
double value = page.getDouble(position + offsetFromPosition);
|
|
210
|
+
offsetFromPosition += 8;
|
|
211
|
+
return value;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
public void readBytes(byte[] data)
|
|
215
|
+
{
|
|
216
|
+
readBytes(data, 0, data.length);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
public void readBytes(byte[] data, int off, int len)
|
|
220
|
+
{
|
|
221
|
+
page.getBytes(position + offsetFromPosition, data, off, len);
|
|
222
|
+
offsetFromPosition += len;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
*/
|
|
226
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
package org.embulk.spi;
|
|
2
|
+
|
|
3
|
+
import org.embulk.config.TaskSource;
|
|
4
|
+
import org.embulk.config.ConfigSource;
|
|
5
|
+
|
|
6
|
+
public interface ParserPlugin
|
|
7
|
+
{
|
|
8
|
+
interface Control
|
|
9
|
+
{
|
|
10
|
+
void run(TaskSource taskSource, Schema schema);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
void transaction(ConfigSource config, ParserPlugin.Control control);
|
|
14
|
+
|
|
15
|
+
void run(TaskSource taskSource, Schema schema,
|
|
16
|
+
FileInput input, PageOutput output);
|
|
17
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
package org.embulk.spi;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
5
|
+
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
6
|
+
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
7
|
+
import org.embulk.plugin.PluginType;
|
|
8
|
+
import org.embulk.config.TaskSource;
|
|
9
|
+
import org.embulk.spi.util.Executors;
|
|
10
|
+
|
|
11
|
+
public class ProcessTask
|
|
12
|
+
{
|
|
13
|
+
private final PluginType inputPluginType;
|
|
14
|
+
private final PluginType outputPluginType;
|
|
15
|
+
private final List<PluginType> filterPluginTypes;
|
|
16
|
+
private final TaskSource inputTaskSource;
|
|
17
|
+
private final TaskSource outputTaskSource;
|
|
18
|
+
private final List<TaskSource> filterTaskSources;
|
|
19
|
+
private final List<Schema> schemas;
|
|
20
|
+
private final Schema executorSchema;
|
|
21
|
+
private TaskSource executorTaskSource;
|
|
22
|
+
|
|
23
|
+
@JsonCreator
|
|
24
|
+
public ProcessTask(
|
|
25
|
+
@JsonProperty("inputType") PluginType inputPluginType,
|
|
26
|
+
@JsonProperty("outputType") PluginType outputPluginType,
|
|
27
|
+
@JsonProperty("filterTypes") List<PluginType> filterPluginTypes,
|
|
28
|
+
@JsonProperty("inputTask") TaskSource inputTaskSource,
|
|
29
|
+
@JsonProperty("outputTask") TaskSource outputTaskSource,
|
|
30
|
+
@JsonProperty("filterTasks") List<TaskSource> filterTaskSources,
|
|
31
|
+
@JsonProperty("schemas") List<Schema> schemas,
|
|
32
|
+
@JsonProperty("executorSchema") Schema executorSchema,
|
|
33
|
+
@JsonProperty("executorTask") TaskSource executorTaskSource)
|
|
34
|
+
{
|
|
35
|
+
this.inputPluginType = inputPluginType;
|
|
36
|
+
this.outputPluginType = outputPluginType;
|
|
37
|
+
this.filterPluginTypes = filterPluginTypes;
|
|
38
|
+
this.inputTaskSource = inputTaskSource;
|
|
39
|
+
this.outputTaskSource = outputTaskSource;
|
|
40
|
+
this.filterTaskSources = filterTaskSources;
|
|
41
|
+
this.schemas = schemas;
|
|
42
|
+
this.executorSchema = executorSchema;
|
|
43
|
+
this.executorTaskSource = executorTaskSource;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@JsonProperty("inputType")
|
|
47
|
+
public PluginType getInputPluginType()
|
|
48
|
+
{
|
|
49
|
+
return inputPluginType;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@JsonProperty("outputType")
|
|
53
|
+
public PluginType getOutputPluginType()
|
|
54
|
+
{
|
|
55
|
+
return outputPluginType;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@JsonProperty("filterTypes")
|
|
59
|
+
public List<PluginType> getFilterPluginTypes()
|
|
60
|
+
{
|
|
61
|
+
return filterPluginTypes;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@JsonProperty("inputTask")
|
|
65
|
+
public TaskSource getInputTaskSource()
|
|
66
|
+
{
|
|
67
|
+
return inputTaskSource;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@JsonProperty("outputTask")
|
|
71
|
+
public TaskSource getOutputTaskSource()
|
|
72
|
+
{
|
|
73
|
+
return outputTaskSource;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@JsonProperty("filterTasks")
|
|
77
|
+
public List<TaskSource> getFilterTaskSources()
|
|
78
|
+
{
|
|
79
|
+
return filterTaskSources;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@JsonProperty("schemas")
|
|
83
|
+
public List<Schema> getFilterSchemas()
|
|
84
|
+
{
|
|
85
|
+
return schemas;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@JsonProperty("executorSchema")
|
|
89
|
+
public Schema getExecutorSchema()
|
|
90
|
+
{
|
|
91
|
+
return executorSchema;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@JsonIgnore
|
|
95
|
+
public Schema getInputSchema()
|
|
96
|
+
{
|
|
97
|
+
return Executors.getInputSchema(schemas);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@JsonIgnore
|
|
101
|
+
public Schema getOutputSchema()
|
|
102
|
+
{
|
|
103
|
+
return Executors.getOutputSchema(schemas);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@JsonIgnore
|
|
107
|
+
public void setExecutorTaskSource(TaskSource executorTaskSource)
|
|
108
|
+
{
|
|
109
|
+
this.executorTaskSource = executorTaskSource;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@JsonProperty("executorTask")
|
|
113
|
+
public TaskSource getExecutorTaskSource()
|
|
114
|
+
{
|
|
115
|
+
return executorTaskSource;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
package org.embulk.spi;
|
|
2
|
+
|
|
3
|
+
import java.util.List;
|
|
4
|
+
import java.util.Objects;
|
|
5
|
+
import com.google.common.collect.ImmutableList;
|
|
6
|
+
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
7
|
+
import com.fasterxml.jackson.annotation.JsonValue;
|
|
8
|
+
import org.embulk.spi.type.Type;
|
|
9
|
+
|
|
10
|
+
public class Schema
|
|
11
|
+
{
|
|
12
|
+
public static class Builder
|
|
13
|
+
{
|
|
14
|
+
private final ImmutableList.Builder<Column> columns = ImmutableList.builder();
|
|
15
|
+
private int index = 0; // next version of Guava will have ImmutableList.Builder.size()
|
|
16
|
+
|
|
17
|
+
public synchronized Builder add(String name, Type type)
|
|
18
|
+
{
|
|
19
|
+
columns.add(new Column(index++, name, type));
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public Schema build()
|
|
24
|
+
{
|
|
25
|
+
return new Schema(columns.build());
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public static Builder builder()
|
|
30
|
+
{
|
|
31
|
+
return new Builder();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private final List<Column> columns;
|
|
35
|
+
|
|
36
|
+
@JsonCreator
|
|
37
|
+
public Schema(List<Column> columns)
|
|
38
|
+
{
|
|
39
|
+
this.columns = columns;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@JsonValue
|
|
43
|
+
public List<Column> getColumns()
|
|
44
|
+
{
|
|
45
|
+
return columns;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public int size()
|
|
49
|
+
{
|
|
50
|
+
return columns.size();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public int getColumnCount()
|
|
54
|
+
{
|
|
55
|
+
return columns.size();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public Column getColumn(int index)
|
|
59
|
+
{
|
|
60
|
+
return columns.get(index);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public String getColumnName(int index)
|
|
64
|
+
{
|
|
65
|
+
return getColumn(index).getName();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public Type getColumnType(int index)
|
|
69
|
+
{
|
|
70
|
+
return getColumn(index).getType();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public void visitColumns(ColumnVisitor visitor)
|
|
74
|
+
{
|
|
75
|
+
for (Column column : columns) {
|
|
76
|
+
column.visit(visitor);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
public boolean isEmpty()
|
|
81
|
+
{
|
|
82
|
+
return columns.isEmpty();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public Column lookupColumn(String name)
|
|
86
|
+
{
|
|
87
|
+
for (Column c : columns) {
|
|
88
|
+
if (c.getName().equals(name)) {
|
|
89
|
+
return c;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
throw new SchemaConfigException(String.format("Column '%s' is not found", name));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public int getFixedStorageSize()
|
|
96
|
+
{
|
|
97
|
+
int total = 0;
|
|
98
|
+
for (Column column : columns) {
|
|
99
|
+
total += column.getType().getFixedStorageSize();
|
|
100
|
+
}
|
|
101
|
+
return total;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@Override
|
|
105
|
+
public boolean equals(Object obj)
|
|
106
|
+
{
|
|
107
|
+
if (this == obj) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
if (!(obj instanceof Schema)) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
Schema other = (Schema) obj;
|
|
114
|
+
return Objects.equals(columns, other.columns);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
@Override
|
|
118
|
+
public int hashCode()
|
|
119
|
+
{
|
|
120
|
+
return Objects.hashCode(columns);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@Override
|
|
124
|
+
public String toString()
|
|
125
|
+
{
|
|
126
|
+
StringBuilder sbuf = new StringBuilder();
|
|
127
|
+
sbuf.append("Schema{\n");
|
|
128
|
+
for (Column c : columns) {
|
|
129
|
+
sbuf.append(String.format(" %4d: %s %s%n", c.getIndex(), c.getName(), c.getType()));
|
|
130
|
+
}
|
|
131
|
+
sbuf.append("}");
|
|
132
|
+
return sbuf.toString();
|
|
133
|
+
}
|
|
134
|
+
}
|