| 289 | } |
| 290 | |
| 291 | public static CompressionCodec createCodec(CompressionKind kind) { |
| 292 | switch (kind) { |
| 293 | case NONE: |
| 294 | return null; |
| 295 | case ZLIB: |
| 296 | return new ZlibCodec(); |
| 297 | case SNAPPY: |
| 298 | if ("aircompressor".equalsIgnoreCase(System.getProperty("orc.compress.snappy.impl"))) { |
| 299 | return new SnappyCodec(); |
| 300 | } else { |
| 301 | return new XerialSnappyCodec(); |
| 302 | } |
| 303 | case LZO: |
| 304 | return new AircompressorCodec(kind, new LzoCompressor(), |
| 305 | new LzoDecompressor()); |
| 306 | case LZ4: |
| 307 | if ("aircompressor".equalsIgnoreCase(System.getProperty("orc.compress.lz4.impl"))) { |
| 308 | return new AircompressorCodec(kind, new Lz4Compressor(), |
| 309 | new Lz4Decompressor()); |
| 310 | } else { |
| 311 | return new Lz4Codec(); |
| 312 | } |
| 313 | case ZSTD: |
| 314 | if ("java".equalsIgnoreCase(System.getProperty("orc.compression.zstd.impl"))) { |
| 315 | return new AircompressorCodec(kind, new ZstdCompressor(), |
| 316 | new ZstdDecompressor()); |
| 317 | } |
| 318 | if (Native.isLoaded()) { |
| 319 | return new ZstdCodec(); |
| 320 | } else { |
| 321 | return new AircompressorCodec(kind, new ZstdCompressor(), |
| 322 | new ZstdDecompressor()); |
| 323 | } |
| 324 | case BROTLI: |
| 325 | return new BrotliCodec(); |
| 326 | default: |
| 327 | throw new IllegalArgumentException("Unknown compression codec: " + |
| 328 | kind); |
| 329 | } |
| 330 | } |
| 331 | |
| 332 | @Override |
| 333 | public boolean checkMemory(double newScale) throws IOException { |