embulk 0.8.35-java → 0.10.24-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (595) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +1 -1
  3. data/LICENSE +202 -0
  4. data/embulk.gemspec +34 -33
  5. data/lib/embulk.rb +5 -61
  6. data/lib/embulk/buffer.rb +1 -2
  7. data/lib/embulk/guess/charset.rb +2 -11
  8. data/lib/embulk/guess/schema_guess.rb +1 -1
  9. data/lib/embulk/input_plugin.rb +8 -1
  10. data/lib/embulk/java/bootstrap.rb +1 -2
  11. data/lib/embulk/java_plugin.rb +9 -1
  12. data/lib/embulk/page_builder.rb +38 -5
  13. data/lib/embulk/plugin.rb +2 -2
  14. data/lib/embulk/schema.rb +5 -7
  15. data/lib/embulk/version.rb +3 -22
  16. metadata +23 -752
  17. data/.gitignore +0 -15
  18. data/.ruby-version +0 -1
  19. data/.travis.yml +0 -28
  20. data/COPYING +0 -14
  21. data/Gemfile.lock +0 -30
  22. data/README.md +0 -225
  23. data/Rakefile +0 -26
  24. data/appveyor.yml +0 -28
  25. data/bin/embulk +0 -139
  26. data/build.gradle +0 -415
  27. data/embulk-cli/build.gradle +0 -9
  28. data/embulk-cli/src/main/bat/selfrun.bat +0 -107
  29. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkArguments.java +0 -54
  30. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkCommandLine.java +0 -227
  31. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkCommandLineException.java +0 -25
  32. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkExample.java +0 -82
  33. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkMigrate.java +0 -480
  34. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkNew.java +0 -419
  35. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkRun.java +0 -774
  36. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkSelfUpdate.java +0 -235
  37. data/embulk-cli/src/main/java/org/embulk/cli/EmbulkSubcommand.java +0 -47
  38. data/embulk-cli/src/main/java/org/embulk/cli/Main.java +0 -31
  39. data/embulk-cli/src/main/java/org/embulk/cli/parse/AbstractHelpLineDefinition.java +0 -15
  40. data/embulk-cli/src/main/java/org/embulk/cli/parse/CliHelpFormatterWithHelpMessages.java +0 -141
  41. data/embulk-cli/src/main/java/org/embulk/cli/parse/CliOptionsWithHelpMessages.java +0 -45
  42. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineHelpRequired.java +0 -10
  43. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineParseException.java +0 -25
  44. data/embulk-cli/src/main/java/org/embulk/cli/parse/EmbulkCommandLineParser.java +0 -187
  45. data/embulk-cli/src/main/java/org/embulk/cli/parse/HelpMessageAsCliOption.java +0 -36
  46. data/embulk-cli/src/main/java/org/embulk/cli/parse/HelpMessageLineDefinition.java +0 -20
  47. data/embulk-cli/src/main/java/org/embulk/cli/parse/OptionBehavior.java +0 -39
  48. data/embulk-cli/src/main/java/org/embulk/cli/parse/OptionDefinition.java +0 -120
  49. data/embulk-cli/src/main/sh/selfrun.sh +0 -60
  50. data/embulk-cli/src/test/java/org/embulk/cli/DummyMain.java +0 -23
  51. data/embulk-cli/src/test/java/org/embulk/cli/SelfrunTest.java +0 -296
  52. data/embulk-core/build.gradle +0 -83
  53. data/embulk-core/src/main/java/org/embulk/EmbulkEmbed.java +0 -321
  54. data/embulk-core/src/main/java/org/embulk/EmbulkRunner.java +0 -582
  55. data/embulk-core/src/main/java/org/embulk/EmbulkService.java +0 -78
  56. data/embulk-core/src/main/java/org/embulk/EmbulkSetup.java +0 -49
  57. data/embulk-core/src/main/java/org/embulk/EmbulkVersion.java +0 -109
  58. data/embulk-core/src/main/java/org/embulk/command/PreviewPrinter.java +0 -87
  59. data/embulk-core/src/main/java/org/embulk/command/TablePreviewPrinter.java +0 -107
  60. data/embulk-core/src/main/java/org/embulk/command/VerticalPreviewPrinter.java +0 -47
  61. data/embulk-core/src/main/java/org/embulk/config/CommitReport.java +0 -36
  62. data/embulk-core/src/main/java/org/embulk/config/Config.java +0 -15
  63. data/embulk-core/src/main/java/org/embulk/config/ConfigDefault.java +0 -15
  64. data/embulk-core/src/main/java/org/embulk/config/ConfigDiff.java +0 -32
  65. data/embulk-core/src/main/java/org/embulk/config/ConfigException.java +0 -26
  66. data/embulk-core/src/main/java/org/embulk/config/ConfigInject.java +0 -14
  67. data/embulk-core/src/main/java/org/embulk/config/ConfigLoader.java +0 -149
  68. data/embulk-core/src/main/java/org/embulk/config/ConfigSource.java +0 -34
  69. data/embulk-core/src/main/java/org/embulk/config/DataSource.java +0 -41
  70. data/embulk-core/src/main/java/org/embulk/config/DataSourceImpl.java +0 -243
  71. data/embulk-core/src/main/java/org/embulk/config/DataSourceSerDe.java +0 -84
  72. data/embulk-core/src/main/java/org/embulk/config/GenericTypeReference.java +0 -20
  73. data/embulk-core/src/main/java/org/embulk/config/ModelManager.java +0 -123
  74. data/embulk-core/src/main/java/org/embulk/config/Task.java +0 -10
  75. data/embulk-core/src/main/java/org/embulk/config/TaskInvocationHandler.java +0 -180
  76. data/embulk-core/src/main/java/org/embulk/config/TaskReport.java +0 -32
  77. data/embulk-core/src/main/java/org/embulk/config/TaskSerDe.java +0 -349
  78. data/embulk-core/src/main/java/org/embulk/config/TaskSource.java +0 -34
  79. data/embulk-core/src/main/java/org/embulk/config/TaskValidationException.java +0 -38
  80. data/embulk-core/src/main/java/org/embulk/config/TaskValidator.java +0 -24
  81. data/embulk-core/src/main/java/org/embulk/config/UserDataException.java +0 -4
  82. data/embulk-core/src/main/java/org/embulk/config/UserDataExceptions.java +0 -17
  83. data/embulk-core/src/main/java/org/embulk/config/YamlTagResolver.java +0 -53
  84. data/embulk-core/src/main/java/org/embulk/exec/BufferFileInputPlugin.java +0 -88
  85. data/embulk-core/src/main/java/org/embulk/exec/BulkLoader.java +0 -754
  86. data/embulk-core/src/main/java/org/embulk/exec/ConfigurableGuessInputPlugin.java +0 -9
  87. data/embulk-core/src/main/java/org/embulk/exec/ExecModule.java +0 -53
  88. data/embulk-core/src/main/java/org/embulk/exec/ExecutionInterruptedException.java +0 -10
  89. data/embulk-core/src/main/java/org/embulk/exec/ExecutionResult.java +0 -33
  90. data/embulk-core/src/main/java/org/embulk/exec/ExtensionServiceLoaderModule.java +0 -43
  91. data/embulk-core/src/main/java/org/embulk/exec/ForGuess.java +0 -16
  92. data/embulk-core/src/main/java/org/embulk/exec/ForSystemConfig.java +0 -16
  93. data/embulk-core/src/main/java/org/embulk/exec/GuessExecutor.java +0 -309
  94. data/embulk-core/src/main/java/org/embulk/exec/LocalExecutorPlugin.java +0 -563
  95. data/embulk-core/src/main/java/org/embulk/exec/LoggerProvider.java +0 -68
  96. data/embulk-core/src/main/java/org/embulk/exec/NoSampleException.java +0 -10
  97. data/embulk-core/src/main/java/org/embulk/exec/PartialExecutionException.java +0 -26
  98. data/embulk-core/src/main/java/org/embulk/exec/PooledBufferAllocator.java +0 -77
  99. data/embulk-core/src/main/java/org/embulk/exec/PreviewExecutor.java +0 -222
  100. data/embulk-core/src/main/java/org/embulk/exec/PreviewResult.java +0 -27
  101. data/embulk-core/src/main/java/org/embulk/exec/PreviewedNoticeError.java +0 -17
  102. data/embulk-core/src/main/java/org/embulk/exec/ResumeState.java +0 -100
  103. data/embulk-core/src/main/java/org/embulk/exec/SamplingParserPlugin.java +0 -215
  104. data/embulk-core/src/main/java/org/embulk/exec/SetCurrentThreadName.java +0 -22
  105. data/embulk-core/src/main/java/org/embulk/exec/SkipTransactionException.java +0 -23
  106. data/embulk-core/src/main/java/org/embulk/exec/SystemConfigModule.java +0 -24
  107. data/embulk-core/src/main/java/org/embulk/exec/TempFileAllocator.java +0 -35
  108. data/embulk-core/src/main/java/org/embulk/exec/TransactionStage.java +0 -27
  109. data/embulk-core/src/main/java/org/embulk/jruby/JRubyPluginSource.java +0 -76
  110. data/embulk-core/src/main/java/org/embulk/jruby/JRubyScriptingModule.java +0 -395
  111. data/embulk-core/src/main/java/org/embulk/plugin/BuiltinPluginSourceModule.java +0 -17
  112. data/embulk-core/src/main/java/org/embulk/plugin/DefaultPluginType.java +0 -50
  113. data/embulk-core/src/main/java/org/embulk/plugin/InjectedPluginSource.java +0 -100
  114. data/embulk-core/src/main/java/org/embulk/plugin/MavenPluginType.java +0 -112
  115. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoader.java +0 -208
  116. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderFactory.java +0 -9
  117. data/embulk-core/src/main/java/org/embulk/plugin/PluginClassLoaderModule.java +0 -71
  118. data/embulk-core/src/main/java/org/embulk/plugin/PluginManager.java +0 -78
  119. data/embulk-core/src/main/java/org/embulk/plugin/PluginSource.java +0 -49
  120. data/embulk-core/src/main/java/org/embulk/plugin/PluginSourceNotMatchException.java +0 -25
  121. data/embulk-core/src/main/java/org/embulk/plugin/PluginType.java +0 -122
  122. data/embulk-core/src/main/java/org/embulk/plugin/compat/InputPluginWrapper.java +0 -102
  123. data/embulk-core/src/main/java/org/embulk/plugin/compat/PluginWrappers.java +0 -30
  124. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileInputWrapper.java +0 -96
  125. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalFileOutputWrapper.java +0 -102
  126. data/embulk-core/src/main/java/org/embulk/plugin/compat/TransactionalPageOutputWrapper.java +0 -95
  127. data/embulk-core/src/main/java/org/embulk/plugin/jar/InvalidJarPluginException.java +0 -14
  128. data/embulk-core/src/main/java/org/embulk/plugin/jar/JarPluginLoader.java +0 -205
  129. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenArtifactFinder.java +0 -134
  130. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenArtifactNotFoundException.java +0 -20
  131. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginSource.java +0 -187
  132. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginSourceModule.java +0 -22
  133. data/embulk-core/src/main/java/org/embulk/plugin/maven/MavenRepositoryNotFoundException.java +0 -31
  134. data/embulk-core/src/main/java/org/embulk/spi/AbortTransactionResource.java +0 -36
  135. data/embulk-core/src/main/java/org/embulk/spi/Buffer.java +0 -148
  136. data/embulk-core/src/main/java/org/embulk/spi/BufferAllocator.java +0 -8
  137. data/embulk-core/src/main/java/org/embulk/spi/CloseResource.java +0 -42
  138. data/embulk-core/src/main/java/org/embulk/spi/Column.java +0 -95
  139. data/embulk-core/src/main/java/org/embulk/spi/ColumnConfig.java +0 -112
  140. data/embulk-core/src/main/java/org/embulk/spi/ColumnVisitor.java +0 -16
  141. data/embulk-core/src/main/java/org/embulk/spi/DataException.java +0 -23
  142. data/embulk-core/src/main/java/org/embulk/spi/DecoderPlugin.java +0 -16
  143. data/embulk-core/src/main/java/org/embulk/spi/EncoderPlugin.java +0 -16
  144. data/embulk-core/src/main/java/org/embulk/spi/Exec.java +0 -113
  145. data/embulk-core/src/main/java/org/embulk/spi/ExecAction.java +0 -6
  146. data/embulk-core/src/main/java/org/embulk/spi/ExecSession.java +0 -225
  147. data/embulk-core/src/main/java/org/embulk/spi/ExecutorPlugin.java +0 -19
  148. data/embulk-core/src/main/java/org/embulk/spi/Extension.java +0 -44
  149. data/embulk-core/src/main/java/org/embulk/spi/FileInput.java +0 -11
  150. data/embulk-core/src/main/java/org/embulk/spi/FileInputPlugin.java +0 -30
  151. data/embulk-core/src/main/java/org/embulk/spi/FileInputRunner.java +0 -169
  152. data/embulk-core/src/main/java/org/embulk/spi/FileOutput.java +0 -13
  153. data/embulk-core/src/main/java/org/embulk/spi/FileOutputPlugin.java +0 -28
  154. data/embulk-core/src/main/java/org/embulk/spi/FileOutputRunner.java +0 -199
  155. data/embulk-core/src/main/java/org/embulk/spi/FilterPlugin.java +0 -18
  156. data/embulk-core/src/main/java/org/embulk/spi/FormatterPlugin.java +0 -18
  157. data/embulk-core/src/main/java/org/embulk/spi/GuessPlugin.java +0 -9
  158. data/embulk-core/src/main/java/org/embulk/spi/InputPlugin.java +0 -33
  159. data/embulk-core/src/main/java/org/embulk/spi/OutputPlugin.java +0 -29
  160. data/embulk-core/src/main/java/org/embulk/spi/Page.java +0 -86
  161. data/embulk-core/src/main/java/org/embulk/spi/PageBuilder.java +0 -696
  162. data/embulk-core/src/main/java/org/embulk/spi/PageFormat.java +0 -47
  163. data/embulk-core/src/main/java/org/embulk/spi/PageOutput.java +0 -11
  164. data/embulk-core/src/main/java/org/embulk/spi/PageReader.java +0 -248
  165. data/embulk-core/src/main/java/org/embulk/spi/ParserPlugin.java +0 -17
  166. data/embulk-core/src/main/java/org/embulk/spi/ProcessState.java +0 -10
  167. data/embulk-core/src/main/java/org/embulk/spi/ProcessTask.java +0 -117
  168. data/embulk-core/src/main/java/org/embulk/spi/Schema.java +0 -139
  169. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfig.java +0 -93
  170. data/embulk-core/src/main/java/org/embulk/spi/SchemaConfigException.java +0 -22
  171. data/embulk-core/src/main/java/org/embulk/spi/TaskState.java +0 -81
  172. data/embulk-core/src/main/java/org/embulk/spi/TempFileException.java +0 -19
  173. data/embulk-core/src/main/java/org/embulk/spi/TempFileSpace.java +0 -88
  174. data/embulk-core/src/main/java/org/embulk/spi/Transactional.java +0 -10
  175. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileInput.java +0 -17
  176. data/embulk-core/src/main/java/org/embulk/spi/TransactionalFileOutput.java +0 -19
  177. data/embulk-core/src/main/java/org/embulk/spi/TransactionalPageOutput.java +0 -17
  178. data/embulk-core/src/main/java/org/embulk/spi/json/JsonParseException.java +0 -17
  179. data/embulk-core/src/main/java/org/embulk/spi/json/JsonParser.java +0 -233
  180. data/embulk-core/src/main/java/org/embulk/spi/json/RubyValueApi.java +0 -62
  181. data/embulk-core/src/main/java/org/embulk/spi/time/DateTimeZoneSerDe.java +0 -55
  182. data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelper.java +0 -8
  183. data/embulk-core/src/main/java/org/embulk/spi/time/JRubyTimeParserHelperFactory.java +0 -6
  184. data/embulk-core/src/main/java/org/embulk/spi/time/Timestamp.java +0 -159
  185. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormat.java +0 -100
  186. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampFormatter.java +0 -125
  187. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParseException.java +0 -12
  188. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampParser.java +0 -283
  189. data/embulk-core/src/main/java/org/embulk/spi/time/TimestampSerDe.java +0 -49
  190. data/embulk-core/src/main/java/org/embulk/spi/type/AbstractType.java +0 -58
  191. data/embulk-core/src/main/java/org/embulk/spi/type/BooleanType.java +0 -12
  192. data/embulk-core/src/main/java/org/embulk/spi/type/DoubleType.java +0 -12
  193. data/embulk-core/src/main/java/org/embulk/spi/type/JsonType.java +0 -14
  194. data/embulk-core/src/main/java/org/embulk/spi/type/LongType.java +0 -12
  195. data/embulk-core/src/main/java/org/embulk/spi/type/StringType.java +0 -12
  196. data/embulk-core/src/main/java/org/embulk/spi/type/TimestampType.java +0 -41
  197. data/embulk-core/src/main/java/org/embulk/spi/type/Type.java +0 -15
  198. data/embulk-core/src/main/java/org/embulk/spi/type/TypeDeserializer.java +0 -45
  199. data/embulk-core/src/main/java/org/embulk/spi/type/Types.java +0 -16
  200. data/embulk-core/src/main/java/org/embulk/spi/unit/ByteSize.java +0 -156
  201. data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFile.java +0 -106
  202. data/embulk-core/src/main/java/org/embulk/spi/unit/LocalFileSerDe.java +0 -113
  203. data/embulk-core/src/main/java/org/embulk/spi/unit/ToString.java +0 -54
  204. data/embulk-core/src/main/java/org/embulk/spi/unit/ToStringMap.java +0 -34
  205. data/embulk-core/src/main/java/org/embulk/spi/util/CharsetSerDe.java +0 -55
  206. data/embulk-core/src/main/java/org/embulk/spi/util/Decoders.java +0 -81
  207. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnNotFoundException.java +0 -10
  208. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetter.java +0 -21
  209. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicColumnSetterFactory.java +0 -100
  210. data/embulk-core/src/main/java/org/embulk/spi/util/DynamicPageBuilder.java +0 -162
  211. data/embulk-core/src/main/java/org/embulk/spi/util/Encoders.java +0 -81
  212. data/embulk-core/src/main/java/org/embulk/spi/util/Executors.java +0 -93
  213. data/embulk-core/src/main/java/org/embulk/spi/util/FileInputInputStream.java +0 -111
  214. data/embulk-core/src/main/java/org/embulk/spi/util/FileOutputOutputStream.java +0 -119
  215. data/embulk-core/src/main/java/org/embulk/spi/util/Filters.java +0 -100
  216. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamFileInput.java +0 -189
  217. data/embulk-core/src/main/java/org/embulk/spi/util/InputStreamTransactionalFileInput.java +0 -25
  218. data/embulk-core/src/main/java/org/embulk/spi/util/Inputs.java +0 -65
  219. data/embulk-core/src/main/java/org/embulk/spi/util/LineDecoder.java +0 -157
  220. data/embulk-core/src/main/java/org/embulk/spi/util/LineEncoder.java +0 -123
  221. data/embulk-core/src/main/java/org/embulk/spi/util/ListFileInput.java +0 -52
  222. data/embulk-core/src/main/java/org/embulk/spi/util/Newline.java +0 -38
  223. data/embulk-core/src/main/java/org/embulk/spi/util/OutputStreamFileOutput.java +0 -88
  224. data/embulk-core/src/main/java/org/embulk/spi/util/PagePrinter.java +0 -108
  225. data/embulk-core/src/main/java/org/embulk/spi/util/Pages.java +0 -149
  226. data/embulk-core/src/main/java/org/embulk/spi/util/ResumableInputStream.java +0 -168
  227. data/embulk-core/src/main/java/org/embulk/spi/util/RetryExecutor.java +0 -130
  228. data/embulk-core/src/main/java/org/embulk/spi/util/Timestamps.java +0 -53
  229. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/AbstractDynamicColumnSetter.java +0 -83
  230. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/BooleanColumnSetter.java +0 -71
  231. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DefaultValueSetter.java +0 -20
  232. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/DoubleColumnSetter.java +0 -68
  233. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/JsonColumnSetter.java +0 -64
  234. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/LongColumnSetter.java +0 -78
  235. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/NullDefaultValueSetter.java +0 -39
  236. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/SkipColumnSetter.java +0 -57
  237. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/StringColumnSetter.java +0 -63
  238. data/embulk-core/src/main/java/org/embulk/spi/util/dynamic/TimestampColumnSetter.java +0 -72
  239. data/embulk-core/src/main/resources/embulk/logback-color.xml +0 -72
  240. data/embulk-core/src/main/resources/embulk/logback-console.xml +0 -14
  241. data/embulk-core/src/main/resources/embulk/logback-file.xml +0 -23
  242. data/embulk-core/src/main/resources/embulk/parent_first_packages.properties +0 -72
  243. data/embulk-core/src/main/resources/embulk/parent_first_resources.properties +0 -29
  244. data/embulk-core/src/test/java/org/embulk/EmbulkTestRuntime.java +0 -122
  245. data/embulk-core/src/test/java/org/embulk/GuiceBinder.java +0 -72
  246. data/embulk-core/src/test/java/org/embulk/RandomManager.java +0 -53
  247. data/embulk-core/src/test/java/org/embulk/TestPluginSourceModule.java +0 -23
  248. data/embulk-core/src/test/java/org/embulk/TestUtilityModule.java +0 -17
  249. data/embulk-core/src/test/java/org/embulk/config/TestConfigLoader.java +0 -66
  250. data/embulk-core/src/test/java/org/embulk/config/TestConfigSource.java +0 -114
  251. data/embulk-core/src/test/java/org/embulk/config/TestTaskSource.java +0 -70
  252. data/embulk-core/src/test/java/org/embulk/plugin/MockPluginSource.java +0 -58
  253. data/embulk-core/src/test/java/org/embulk/plugin/TestPluginType.java +0 -83
  254. data/embulk-core/src/test/java/org/embulk/plugin/TestPluginTypeSerDe.java +0 -67
  255. data/embulk-core/src/test/java/org/embulk/plugin/jar/ExampleJarSpiV0.java +0 -9
  256. data/embulk-core/src/test/java/org/embulk/plugin/jar/JarBuilder.java +0 -101
  257. data/embulk-core/src/test/java/org/embulk/plugin/jar/TestJarPluginLoader.java +0 -60
  258. data/embulk-core/src/test/java/org/embulk/plugin/maven/TestMavenArtifactFinder.java +0 -41
  259. data/embulk-core/src/test/java/org/embulk/spi/MockFileOutput.java +0 -63
  260. data/embulk-core/src/test/java/org/embulk/spi/MockFormatterPlugin.java +0 -108
  261. data/embulk-core/src/test/java/org/embulk/spi/MockParserPlugin.java +0 -80
  262. data/embulk-core/src/test/java/org/embulk/spi/PageTestUtils.java +0 -59
  263. data/embulk-core/src/test/java/org/embulk/spi/TestBuffer.java +0 -24
  264. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputInputStream.java +0 -89
  265. data/embulk-core/src/test/java/org/embulk/spi/TestFileInputRunner.java +0 -199
  266. data/embulk-core/src/test/java/org/embulk/spi/TestFileOutputRunner.java +0 -221
  267. data/embulk-core/src/test/java/org/embulk/spi/TestInputStreamFileInput.java +0 -188
  268. data/embulk-core/src/test/java/org/embulk/spi/TestPageBuilderReader.java +0 -411
  269. data/embulk-core/src/test/java/org/embulk/spi/json/TestJsonParser.java +0 -102
  270. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestamp.java +0 -116
  271. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParser.java +0 -75
  272. data/embulk-core/src/test/java/org/embulk/spi/time/TestTimestampFormatterParserDeprecated.java +0 -67
  273. data/embulk-core/src/test/java/org/embulk/spi/type/TestTypeSerDe.java +0 -45
  274. data/embulk-core/src/test/java/org/embulk/spi/unit/TestByteSize.java +0 -79
  275. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineDecoder.java +0 -237
  276. data/embulk-core/src/test/java/org/embulk/spi/util/TestLineEncoder.java +0 -123
  277. data/embulk-core/src/test/resources/m2.test/.gitignore +0 -1
  278. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.jar +0 -0
  279. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.jar.sha1 +0 -1
  280. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.pom +0 -9
  281. data/embulk-core/src/test/resources/m2.test/org/embulk/example/embulk-example-maven-artifact/0.1.2/embulk-example-maven-artifact-0.1.2.pom.sha1 +0 -1
  282. data/embulk-docs/Makefile +0 -178
  283. data/embulk-docs/build.gradle +0 -33
  284. data/embulk-docs/make.bat +0 -243
  285. data/embulk-docs/push-gh-pages.sh +0 -49
  286. data/embulk-docs/src/_static/embulk-architecture.png +0 -0
  287. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline-tr.png +0 -0
  288. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline-wt.png +0 -0
  289. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-oneline.ai +0 -396
  290. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-tr-small.png +0 -0
  291. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-tr.png +0 -0
  292. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq-wt.png +0 -0
  293. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq.ai +0 -417
  294. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-sq.svg +0 -1
  295. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol-tr.png +0 -0
  296. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol-wt.png +0 -0
  297. data/embulk-docs/src/_static/embulk-logo-v2/embulk-logo-v2-symbol.ai +1 -394
  298. data/embulk-docs/src/_static/embulk-logo.svg +0 -133
  299. data/embulk-docs/src/built-in.rst +0 -1005
  300. data/embulk-docs/src/conf.py +0 -260
  301. data/embulk-docs/src/customization.rst +0 -184
  302. data/embulk-docs/src/developers/index.rst +0 -45
  303. data/embulk-docs/src/index.rst +0 -94
  304. data/embulk-docs/src/logo.rst +0 -27
  305. data/embulk-docs/src/recipe.rst +0 -8
  306. data/embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana5.rst +0 -163
  307. data/embulk-docs/src/release.rst +0 -105
  308. data/embulk-docs/src/release/release-0.1.0.rst +0 -8
  309. data/embulk-docs/src/release/release-0.2.0.rst +0 -16
  310. data/embulk-docs/src/release/release-0.2.1.rst +0 -19
  311. data/embulk-docs/src/release/release-0.3.0.rst +0 -34
  312. data/embulk-docs/src/release/release-0.3.1.rst +0 -11
  313. data/embulk-docs/src/release/release-0.3.2.rst +0 -15
  314. data/embulk-docs/src/release/release-0.4.0.rst +0 -74
  315. data/embulk-docs/src/release/release-0.4.1.rst +0 -18
  316. data/embulk-docs/src/release/release-0.4.10.rst +0 -17
  317. data/embulk-docs/src/release/release-0.4.2.rst +0 -18
  318. data/embulk-docs/src/release/release-0.4.3.rst +0 -34
  319. data/embulk-docs/src/release/release-0.4.4.rst +0 -39
  320. data/embulk-docs/src/release/release-0.4.5.rst +0 -24
  321. data/embulk-docs/src/release/release-0.4.6.rst +0 -30
  322. data/embulk-docs/src/release/release-0.4.7.rst +0 -16
  323. data/embulk-docs/src/release/release-0.4.8.rst +0 -15
  324. data/embulk-docs/src/release/release-0.4.9.rst +0 -23
  325. data/embulk-docs/src/release/release-0.5.0.rst +0 -89
  326. data/embulk-docs/src/release/release-0.5.1.rst +0 -13
  327. data/embulk-docs/src/release/release-0.5.2.rst +0 -30
  328. data/embulk-docs/src/release/release-0.5.3.rst +0 -22
  329. data/embulk-docs/src/release/release-0.5.4.rst +0 -24
  330. data/embulk-docs/src/release/release-0.5.5.rst +0 -18
  331. data/embulk-docs/src/release/release-0.6.0.rst +0 -34
  332. data/embulk-docs/src/release/release-0.6.1.rst +0 -11
  333. data/embulk-docs/src/release/release-0.6.10.rst +0 -15
  334. data/embulk-docs/src/release/release-0.6.11.rst +0 -19
  335. data/embulk-docs/src/release/release-0.6.12.rst +0 -31
  336. data/embulk-docs/src/release/release-0.6.13.rst +0 -23
  337. data/embulk-docs/src/release/release-0.6.14.rst +0 -47
  338. data/embulk-docs/src/release/release-0.6.15.rst +0 -26
  339. data/embulk-docs/src/release/release-0.6.16.rst +0 -26
  340. data/embulk-docs/src/release/release-0.6.17.rst +0 -39
  341. data/embulk-docs/src/release/release-0.6.18.rst +0 -14
  342. data/embulk-docs/src/release/release-0.6.19.rst +0 -18
  343. data/embulk-docs/src/release/release-0.6.2.rst +0 -17
  344. data/embulk-docs/src/release/release-0.6.20.rst +0 -19
  345. data/embulk-docs/src/release/release-0.6.21.rst +0 -20
  346. data/embulk-docs/src/release/release-0.6.22.rst +0 -26
  347. data/embulk-docs/src/release/release-0.6.23.rst +0 -17
  348. data/embulk-docs/src/release/release-0.6.24.rst +0 -13
  349. data/embulk-docs/src/release/release-0.6.25.rst +0 -12
  350. data/embulk-docs/src/release/release-0.6.26.rst +0 -17
  351. data/embulk-docs/src/release/release-0.6.27.rst +0 -11
  352. data/embulk-docs/src/release/release-0.6.3.rst +0 -23
  353. data/embulk-docs/src/release/release-0.6.4.rst +0 -13
  354. data/embulk-docs/src/release/release-0.6.5.rst +0 -17
  355. data/embulk-docs/src/release/release-0.6.6.rst +0 -17
  356. data/embulk-docs/src/release/release-0.6.7.rst +0 -17
  357. data/embulk-docs/src/release/release-0.6.8.rst +0 -24
  358. data/embulk-docs/src/release/release-0.6.9.rst +0 -24
  359. data/embulk-docs/src/release/release-0.7.0.rst +0 -96
  360. data/embulk-docs/src/release/release-0.7.1.rst +0 -22
  361. data/embulk-docs/src/release/release-0.7.10.rst +0 -13
  362. data/embulk-docs/src/release/release-0.7.11.rst +0 -12
  363. data/embulk-docs/src/release/release-0.7.2.rst +0 -25
  364. data/embulk-docs/src/release/release-0.7.3.rst +0 -21
  365. data/embulk-docs/src/release/release-0.7.4.rst +0 -14
  366. data/embulk-docs/src/release/release-0.7.5.rst +0 -22
  367. data/embulk-docs/src/release/release-0.7.6.rst +0 -18
  368. data/embulk-docs/src/release/release-0.7.7.rst +0 -13
  369. data/embulk-docs/src/release/release-0.7.8.rst +0 -14
  370. data/embulk-docs/src/release/release-0.7.9.rst +0 -14
  371. data/embulk-docs/src/release/release-0.8.0.rst +0 -74
  372. data/embulk-docs/src/release/release-0.8.1.rst +0 -18
  373. data/embulk-docs/src/release/release-0.8.10.rst +0 -35
  374. data/embulk-docs/src/release/release-0.8.11.rst +0 -12
  375. data/embulk-docs/src/release/release-0.8.12.rst +0 -12
  376. data/embulk-docs/src/release/release-0.8.13.rst +0 -12
  377. data/embulk-docs/src/release/release-0.8.14.rst +0 -31
  378. data/embulk-docs/src/release/release-0.8.15.rst +0 -17
  379. data/embulk-docs/src/release/release-0.8.16.rst +0 -43
  380. data/embulk-docs/src/release/release-0.8.17.rst +0 -11
  381. data/embulk-docs/src/release/release-0.8.18.rst +0 -27
  382. data/embulk-docs/src/release/release-0.8.19.rst +0 -43
  383. data/embulk-docs/src/release/release-0.8.2.rst +0 -19
  384. data/embulk-docs/src/release/release-0.8.20.rst +0 -11
  385. data/embulk-docs/src/release/release-0.8.21.rst +0 -17
  386. data/embulk-docs/src/release/release-0.8.22.rst +0 -15
  387. data/embulk-docs/src/release/release-0.8.23.rst +0 -14
  388. data/embulk-docs/src/release/release-0.8.24.rst +0 -15
  389. data/embulk-docs/src/release/release-0.8.25.rst +0 -14
  390. data/embulk-docs/src/release/release-0.8.26.rst +0 -16
  391. data/embulk-docs/src/release/release-0.8.27.rst +0 -15
  392. data/embulk-docs/src/release/release-0.8.28.rst +0 -14
  393. data/embulk-docs/src/release/release-0.8.29.rst +0 -14
  394. data/embulk-docs/src/release/release-0.8.3.rst +0 -15
  395. data/embulk-docs/src/release/release-0.8.30.rst +0 -14
  396. data/embulk-docs/src/release/release-0.8.31.rst +0 -12
  397. data/embulk-docs/src/release/release-0.8.32.rst +0 -14
  398. data/embulk-docs/src/release/release-0.8.33.rst +0 -13
  399. data/embulk-docs/src/release/release-0.8.34.rst +0 -12
  400. data/embulk-docs/src/release/release-0.8.35.rst +0 -12
  401. data/embulk-docs/src/release/release-0.8.4.rst +0 -18
  402. data/embulk-docs/src/release/release-0.8.5.rst +0 -11
  403. data/embulk-docs/src/release/release-0.8.6.rst +0 -14
  404. data/embulk-docs/src/release/release-0.8.7.rst +0 -18
  405. data/embulk-docs/src/release/release-0.8.8.rst +0 -18
  406. data/embulk-docs/src/release/release-0.8.9.rst +0 -14
  407. data/embulk-jruby-strptime/build.gradle +0 -3
  408. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/RubyDateParser.java +0 -121
  409. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeFormat.java +0 -53
  410. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeParser.java +0 -884
  411. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/StrptimeToken.java +0 -111
  412. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/TimeZoneConverter.java +0 -466
  413. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/lexer/StrptimeLexer.flex +0 -62
  414. data/embulk-jruby-strptime/src/main/java/org/embulk/spi/time/lexer/StrptimeLexer.java +0 -577
  415. data/embulk-standards/build.gradle +0 -7
  416. data/embulk-standards/src/main/java/org/embulk/standards/Bzip2FileDecoderPlugin.java +0 -55
  417. data/embulk-standards/src/main/java/org/embulk/standards/Bzip2FileEncoderPlugin.java +0 -67
  418. data/embulk-standards/src/main/java/org/embulk/standards/ConfigInputPlugin.java +0 -170
  419. data/embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java +0 -295
  420. data/embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java +0 -394
  421. data/embulk-standards/src/main/java/org/embulk/standards/CsvTokenizer.java +0 -512
  422. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileDecoderPlugin.java +0 -55
  423. data/embulk-standards/src/main/java/org/embulk/standards/GzipFileEncoderPlugin.java +0 -71
  424. data/embulk-standards/src/main/java/org/embulk/standards/JsonParserPlugin.java +0 -235
  425. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileInputPlugin.java +0 -232
  426. data/embulk-standards/src/main/java/org/embulk/standards/LocalFileOutputPlugin.java +0 -148
  427. data/embulk-standards/src/main/java/org/embulk/standards/NullOutputPlugin.java +0 -59
  428. data/embulk-standards/src/main/java/org/embulk/standards/RemoveColumnsFilterPlugin.java +0 -268
  429. data/embulk-standards/src/main/java/org/embulk/standards/RenameFilterPlugin.java +0 -479
  430. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginExtension.java +0 -16
  431. data/embulk-standards/src/main/java/org/embulk/standards/StandardPluginModule.java +0 -60
  432. data/embulk-standards/src/main/java/org/embulk/standards/StdoutOutputPlugin.java +0 -85
  433. data/embulk-standards/src/main/resources/META-INF/services/org.embulk.spi.Extension +0 -1
  434. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvFormatterPlugin.java +0 -312
  435. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvParserPlugin.java +0 -75
  436. data/embulk-standards/src/test/java/org/embulk/standards/TestCsvTokenizer.java +0 -381
  437. data/embulk-standards/src/test/java/org/embulk/standards/TestJsonParserPlugin.java +0 -351
  438. data/embulk-standards/src/test/java/org/embulk/standards/TestRemoveColumnsFilterPlugin.java +0 -121
  439. data/embulk-standards/src/test/java/org/embulk/standards/TestRenameFilterPlugin.java +0 -1020
  440. data/embulk-standards/src/test/java/org/embulk/standards/guess/TestCsvAllStringsGuessPlugin.java +0 -38
  441. data/embulk-standards/src/test/java/org/embulk/standards/guess/TestCsvGuessPlugin.java +0 -248
  442. data/embulk-standards/src/test/java/org/embulk/standards/preview/TestFilePreview.java +0 -73
  443. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row.csv +0 -1
  444. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header.csv +0 -2
  445. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header_guessed.yml +0 -12
  446. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_and_header_seed.yml +0 -1
  447. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_guessed.yml +0 -12
  448. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_int_single_column_row_seed.yml +0 -1
  449. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows.csv +0 -1
  450. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header.csv +0 -2
  451. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_guessed.yml +0 -16
  452. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_seed.yml +0 -1
  453. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed.csv +0 -2
  454. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed_guessed.yml +0 -16
  455. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_and_header_with_trim_needed_seed.yml +0 -1
  456. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_guessed.yml +0 -16
  457. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_seed.yml +0 -1
  458. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed.csv +0 -1
  459. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed_guessed.yml +0 -16
  460. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_rows_with_trim_needed_seed.yml +0 -1
  461. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row.csv +0 -1
  462. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header.csv +0 -2
  463. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header_guessed.yml +0 -12
  464. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_and_header_seed.yml +0 -1
  465. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_guessed.yml +0 -12
  466. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_1_string_single_column_row_seed.yml +0 -1
  467. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows.csv +0 -2
  468. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows_guessed.yml +0 -12
  469. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_int_single_column_rows_seed.yml +0 -1
  470. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows.csv +0 -2
  471. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header.csv +0 -3
  472. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header_guessed.yml +0 -16
  473. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_and_header_seed.yml +0 -1
  474. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_guessed.yml +0 -16
  475. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_rows_seed.yml +0 -1
  476. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows.csv +0 -2
  477. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows_guessed.yml +0 -12
  478. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_2_string_single_column_rows_seed.yml +0 -1
  479. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape.csv +0 -5
  480. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape_guessed.yml +0 -17
  481. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_backslash_escape_seed.yml +0 -1
  482. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column.csv +0 -12
  483. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column_guessed.yml +0 -12
  484. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_double_single_column_seed.yml +0 -1
  485. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column.csv +0 -4
  486. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_guessed.yml +0 -12
  487. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_seed.yml +0 -1
  488. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header.csv +0 -5
  489. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header_guessed.yml +0 -12
  490. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_int_single_column_with_header_seed.yml +0 -1
  491. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter.csv +0 -5
  492. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter_guessed.yml +0 -17
  493. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_semicolon_delimiter_seed.yml +0 -1
  494. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple.csv +0 -5
  495. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple_guessed.yml +0 -17
  496. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_simple_seed.yml +0 -1
  497. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote.csv +0 -5
  498. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote_guessed.yml +0 -17
  499. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_single_quote_seed.yml +0 -1
  500. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records.csv +0 -5
  501. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records_guessed.yml +0 -2
  502. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_skip_suggest_if_empty_sample_records_seed.yml +0 -1
  503. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column.csv +0 -4
  504. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_guessed.yml +0 -12
  505. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_seed.yml +0 -1
  506. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header.csv +0 -5
  507. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header_guessed.yml +0 -12
  508. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_string_single_column_with_header_seed.yml +0 -1
  509. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter.csv +0 -4
  510. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter_guessed.yml +0 -16
  511. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv/test/test_tab_delimiter_seed.yml +0 -1
  512. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple.csv +0 -5
  513. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple_guessed.yml +0 -17
  514. data/embulk-standards/src/test/resources/org/embulk/standards/guess/csv_all_strings/test/test_simple_seed.yml +0 -1
  515. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes.csv +0 -5
  516. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_exec.yml +0 -1
  517. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_load.yml +0 -19
  518. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_sample_buffer_bytes_previewed.csv +0 -1
  519. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple.csv +0 -5
  520. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple_load.yml +0 -19
  521. data/embulk-standards/src/test/resources/org/embulk/standards/preview/file/test/test_simple_previewed.csv +0 -4
  522. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep.csv +0 -5
  523. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_expected.csv +0 -4
  524. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_filter.yml +0 -2
  525. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_in.yml +0 -18
  526. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names.csv +0 -5
  527. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names.yml +0 -2
  528. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names_expected.csv +0 -4
  529. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_duplicated_column_names_in.yml +0 -17
  530. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_with_unmatched_filter.yml +0 -3
  531. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_keep_without_unmatched_filter.yml +0 -2
  532. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove.csv +0 -5
  533. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_expected.csv +0 -4
  534. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_filter.yml +0 -2
  535. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_in.yml +0 -18
  536. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_with_unmatched_filter.yml +0 -3
  537. data/embulk-standards/src/test/resources/org/embulk/standards/remove_columns/test/test_remove_without_unmatched_filter.yml +0 -2
  538. data/embulk-test/build.gradle +0 -6
  539. data/embulk-test/src/main/java/org/embulk/test/EmbulkTests.java +0 -75
  540. data/embulk-test/src/main/java/org/embulk/test/PreviewResultInputPlugin.java +0 -65
  541. data/embulk-test/src/main/java/org/embulk/test/TestingBulkLoader.java +0 -129
  542. data/embulk-test/src/main/java/org/embulk/test/TestingEmbulk.java +0 -710
  543. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  544. data/gradle/wrapper/gradle-wrapper.properties +0 -5
  545. data/gradlew +0 -172
  546. data/gradlew.bat +0 -84
  547. data/lib/embulk/data/bundle/.bundle/config +0 -3
  548. data/lib/embulk/data/bundle/.ruby-version +0 -1
  549. data/lib/embulk/data/bundle/Gemfile +0 -31
  550. data/lib/embulk/data/bundle/embulk/filter/example.rb +0 -42
  551. data/lib/embulk/data/bundle/embulk/input/example.rb +0 -54
  552. data/lib/embulk/data/bundle/embulk/output/example.rb +0 -58
  553. data/lib/embulk/data/new/LICENSE.txt +0 -21
  554. data/lib/embulk/data/new/README.md.vm +0 -106
  555. data/lib/embulk/data/new/gitignore.vm +0 -17
  556. data/lib/embulk/data/new/java/build.gradle.vm +0 -96
  557. data/lib/embulk/data/new/java/config/checkstyle/checkstyle.xml +0 -128
  558. data/lib/embulk/data/new/java/config/checkstyle/default.xml +0 -108
  559. data/lib/embulk/data/new/java/decoder.java.vm +0 -86
  560. data/lib/embulk/data/new/java/encoder.java.vm +0 -88
  561. data/lib/embulk/data/new/java/file_input.java.vm +0 -145
  562. data/lib/embulk/data/new/java/file_output.java.vm +0 -95
  563. data/lib/embulk/data/new/java/filter.java.vm +0 -57
  564. data/lib/embulk/data/new/java/formatter.java.vm +0 -55
  565. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.jar +0 -0
  566. data/lib/embulk/data/new/java/gradle/wrapper/gradle-wrapper.properties +0 -5
  567. data/lib/embulk/data/new/java/gradlew +0 -172
  568. data/lib/embulk/data/new/java/gradlew.bat +0 -84
  569. data/lib/embulk/data/new/java/input.java.vm +0 -89
  570. data/lib/embulk/data/new/java/output.java.vm +0 -79
  571. data/lib/embulk/data/new/java/parser.java.vm +0 -61
  572. data/lib/embulk/data/new/java/plugin_loader.rb.vm +0 -3
  573. data/lib/embulk/data/new/java/test.java.vm +0 -5
  574. data/lib/embulk/data/new/ruby/.ruby-version +0 -1
  575. data/lib/embulk/data/new/ruby/Gemfile +0 -2
  576. data/lib/embulk/data/new/ruby/Rakefile +0 -3
  577. data/lib/embulk/data/new/ruby/decoder_guess.rb.vm +0 -25
  578. data/lib/embulk/data/new/ruby/filter.rb.vm +0 -50
  579. data/lib/embulk/data/new/ruby/formatter.rb.vm +0 -49
  580. data/lib/embulk/data/new/ruby/gemspec.vm +0 -20
  581. data/lib/embulk/data/new/ruby/input.rb.vm +0 -59
  582. data/lib/embulk/data/new/ruby/output.rb.vm +0 -61
  583. data/lib/embulk/data/new/ruby/parser.rb.vm +0 -44
  584. data/lib/embulk/data/new/ruby/parser_guess.rb.vm +0 -65
  585. data/lib/embulk/data/package_data.rb +0 -59
  586. data/lib/embulk/java/time_helper.rb +0 -79
  587. data/lib/embulk/runner.rb +0 -53
  588. data/settings.gradle +0 -8
  589. data/test/guess/test_csv_all_strings.rb +0 -43
  590. data/test/guess/test_csv_guess.rb +0 -170
  591. data/test/guess/test_schema_guess.rb +0 -29
  592. data/test/guess/test_time_format_guess.rb +0 -135
  593. data/test/helper.rb +0 -23
  594. data/test/mri/date/test_date_strptime.rb +0 -515
  595. data/test/run-test.rb +0 -28
@@ -1,394 +0,0 @@
1
- package org.embulk.standards;
2
-
3
- import com.google.common.base.Optional;
4
- import com.google.common.collect.ImmutableSet;
5
- import com.fasterxml.jackson.annotation.JsonCreator;
6
- import com.fasterxml.jackson.annotation.JsonIgnore;
7
- import com.fasterxml.jackson.annotation.JsonValue;
8
- import org.embulk.config.Task;
9
- import org.embulk.config.Config;
10
- import org.embulk.config.ConfigDefault;
11
- import org.embulk.config.ConfigSource;
12
- import org.embulk.config.ConfigException;
13
- import org.embulk.config.TaskSource;
14
- import org.embulk.spi.time.TimestampParser;
15
- import org.embulk.spi.time.TimestampParseException;
16
- import org.embulk.spi.json.JsonParser;
17
- import org.embulk.spi.json.JsonParseException;
18
- import org.embulk.spi.Column;
19
- import org.embulk.spi.Schema;
20
- import org.embulk.spi.SchemaConfig;
21
- import org.embulk.spi.ColumnVisitor;
22
- import org.embulk.spi.PageBuilder;
23
- import org.embulk.spi.ParserPlugin;
24
- import org.embulk.spi.Exec;
25
- import org.embulk.spi.FileInput;
26
- import org.embulk.spi.PageOutput;
27
- import org.embulk.spi.DataException;
28
- import org.embulk.spi.util.LineDecoder;
29
- import org.embulk.spi.util.Timestamps;
30
- import org.slf4j.Logger;
31
-
32
- public class CsvParserPlugin
33
- implements ParserPlugin
34
- {
35
- private static final ImmutableSet<String> TRUE_STRINGS =
36
- ImmutableSet.of(
37
- "true", "True", "TRUE",
38
- "yes", "Yes", "YES",
39
- "t", "T", "y", "Y",
40
- "on", "On", "ON",
41
- "1");
42
-
43
- public interface PluginTask
44
- extends Task, LineDecoder.DecoderTask, TimestampParser.Task
45
- {
46
- @Config("columns")
47
- SchemaConfig getSchemaConfig();
48
-
49
- @Config("header_line")
50
- @ConfigDefault("null")
51
- Optional<Boolean> getHeaderLine();
52
-
53
- @Config("skip_header_lines")
54
- @ConfigDefault("0")
55
- int getSkipHeaderLines();
56
- void setSkipHeaderLines(int n);
57
-
58
- @Config("delimiter")
59
- @ConfigDefault("\",\"")
60
- String getDelimiter();
61
-
62
- @Config("quote")
63
- @ConfigDefault("\"\\\"\"")
64
- Optional<QuoteCharacter> getQuoteChar();
65
-
66
- @Config("escape")
67
- @ConfigDefault("\"\\\\\"")
68
- Optional<EscapeCharacter> getEscapeChar();
69
-
70
- // Null value handling: if the CsvParser found 'non-quoted empty string's,
71
- // it replaces them to string that users specified like "\N", "NULL".
72
- @Config("null_string")
73
- @ConfigDefault("null")
74
- Optional<String> getNullString();
75
-
76
- @Config("trim_if_not_quoted")
77
- @ConfigDefault("false")
78
- boolean getTrimIfNotQuoted();
79
-
80
- @Config("max_quoted_size_limit")
81
- @ConfigDefault("131072") //128kB
82
- long getMaxQuotedSizeLimit();
83
-
84
- @Config("comment_line_marker")
85
- @ConfigDefault("null")
86
- Optional<String> getCommentLineMarker();
87
-
88
- @Config("allow_optional_columns")
89
- @ConfigDefault("false")
90
- boolean getAllowOptionalColumns();
91
-
92
- @Config("allow_extra_columns")
93
- @ConfigDefault("false")
94
- boolean getAllowExtraColumns();
95
-
96
- @Config("stop_on_invalid_record")
97
- @ConfigDefault("false")
98
- boolean getStopOnInvalidRecord();
99
- }
100
-
101
- public static class QuoteCharacter
102
- {
103
- private final char character;
104
-
105
- public QuoteCharacter(char character)
106
- {
107
- this.character = character;
108
- }
109
-
110
- public static QuoteCharacter noQuote()
111
- {
112
- return new QuoteCharacter(CsvTokenizer.NO_QUOTE);
113
- }
114
-
115
- @JsonCreator
116
- public static QuoteCharacter ofString(String str)
117
- {
118
- if (str.length() >= 2) {
119
- throw new ConfigException("\"quote\" option accepts only 1 character.");
120
- } else if (str.isEmpty()) {
121
- Exec.getLogger(CsvParserPlugin.class).warn("Setting '' (empty string) to \"quote\" option is obsoleted. Currently it becomes '\"' automatically but this behavior will be removed. Please set '\"' explicitly.");
122
- return new QuoteCharacter('"');
123
- } else {
124
- return new QuoteCharacter(str.charAt(0));
125
- }
126
- }
127
-
128
- @JsonIgnore
129
- public char getCharacter()
130
- {
131
- return character;
132
- }
133
-
134
- @JsonValue
135
- public String getOptionalString()
136
- {
137
- return new String(new char[] { character });
138
- }
139
-
140
- @Override
141
- public boolean equals(Object obj)
142
- {
143
- if (!(obj instanceof QuoteCharacter)) {
144
- return false;
145
- }
146
- QuoteCharacter o = (QuoteCharacter) obj;
147
- return character == o.character;
148
- }
149
- }
150
-
151
- public static class EscapeCharacter
152
- {
153
- private final char character;
154
-
155
- public EscapeCharacter(char character)
156
- {
157
- this.character = character;
158
- }
159
-
160
- public static EscapeCharacter noEscape()
161
- {
162
- return new EscapeCharacter(CsvTokenizer.NO_ESCAPE);
163
- }
164
-
165
- @JsonCreator
166
- public static EscapeCharacter ofString(String str)
167
- {
168
- if (str.length() >= 2) {
169
- throw new ConfigException("\"escape\" option accepts only 1 character.");
170
- } else if (str.isEmpty()) {
171
- Exec.getLogger(CsvParserPlugin.class).warn("Setting '' (empty string) to \"escape\" option is obsoleted. Currently it becomes null automatically but this behavior will be removed. Please set \"escape: null\" explicitly.");
172
- return noEscape();
173
- } else {
174
- return new EscapeCharacter(str.charAt(0));
175
- }
176
- }
177
-
178
- @JsonIgnore
179
- public char getCharacter()
180
- {
181
- return character;
182
- }
183
-
184
- @JsonValue
185
- public String getOptionalString()
186
- {
187
- return new String(new char[] { character });
188
- }
189
-
190
- @Override
191
- public boolean equals(Object obj)
192
- {
193
- if (!(obj instanceof EscapeCharacter)) {
194
- return false;
195
- }
196
- EscapeCharacter o = (EscapeCharacter) obj;
197
- return character == o.character;
198
- }
199
- }
200
-
201
- private final Logger log;
202
-
203
- public CsvParserPlugin()
204
- {
205
- log = Exec.getLogger(CsvParserPlugin.class);
206
- }
207
-
208
- @Override
209
- public void transaction(ConfigSource config, ParserPlugin.Control control)
210
- {
211
- PluginTask task = config.loadConfig(PluginTask.class);
212
-
213
- // backward compatibility
214
- if (task.getHeaderLine().isPresent()) {
215
- if (task.getSkipHeaderLines() > 0) {
216
- throw new ConfigException("'header_line' option is invalid if 'skip_header_lines' is set.");
217
- }
218
- if (task.getHeaderLine().get()) {
219
- task.setSkipHeaderLines(1);
220
- } else {
221
- task.setSkipHeaderLines(0);
222
- }
223
- }
224
-
225
- control.run(task.dump(), task.getSchemaConfig().toSchema());
226
- }
227
-
228
- @Override
229
- public void run(TaskSource taskSource, final Schema schema,
230
- FileInput input, PageOutput output)
231
- {
232
- PluginTask task = taskSource.loadTask(PluginTask.class);
233
- final TimestampParser[] timestampParsers = Timestamps.newTimestampColumnParsers(task, task.getSchemaConfig());
234
- final JsonParser jsonParser = new JsonParser();
235
- final CsvTokenizer tokenizer = new CsvTokenizer(new LineDecoder(input, task), task);
236
- final boolean allowOptionalColumns = task.getAllowOptionalColumns();
237
- final boolean allowExtraColumns = task.getAllowExtraColumns();
238
- final boolean stopOnInvalidRecord = task.getStopOnInvalidRecord();
239
- final int skipHeaderLines = task.getSkipHeaderLines();
240
-
241
- try (final PageBuilder pageBuilder = new PageBuilder(Exec.getBufferAllocator(), schema, output)) {
242
- while (tokenizer.nextFile()) {
243
- // skip the header lines for each file
244
- for (int skipHeaderLineNumber = skipHeaderLines; skipHeaderLineNumber > 0; skipHeaderLineNumber--) {
245
- if (!tokenizer.skipHeaderLine()) {
246
- break;
247
- }
248
- }
249
-
250
- if (!tokenizer.nextRecord()) {
251
- // empty file
252
- continue;
253
- }
254
-
255
- while (true) {
256
- boolean hasNextRecord;
257
-
258
- try {
259
- schema.visitColumns(new ColumnVisitor() {
260
- public void booleanColumn(Column column)
261
- {
262
- String v = nextColumn();
263
- if (v == null) {
264
- pageBuilder.setNull(column);
265
- } else {
266
- pageBuilder.setBoolean(column, TRUE_STRINGS.contains(v));
267
- }
268
- }
269
-
270
- public void longColumn(Column column)
271
- {
272
- String v = nextColumn();
273
- if (v == null) {
274
- pageBuilder.setNull(column);
275
- } else {
276
- try {
277
- pageBuilder.setLong(column, Long.parseLong(v));
278
- } catch (NumberFormatException e) {
279
- // TODO support default value
280
- throw new CsvRecordValidateException(e);
281
- }
282
- }
283
- }
284
-
285
- public void doubleColumn(Column column)
286
- {
287
- String v = nextColumn();
288
- if (v == null) {
289
- pageBuilder.setNull(column);
290
- } else {
291
- try {
292
- pageBuilder.setDouble(column, Double.parseDouble(v));
293
- } catch (NumberFormatException e) {
294
- // TODO support default value
295
- throw new CsvRecordValidateException(e);
296
- }
297
- }
298
- }
299
-
300
- public void stringColumn(Column column)
301
- {
302
- String v = nextColumn();
303
- if (v == null) {
304
- pageBuilder.setNull(column);
305
- } else {
306
- pageBuilder.setString(column, v);
307
- }
308
- }
309
-
310
- public void timestampColumn(Column column)
311
- {
312
- String v = nextColumn();
313
- if (v == null) {
314
- pageBuilder.setNull(column);
315
- } else {
316
- try {
317
- pageBuilder.setTimestamp(column, timestampParsers[column.getIndex()].parse(v));
318
- } catch (TimestampParseException e) {
319
- // TODO support default value
320
- throw new CsvRecordValidateException(e);
321
- }
322
- }
323
- }
324
-
325
- public void jsonColumn(Column column)
326
- {
327
- String v = nextColumn();
328
- if (v == null) {
329
- pageBuilder.setNull(column);
330
- } else {
331
- try {
332
- pageBuilder.setJson(column, jsonParser.parse(v));
333
- } catch (JsonParseException e) {
334
- // TODO support default value
335
- throw new CsvRecordValidateException(e);
336
- }
337
- }
338
- }
339
-
340
- private String nextColumn()
341
- {
342
- if (allowOptionalColumns && !tokenizer.hasNextColumn()) {
343
- //TODO warning
344
- return null;
345
- }
346
- return tokenizer.nextColumnOrNull();
347
- }
348
- });
349
-
350
- try {
351
- hasNextRecord = tokenizer.nextRecord();
352
- } catch (CsvTokenizer.TooManyColumnsException ex) {
353
- if (allowExtraColumns) {
354
- String tooManyColumnsLine = tokenizer.skipCurrentLine();
355
- // TODO warning
356
- hasNextRecord = tokenizer.nextRecord();
357
- } else {
358
- // this line will be skipped at the following catch section
359
- throw ex;
360
- }
361
- }
362
- pageBuilder.addRecord();
363
-
364
- } catch (CsvTokenizer.InvalidFormatException | CsvTokenizer.InvalidValueException | CsvRecordValidateException e) {
365
- String skippedLine = tokenizer.skipCurrentLine();
366
- long lineNumber = tokenizer.getCurrentLineNumber();
367
- if (stopOnInvalidRecord) {
368
- throw new DataException(String.format("Invalid record at line %d: %s", lineNumber, skippedLine), e);
369
- }
370
- log.warn(String.format("Skipped line %d (%s): %s", lineNumber, e.getMessage(), skippedLine));
371
- //exec.notice().skippedLine(skippedLine);
372
-
373
- hasNextRecord = tokenizer.nextRecord();
374
- }
375
-
376
- if (!hasNextRecord) {
377
- break;
378
- }
379
- }
380
- }
381
-
382
- pageBuilder.finish();
383
- }
384
- }
385
-
386
- static class CsvRecordValidateException
387
- extends DataException
388
- {
389
- CsvRecordValidateException(Throwable cause)
390
- {
391
- super(cause);
392
- }
393
- }
394
- }
@@ -1,512 +0,0 @@
1
- package org.embulk.standards;
2
-
3
- import com.google.common.base.Preconditions;
4
- import java.util.List;
5
- import java.util.ArrayList;
6
- import java.util.Deque;
7
- import java.util.ArrayDeque;
8
- import org.embulk.spi.DataException;
9
- import org.embulk.spi.util.LineDecoder;
10
- import org.embulk.config.ConfigException;
11
-
12
- public class CsvTokenizer
13
- {
14
- static enum RecordState
15
- {
16
- NOT_END, END,
17
- }
18
-
19
- static enum ColumnState
20
- {
21
- BEGIN, VALUE, QUOTED_VALUE, AFTER_QUOTED_VALUE, FIRST_TRIM, LAST_TRIM_OR_VALUE,
22
- }
23
-
24
- private static final char END_OF_LINE = '\0';
25
- static final char NO_QUOTE = '\0';
26
- static final char NO_ESCAPE = '\0';
27
-
28
- private final char delimiterChar;
29
- private final String delimiterFollowingString;
30
- private final char quote;
31
- private final char escape;
32
- private final String newline;
33
- private final boolean trimIfNotQuoted;
34
- private final long maxQuotedSizeLimit;
35
- private final String commentLineMarker;
36
- private final LineDecoder input;
37
- private final String nullStringOrNull;
38
-
39
- private RecordState recordState = RecordState.END; // initial state is end of a record. nextRecord() must be called first
40
- private long lineNumber = 0;
41
-
42
- private String line = null;
43
- private int linePos = 0;
44
- private boolean wasQuotedColumn = false;
45
- private List<String> quotedValueLines = new ArrayList<>();
46
- private Deque<String> unreadLines = new ArrayDeque<>();
47
-
48
- public CsvTokenizer(LineDecoder input, CsvParserPlugin.PluginTask task)
49
- {
50
- String delimiter = task.getDelimiter();
51
- if (delimiter.length() == 0) {
52
- throw new ConfigException("Empty delimiter is not allowed");
53
- } else {
54
- this.delimiterChar = delimiter.charAt(0);
55
- if (delimiter.length() > 1) {
56
- delimiterFollowingString = delimiter.substring(1);
57
- } else {
58
- delimiterFollowingString = null;
59
- }
60
- }
61
- quote = task.getQuoteChar().or(CsvParserPlugin.QuoteCharacter.noQuote()).getCharacter();
62
- escape = task.getEscapeChar().or(CsvParserPlugin.EscapeCharacter.noEscape()).getCharacter();
63
- newline = task.getNewline().getString();
64
- trimIfNotQuoted = task.getTrimIfNotQuoted();
65
- maxQuotedSizeLimit = task.getMaxQuotedSizeLimit();
66
- commentLineMarker = task.getCommentLineMarker().orNull();
67
- nullStringOrNull = task.getNullString().orNull();
68
- this.input = input;
69
- }
70
-
71
- public long getCurrentLineNumber()
72
- {
73
- return lineNumber;
74
- }
75
-
76
- public boolean skipHeaderLine()
77
- {
78
- boolean skipped = input.poll() != null;
79
- if (skipped) {
80
- lineNumber++;
81
- }
82
- return skipped;
83
- }
84
-
85
- // returns skipped line
86
- public String skipCurrentLine()
87
- {
88
- String skippedLine;
89
- if (quotedValueLines.isEmpty()) {
90
- skippedLine = line;
91
- } else {
92
- // recover lines of quoted value
93
- skippedLine = quotedValueLines.remove(0); // TODO optimize performance
94
- unreadLines.addAll(quotedValueLines);
95
- lineNumber -= quotedValueLines.size();
96
- if (line != null) {
97
- unreadLines.add(line);
98
- lineNumber -= 1;
99
- }
100
- quotedValueLines.clear();
101
- }
102
- recordState = RecordState.END;
103
- return skippedLine;
104
- }
105
-
106
- public boolean nextFile()
107
- {
108
- boolean next = input.nextFile();
109
- if (next) {
110
- lineNumber = 0;
111
- }
112
- return next;
113
- }
114
-
115
- // used by guess-csv
116
- public boolean nextRecord()
117
- {
118
- return nextRecord(true);
119
- }
120
-
121
- public boolean nextRecord(boolean skipEmptyLine)
122
- {
123
- // If at the end of record, read the next line and initialize the state
124
- if (recordState != RecordState.END) {
125
- throw new TooManyColumnsException("Too many columns");
126
- }
127
-
128
- boolean hasNext = nextLine(skipEmptyLine);
129
- if (hasNext) {
130
- recordState = RecordState.NOT_END;
131
- return true;
132
- } else {
133
- return false;
134
- }
135
- }
136
-
137
- private boolean nextLine(boolean skipEmptyLine)
138
- {
139
- while (true) {
140
- if (!unreadLines.isEmpty()) {
141
- line = unreadLines.removeFirst();
142
- } else {
143
- line = input.poll();
144
- if (line == null) {
145
- return false;
146
- }
147
- }
148
- linePos = 0;
149
- lineNumber++;
150
-
151
- boolean skip = skipEmptyLine && (
152
- line.isEmpty() ||
153
- (commentLineMarker != null && line.startsWith(commentLineMarker)));
154
- if (!skip) {
155
- return true;
156
- }
157
- }
158
- }
159
-
160
- public boolean hasNextColumn()
161
- {
162
- return recordState == RecordState.NOT_END;
163
- }
164
-
165
- public String nextColumn()
166
- {
167
- if (!hasNextColumn()) {
168
- throw new TooFewColumnsException("Too few columns");
169
- }
170
-
171
- // reset last state
172
- wasQuotedColumn = false;
173
- quotedValueLines.clear();
174
-
175
- // local state
176
- int valueStartPos = linePos;
177
- int valueEndPos = 0; // initialized by VALUE state and used by LAST_TRIM_OR_VALUE and
178
- StringBuilder quotedValue = null; // initial by VALUE or FIRST_TRIM state and used by QUOTED_VALUE state
179
- ColumnState columnState = ColumnState.BEGIN;
180
-
181
- while (true) {
182
- final char c = nextChar();
183
-
184
- switch (columnState) {
185
- case BEGIN:
186
- // TODO optimization: state is BEGIN only at the first character of a column.
187
- // this block can be out of the looop.
188
- if (isDelimiter(c)) {
189
- // empty value
190
- if (delimiterFollowingString == null) {
191
- return "";
192
- } else if (isDelimiterFollowingFrom(linePos)) {
193
- linePos += delimiterFollowingString.length();
194
- return "";
195
- }
196
- // not a delimiter
197
- }
198
- if (isEndOfLine(c)) {
199
- // empty value
200
- recordState = RecordState.END;
201
- return "";
202
-
203
- } else if (isSpace(c) && trimIfNotQuoted) {
204
- columnState = ColumnState.FIRST_TRIM;
205
-
206
- } else if (isQuote(c)) {
207
- valueStartPos = linePos; // == 1
208
- wasQuotedColumn = true;
209
- quotedValue = new StringBuilder();
210
- columnState = ColumnState.QUOTED_VALUE;
211
-
212
- } else {
213
- columnState = ColumnState.VALUE;
214
- }
215
- break;
216
-
217
- case FIRST_TRIM:
218
- if (isDelimiter(c)) {
219
- // empty value
220
- if (delimiterFollowingString == null) {
221
- return "";
222
- } else if (isDelimiterFollowingFrom(linePos)) {
223
- linePos += delimiterFollowingString.length();
224
- return "";
225
- }
226
- // not a delimiter
227
- }
228
- if (isEndOfLine(c)) {
229
- // empty value
230
- recordState = RecordState.END;
231
- return "";
232
-
233
- } else if (isQuote(c)) {
234
- // column has heading spaces and quoted. TODO should this be rejected?
235
- valueStartPos = linePos;
236
- wasQuotedColumn = true;
237
- quotedValue = new StringBuilder();
238
- columnState = ColumnState.QUOTED_VALUE;
239
-
240
- } else if (isSpace(c)) {
241
- // skip this character
242
-
243
- } else {
244
- valueStartPos = linePos - 1;
245
- columnState = ColumnState.VALUE;
246
- }
247
- break;
248
-
249
- case VALUE:
250
- if (isDelimiter(c)) {
251
- if (delimiterFollowingString == null) {
252
- return line.substring(valueStartPos, linePos - 1);
253
- } else if (isDelimiterFollowingFrom(linePos)) {
254
- String value = line.substring(valueStartPos, linePos - 1);
255
- linePos += delimiterFollowingString.length();
256
- return value;
257
- }
258
- // not a delimiter
259
- }
260
- if (isEndOfLine(c)) {
261
- recordState = RecordState.END;
262
- return line.substring(valueStartPos, linePos);
263
-
264
- } else if (isSpace(c) && trimIfNotQuoted) {
265
- valueEndPos = linePos - 1; // this is possibly end of value
266
- columnState = ColumnState.LAST_TRIM_OR_VALUE;
267
-
268
- // TODO not implemented yet foo""bar""baz -> [foo, bar, baz].append
269
- //} else if (isQuote(c)) {
270
- // // In RFC4180, If fields are not enclosed with double quotes, then
271
- // // double quotes may not appear inside the fields. But they are often
272
- // // included in the fields. We should care about them later.
273
-
274
- } else {
275
- // keep VALUE state
276
- }
277
- break;
278
-
279
- case LAST_TRIM_OR_VALUE:
280
- if (isDelimiter(c)) {
281
- if (delimiterFollowingString == null) {
282
- return line.substring(valueStartPos, valueEndPos);
283
- } else if (isDelimiterFollowingFrom(linePos)) {
284
- linePos += delimiterFollowingString.length();
285
- return line.substring(valueStartPos, valueEndPos);
286
- } else {
287
- // not a delimiter
288
- }
289
- }
290
- if (isEndOfLine(c)) {
291
- recordState = RecordState.END;
292
- return line.substring(valueStartPos, valueEndPos);
293
-
294
- } else if (isSpace(c)) {
295
- // keep LAST_TRIM_OR_VALUE state
296
-
297
- } else {
298
- // this spaces are not trailing spaces. go back to VALUE state
299
- columnState = ColumnState.VALUE;
300
- }
301
- break;
302
-
303
- case QUOTED_VALUE:
304
- if (isEndOfLine(c)) {
305
- // multi-line quoted value
306
- quotedValue.append(line.substring(valueStartPos, linePos));
307
- quotedValue.append(newline);
308
- quotedValueLines.add(line);
309
- if (!nextLine(false)) {
310
- throw new InvalidValueException("Unexpected end of line during parsing a quoted value");
311
- }
312
- valueStartPos = 0;
313
-
314
- } else if (isQuote(c)) {
315
- char next = peekNextChar();
316
- if (isQuote(next)) { // escaped quote
317
- quotedValue.append(line.substring(valueStartPos, linePos));
318
- valueStartPos = ++linePos;
319
- } else {
320
- quotedValue.append(line.substring(valueStartPos, linePos - 1));
321
- columnState = ColumnState.AFTER_QUOTED_VALUE;
322
- }
323
-
324
- } else if (isEscape(c)) { // isQuote must be checked first in case of quote == escape
325
- // In RFC 4180, CSV's escape char is '\"'. But '\\' is often used.
326
- char next = peekNextChar();
327
- if (isEndOfLine(c)) {
328
- // escape end of line. TODO assuming multi-line quoted value without newline?
329
- quotedValue.append(line.substring(valueStartPos, linePos));
330
- quotedValueLines.add(line);
331
- if (!nextLine(false)) {
332
- throw new InvalidValueException("Unexpected end of line during parsing a quoted value");
333
- }
334
- valueStartPos = 0;
335
- } else if (isQuote(next) || isEscape(next)) { // escaped quote
336
- quotedValue.append(line.substring(valueStartPos, linePos - 1));
337
- quotedValue.append(next);
338
- valueStartPos = ++linePos;
339
- }
340
-
341
- } else {
342
- if ((linePos - valueStartPos) + quotedValue.length() > maxQuotedSizeLimit) {
343
- throw new QuotedSizeLimitExceededException("The size of the quoted value exceeds the limit size ("+maxQuotedSizeLimit+")");
344
- }
345
- // keep QUOTED_VALUE state
346
- }
347
- break;
348
-
349
- case AFTER_QUOTED_VALUE:
350
- if (isDelimiter(c)) {
351
- if (delimiterFollowingString == null) {
352
- return quotedValue.toString();
353
- } else if (isDelimiterFollowingFrom(linePos)) {
354
- linePos += delimiterFollowingString.length();
355
- return quotedValue.toString();
356
- }
357
- // not a delimiter
358
- }
359
- if (isEndOfLine(c)) {
360
- recordState = RecordState.END;
361
- return quotedValue.toString();
362
-
363
- } else if (isSpace(c)) {
364
- // column has trailing spaces and quoted. TODO should this be rejected?
365
-
366
- } else {
367
- throw new InvalidValueException(String.format("Unexpected extra character '%c' after a value quoted by '%c'", c, quote));
368
- }
369
- break;
370
-
371
- default:
372
- assert false;
373
- }
374
- }
375
- }
376
-
377
- public String nextColumnOrNull()
378
- {
379
- String v = nextColumn();
380
- if (nullStringOrNull == null) {
381
- if (v.isEmpty()) {
382
- if (wasQuotedColumn) {
383
- return "";
384
- }
385
- else {
386
- return null;
387
- }
388
- }
389
- else {
390
- return v;
391
- }
392
- }
393
- else {
394
- if (v.equals(nullStringOrNull)) {
395
- return null;
396
- }
397
- else {
398
- return v;
399
- }
400
- }
401
- }
402
-
403
- public boolean wasQuotedColumn()
404
- {
405
- return wasQuotedColumn;
406
- }
407
-
408
- private char nextChar()
409
- {
410
- Preconditions.checkState(line != null, "nextColumn is called after end of file");
411
-
412
- if (linePos >= line.length()) {
413
- return END_OF_LINE;
414
- } else {
415
- return line.charAt(linePos++);
416
- }
417
- }
418
-
419
- private char peekNextChar()
420
- {
421
- Preconditions.checkState(line != null, "peekNextChar is called after end of file");
422
-
423
- if (linePos >= line.length()) {
424
- return END_OF_LINE;
425
- } else {
426
- return line.charAt(linePos);
427
- }
428
- }
429
-
430
- private boolean isSpace(char c)
431
- {
432
- return c == ' ';
433
- }
434
-
435
- private boolean isDelimiterFollowingFrom(int pos)
436
- {
437
- if (line.length() < pos + delimiterFollowingString.length()) {
438
- return false;
439
- }
440
- for (int i = 0; i < delimiterFollowingString.length(); i++) {
441
- if (delimiterFollowingString.charAt(i) != line.charAt(pos + i)) {
442
- return false;
443
- }
444
- }
445
- return true;
446
- }
447
-
448
- private boolean isDelimiter(char c)
449
- {
450
- return c == delimiterChar;
451
- }
452
-
453
- private boolean isEndOfLine(char c)
454
- {
455
- return c == END_OF_LINE;
456
- }
457
-
458
- private boolean isQuote(char c)
459
- {
460
- return quote != NO_QUOTE && c == quote;
461
- }
462
-
463
- private boolean isEscape(char c)
464
- {
465
- return escape != NO_ESCAPE && c == escape;
466
- }
467
-
468
- public static class InvalidFormatException
469
- extends DataException
470
- {
471
- public InvalidFormatException(String message)
472
- {
473
- super(message);
474
- }
475
- }
476
-
477
- public static class InvalidValueException
478
- extends DataException
479
- {
480
- public InvalidValueException(String message)
481
- {
482
- super(message);
483
- }
484
- }
485
-
486
- public static class QuotedSizeLimitExceededException
487
- extends InvalidValueException
488
- {
489
- public QuotedSizeLimitExceededException(String message)
490
- {
491
- super(message);
492
- }
493
- }
494
-
495
- public class TooManyColumnsException
496
- extends InvalidFormatException
497
- {
498
- public TooManyColumnsException(String message)
499
- {
500
- super(message);
501
- }
502
- }
503
-
504
- public class TooFewColumnsException
505
- extends InvalidFormatException
506
- {
507
- public TooFewColumnsException(String message)
508
- {
509
- super(message);
510
- }
511
- }
512
- }