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,49 @@
|
|
|
1
|
+
package org.embulk.spi.time;
|
|
2
|
+
|
|
3
|
+
import java.io.IOException;
|
|
4
|
+
import com.fasterxml.jackson.core.JsonGenerator;
|
|
5
|
+
import com.fasterxml.jackson.databind.module.SimpleModule;
|
|
6
|
+
import com.fasterxml.jackson.databind.SerializerProvider;
|
|
7
|
+
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
8
|
+
import com.fasterxml.jackson.databind.JsonSerializer;
|
|
9
|
+
import com.fasterxml.jackson.databind.JsonMappingException;
|
|
10
|
+
import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;
|
|
11
|
+
import com.fasterxml.jackson.module.guice.ObjectMapperModule;
|
|
12
|
+
|
|
13
|
+
public class TimestampSerDe
|
|
14
|
+
{
|
|
15
|
+
public static void configure(ObjectMapperModule mapper)
|
|
16
|
+
{
|
|
17
|
+
SimpleModule module = new SimpleModule();
|
|
18
|
+
module.addSerializer(Timestamp.class, new DateTimeZoneSerializer());
|
|
19
|
+
module.addDeserializer(Timestamp.class, new DateTimeZoneDeserializer());
|
|
20
|
+
mapper.registerModule(module);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public static class DateTimeZoneSerializer
|
|
24
|
+
extends JsonSerializer<Timestamp>
|
|
25
|
+
{
|
|
26
|
+
@Override
|
|
27
|
+
public void serialize(Timestamp value, JsonGenerator jgen, SerializerProvider provider)
|
|
28
|
+
throws IOException
|
|
29
|
+
{
|
|
30
|
+
jgen.writeString(value.toString());
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public static class DateTimeZoneDeserializer
|
|
35
|
+
extends FromStringDeserializer<Timestamp>
|
|
36
|
+
{
|
|
37
|
+
public DateTimeZoneDeserializer()
|
|
38
|
+
{
|
|
39
|
+
super(Timestamp.class);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
@Override
|
|
43
|
+
protected Timestamp _deserialize(String value, DeserializationContext context)
|
|
44
|
+
throws JsonMappingException
|
|
45
|
+
{
|
|
46
|
+
return Timestamp.fromString(value);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
package org.embulk.spi.type;
|
|
2
|
+
|
|
3
|
+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
|
4
|
+
|
|
5
|
+
public abstract class AbstractType
|
|
6
|
+
implements Type
|
|
7
|
+
{
|
|
8
|
+
private final String name;
|
|
9
|
+
private final Class<?> javaType;
|
|
10
|
+
private byte fixedStorageSize;
|
|
11
|
+
|
|
12
|
+
protected AbstractType(String name, Class<?> javaType, int fixedStorageSize)
|
|
13
|
+
{
|
|
14
|
+
this.name = name;
|
|
15
|
+
this.javaType = javaType;
|
|
16
|
+
this.fixedStorageSize = (byte) fixedStorageSize;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@Override
|
|
20
|
+
public String getName()
|
|
21
|
+
{
|
|
22
|
+
return name;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@Override
|
|
26
|
+
public Class<?> getJavaType()
|
|
27
|
+
{
|
|
28
|
+
return javaType;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Override
|
|
32
|
+
public byte getFixedStorageSize()
|
|
33
|
+
{
|
|
34
|
+
return fixedStorageSize;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@SuppressFBWarnings(value = "EQ_UNUSUAL")
|
|
38
|
+
@Override
|
|
39
|
+
public boolean equals(Object o)
|
|
40
|
+
{
|
|
41
|
+
if (o == null) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return o.getClass().isAssignableFrom(getClass());
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Override
|
|
48
|
+
public int hashCode()
|
|
49
|
+
{
|
|
50
|
+
return getClass().hashCode();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@Override
|
|
54
|
+
public String toString()
|
|
55
|
+
{
|
|
56
|
+
return name;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
package org.embulk.spi.type;
|
|
2
|
+
|
|
3
|
+
import org.embulk.spi.time.Timestamp;
|
|
4
|
+
|
|
5
|
+
public class TimestampType
|
|
6
|
+
extends AbstractType
|
|
7
|
+
{
|
|
8
|
+
static final TimestampType TIMESTAMP = new TimestampType();
|
|
9
|
+
|
|
10
|
+
private static final String DEFAULT_FORMAT = "%Y-%m-%d %H:%M:%S.%6N %z";
|
|
11
|
+
|
|
12
|
+
private final String format;
|
|
13
|
+
|
|
14
|
+
private TimestampType()
|
|
15
|
+
{
|
|
16
|
+
this(null);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private TimestampType(String format)
|
|
20
|
+
{
|
|
21
|
+
super("timestamp", Timestamp.class, 12); // long msec + int nsec
|
|
22
|
+
this.format = format;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@Deprecated
|
|
26
|
+
public TimestampType withFormat(String format)
|
|
27
|
+
{
|
|
28
|
+
// TODO is this correct design...?
|
|
29
|
+
return new TimestampType(format);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@Deprecated
|
|
33
|
+
public String getFormat()
|
|
34
|
+
{
|
|
35
|
+
if (format == null) {
|
|
36
|
+
return DEFAULT_FORMAT;
|
|
37
|
+
} else {
|
|
38
|
+
return format;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
package org.embulk.spi.type;
|
|
2
|
+
|
|
3
|
+
import com.fasterxml.jackson.annotation.JsonValue;
|
|
4
|
+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
|
5
|
+
|
|
6
|
+
@JsonDeserialize(using=TypeDeserializer.class)
|
|
7
|
+
public interface Type
|
|
8
|
+
{
|
|
9
|
+
@JsonValue
|
|
10
|
+
String getName();
|
|
11
|
+
|
|
12
|
+
Class<?> getJavaType();
|
|
13
|
+
|
|
14
|
+
byte getFixedStorageSize();
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
package org.embulk.spi.type;
|
|
2
|
+
|
|
3
|
+
import java.util.Map;
|
|
4
|
+
import java.io.IOException;
|
|
5
|
+
import com.google.common.base.Joiner;
|
|
6
|
+
import com.google.common.collect.ImmutableMap;
|
|
7
|
+
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
8
|
+
import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;
|
|
9
|
+
import com.fasterxml.jackson.databind.JsonMappingException;
|
|
10
|
+
|
|
11
|
+
public class TypeDeserializer
|
|
12
|
+
extends FromStringDeserializer<Type>
|
|
13
|
+
{
|
|
14
|
+
private static final Map<String, Type> stringToTypeMap;
|
|
15
|
+
|
|
16
|
+
static {
|
|
17
|
+
ImmutableMap.Builder<String, Type> builder = ImmutableMap.builder();
|
|
18
|
+
builder.put(BooleanType.BOOLEAN.getName(), BooleanType.BOOLEAN);
|
|
19
|
+
builder.put(LongType.LONG.getName(), LongType.LONG);
|
|
20
|
+
builder.put(DoubleType.DOUBLE.getName(), DoubleType.DOUBLE);
|
|
21
|
+
builder.put(StringType.STRING.getName(), StringType.STRING);
|
|
22
|
+
builder.put(TimestampType.TIMESTAMP.getName(), TimestampType.TIMESTAMP);
|
|
23
|
+
stringToTypeMap = builder.build();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public TypeDeserializer()
|
|
27
|
+
{
|
|
28
|
+
super(Type.class);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Override
|
|
32
|
+
protected Type _deserialize(String value, DeserializationContext context)
|
|
33
|
+
throws IOException
|
|
34
|
+
{
|
|
35
|
+
Type t = stringToTypeMap.get(value);
|
|
36
|
+
if (t == null) {
|
|
37
|
+
throw new JsonMappingException(
|
|
38
|
+
String.format("Unknown type name '%s'. Supported types are: %s",
|
|
39
|
+
value,
|
|
40
|
+
Joiner.on(", ").join(stringToTypeMap.keySet())));
|
|
41
|
+
}
|
|
42
|
+
return t;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package org.embulk.spi.type;
|
|
2
|
+
|
|
3
|
+
public class Types
|
|
4
|
+
{
|
|
5
|
+
public static final BooleanType BOOLEAN = BooleanType.BOOLEAN;
|
|
6
|
+
|
|
7
|
+
public static final LongType LONG = LongType.LONG;
|
|
8
|
+
|
|
9
|
+
public static final DoubleType DOUBLE = DoubleType.DOUBLE;
|
|
10
|
+
|
|
11
|
+
public static final StringType STRING = StringType.STRING;
|
|
12
|
+
|
|
13
|
+
public static final TimestampType TIMESTAMP = TimestampType.TIMESTAMP;
|
|
14
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
package org.embulk.spi.unit;
|
|
2
|
+
|
|
3
|
+
import java.util.Objects;
|
|
4
|
+
import java.util.Locale;
|
|
5
|
+
import java.util.regex.Matcher;
|
|
6
|
+
import java.util.regex.Pattern;
|
|
7
|
+
import com.google.common.base.Preconditions;
|
|
8
|
+
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
9
|
+
import com.fasterxml.jackson.annotation.JsonValue;
|
|
10
|
+
|
|
11
|
+
public class ByteSize
|
|
12
|
+
implements Comparable<ByteSize>
|
|
13
|
+
{
|
|
14
|
+
private static final Pattern PATTERN = Pattern.compile("\\A(\\d+(?:\\.\\d+)?)\\s?([a-zA-Z]*)\\z");
|
|
15
|
+
|
|
16
|
+
private final long bytes;
|
|
17
|
+
private final Unit displayUnit;
|
|
18
|
+
|
|
19
|
+
public ByteSize(double size, Unit unit)
|
|
20
|
+
{
|
|
21
|
+
Preconditions.checkArgument(!Double.isInfinite(size), "size is infinite");
|
|
22
|
+
Preconditions.checkArgument(!Double.isNaN(size), "size is not a number");
|
|
23
|
+
Preconditions.checkArgument(size >= 0, "size is negative");
|
|
24
|
+
Preconditions.checkNotNull(unit, "unit is null");
|
|
25
|
+
Preconditions.checkArgument(size * unit.getFactor() <= (double) Long.MAX_VALUE, "size is large than (2^63)-1 in bytes");
|
|
26
|
+
this.bytes = (long) (size * unit.getFactor());
|
|
27
|
+
this.displayUnit = unit;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@JsonCreator
|
|
31
|
+
public ByteSize(long bytes)
|
|
32
|
+
{
|
|
33
|
+
Preconditions.checkArgument(bytes >= 0, "size is negative");
|
|
34
|
+
this.bytes = bytes;
|
|
35
|
+
this.displayUnit = Unit.BYTES;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public long getBytes()
|
|
39
|
+
{
|
|
40
|
+
return bytes;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public int getBytesInt()
|
|
44
|
+
{
|
|
45
|
+
if (bytes > Integer.MAX_VALUE) {
|
|
46
|
+
throw new RuntimeException("Byte size is too large (must be smaller than 2GB)");
|
|
47
|
+
}
|
|
48
|
+
return (int) bytes;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public long roundTo(Unit unit)
|
|
52
|
+
{
|
|
53
|
+
return (long) Math.floor(getValue(unit) + 0.5);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public double getValue(Unit unit)
|
|
57
|
+
{
|
|
58
|
+
return bytes / (double) unit.getFactor();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@JsonCreator
|
|
62
|
+
public static ByteSize parseByteSize(String size)
|
|
63
|
+
{
|
|
64
|
+
Preconditions.checkNotNull(size, "size is null");
|
|
65
|
+
Preconditions.checkArgument(!size.isEmpty(), "size is empty");
|
|
66
|
+
|
|
67
|
+
Matcher matcher = PATTERN.matcher(size);
|
|
68
|
+
if (!matcher.matches()) {
|
|
69
|
+
throw new IllegalArgumentException("Invalid byte size string '" + size + "'");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
double value = Double.parseDouble(matcher.group(1)); // NumberFormatException extends IllegalArgumentException.
|
|
73
|
+
|
|
74
|
+
String unitString = matcher.group(2);
|
|
75
|
+
if (unitString.isEmpty()) {
|
|
76
|
+
return new ByteSize(value, Unit.BYTES);
|
|
77
|
+
} else {
|
|
78
|
+
String upperUnitString = unitString.toUpperCase(Locale.ENGLISH);
|
|
79
|
+
for (Unit unit : Unit.values()) {
|
|
80
|
+
if (unit.getUnitString().toUpperCase(Locale.ENGLISH).equals(upperUnitString)) {
|
|
81
|
+
return new ByteSize(value, unit);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
throw new IllegalArgumentException("Unknown unit '" + unitString + "'");
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@JsonValue
|
|
90
|
+
@Override
|
|
91
|
+
public String toString()
|
|
92
|
+
{
|
|
93
|
+
double value = getValue(displayUnit);
|
|
94
|
+
String integer = String.format(Locale.ENGLISH, "%d", (long) value);
|
|
95
|
+
String decimal = String.format(Locale.ENGLISH, "%.2f", value);
|
|
96
|
+
if (decimal.equals(integer + ".00")) {
|
|
97
|
+
return integer + displayUnit.getUnitString();
|
|
98
|
+
} else {
|
|
99
|
+
return decimal + displayUnit.getUnitString();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Override
|
|
104
|
+
public int compareTo(ByteSize o)
|
|
105
|
+
{
|
|
106
|
+
return Long.compare(bytes, o.bytes);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@Override
|
|
110
|
+
public boolean equals(Object obj)
|
|
111
|
+
{
|
|
112
|
+
if (this == obj) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
if (!(obj instanceof ByteSize)) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
ByteSize o = (ByteSize) obj;
|
|
119
|
+
return this.bytes == o.bytes;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@Override
|
|
123
|
+
public int hashCode()
|
|
124
|
+
{
|
|
125
|
+
return Objects.hashCode(bytes);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
public enum Unit
|
|
129
|
+
{
|
|
130
|
+
BYTES(1L, "B"),
|
|
131
|
+
KB(1L << 10, "KB"),
|
|
132
|
+
MB(1L << 20, "MB"),
|
|
133
|
+
GB(1L << 30, "GB"),
|
|
134
|
+
TB(1L << 40, "TB"),
|
|
135
|
+
PT(1L << 50, "PB");
|
|
136
|
+
|
|
137
|
+
private final long factor;
|
|
138
|
+
private final String unitString;
|
|
139
|
+
|
|
140
|
+
Unit(long factor, String unitString)
|
|
141
|
+
{
|
|
142
|
+
this.factor = factor;
|
|
143
|
+
this.unitString = unitString;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
long getFactor()
|
|
147
|
+
{
|
|
148
|
+
return factor;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
String getUnitString()
|
|
152
|
+
{
|
|
153
|
+
return unitString;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
package org.embulk.spi.unit;
|
|
2
|
+
|
|
3
|
+
import java.io.File;
|
|
4
|
+
import java.io.IOException;
|
|
5
|
+
import java.io.InputStream;
|
|
6
|
+
import java.io.ByteArrayInputStream;
|
|
7
|
+
import java.nio.file.Path;
|
|
8
|
+
import java.nio.file.Paths;
|
|
9
|
+
import java.nio.file.Files;
|
|
10
|
+
import java.nio.charset.Charset;
|
|
11
|
+
import java.nio.charset.StandardCharsets;
|
|
12
|
+
import org.embulk.spi.Exec;
|
|
13
|
+
import org.embulk.spi.TempFileSpace;
|
|
14
|
+
import org.embulk.spi.TempFileException;
|
|
15
|
+
|
|
16
|
+
public class LocalFile
|
|
17
|
+
{
|
|
18
|
+
public static LocalFile of(File path) throws IOException
|
|
19
|
+
{
|
|
20
|
+
return of(path.toPath());
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public static LocalFile of(Path path) throws IOException
|
|
24
|
+
{
|
|
25
|
+
return new LocalFile(path, Files.readAllBytes(path));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public static LocalFile of(String path) throws IOException
|
|
29
|
+
{
|
|
30
|
+
return of(Paths.get(path));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public static LocalFile ofContent(byte[] content)
|
|
34
|
+
{
|
|
35
|
+
return new LocalFile(content);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public static LocalFile ofContent(String content)
|
|
39
|
+
{
|
|
40
|
+
return new LocalFile(content.getBytes(StandardCharsets.UTF_8));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private Path path;
|
|
44
|
+
private final byte[] content;
|
|
45
|
+
|
|
46
|
+
private LocalFile(Path path, byte[] content)
|
|
47
|
+
{
|
|
48
|
+
this.path = path;
|
|
49
|
+
this.content = content;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
private LocalFile(byte[] content)
|
|
53
|
+
{
|
|
54
|
+
this.path = null;
|
|
55
|
+
this.content = content;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public File getFile()
|
|
59
|
+
{
|
|
60
|
+
return getPath(Exec.getTempFileSpace()).toFile();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public File getFile(TempFileSpace space)
|
|
64
|
+
{
|
|
65
|
+
return getPath(space).toFile();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public Path getPath()
|
|
69
|
+
{
|
|
70
|
+
return getPath(Exec.getTempFileSpace());
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public synchronized Path getPath(TempFileSpace tempFileSpace)
|
|
74
|
+
{
|
|
75
|
+
if (path == null) {
|
|
76
|
+
Path temp = tempFileSpace.createTempFile().toPath();
|
|
77
|
+
try {
|
|
78
|
+
Files.write(temp, content);
|
|
79
|
+
} catch (IOException ex) {
|
|
80
|
+
throw new TempFileException(ex);
|
|
81
|
+
}
|
|
82
|
+
this.path = temp;
|
|
83
|
+
}
|
|
84
|
+
return path;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public byte[] getContent()
|
|
88
|
+
{
|
|
89
|
+
return content;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public String getContentAsString()
|
|
93
|
+
{
|
|
94
|
+
return new String(content);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public String getContentAsString(Charset charset)
|
|
98
|
+
{
|
|
99
|
+
return new String(content, charset);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public InputStream newContentInputStream()
|
|
103
|
+
{
|
|
104
|
+
return new ByteArrayInputStream(content);
|
|
105
|
+
}
|
|
106
|
+
}
|