ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/compress/CompressDeflate.java

Path
ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/compress/CompressDeflate.java
Status
scanned
Type
file
Name
CompressDeflate.java
Extension
.java
Programming language
Java
Mime type
text/x-java
File type
Java source, ASCII text
Tag

      
    
Rootfs path

      
    
Size
3309 (3.2 KB)
MD5
af4a24767e9940cbdf73cd50d44ac136
SHA1
9f79819b60c9865efae494af6c944d59a6df9075
SHA256
0d95b65123a1bdf66b5a2289acad82775394cefe8216a2991cc9696db110fcad
SHA512

      
    
SHA1_git
ef0ea1a68b470e240af21841a952c454ee5c07df
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
CompressDeflate.java | 3.2 KB |

/* * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0, * and the EPL 1.0 (https://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.compress; import java.util.StringTokenizer; import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.Inflater; import org.h2.api.ErrorCode; import org.h2.mvstore.DataUtils; /** * This is a wrapper class for the Deflater class. * This algorithm supports the following options: * <ul> * <li>l or level: -1 (default), 0 (no compression), * 1 (best speed), ..., 9 (best compression) * </li><li>s or strategy: 0 (default), * 1 (filtered), 2 (huffman only) * </li></ul> * See also java.util.zip.Deflater for details. */ public class CompressDeflate implements Compressor { private int level = Deflater.DEFAULT_COMPRESSION; private int strategy = Deflater.DEFAULT_STRATEGY; @Override public void setOptions(String options) { if (options == null) { return; } try { StringTokenizer tokenizer = new StringTokenizer(options); while (tokenizer.hasMoreElements()) { String option = tokenizer.nextToken(); if ("level".equals(option) || "l".equals(option)) { level = Integer.parseInt(tokenizer.nextToken()); } else if ("strategy".equals(option) || "s".equals(option)) { strategy = Integer.parseInt(tokenizer.nextToken()); } Deflater deflater = new Deflater(level); deflater.setStrategy(strategy); } } catch (Exception e) { throw DataUtils.newMVStoreException(ErrorCode.UNSUPPORTED_COMPRESSION_OPTIONS_1, options); } } @Override public int compress(byte[] in, int inPos, int inLen, byte[] out, int outPos) { Deflater deflater = new Deflater(level); deflater.setStrategy(strategy); deflater.setInput(in, inPos, inLen); deflater.finish(); int compressed = deflater.deflate(out, outPos, out.length - outPos); if (compressed == 0) { // the compressed length is 0, meaning compression didn't work // (sounds like a JDK bug) // try again, using the default strategy and compression level strategy = Deflater.DEFAULT_STRATEGY; level = Deflater.DEFAULT_COMPRESSION; return compress(in, inPos, inLen, out, outPos); } deflater.end(); return outPos + compressed; } @Override public int getAlgorithm() { return Compressor.DEFLATE; } @Override public void expand(byte[] in, int inPos, int inLen, byte[] out, int outPos, int outLen) { Inflater decompresser = new Inflater(); decompresser.setInput(in, inPos, inLen); decompresser.finished(); try { int len = decompresser.inflate(out, outPos, outLen); if (len != outLen) { throw new DataFormatException(len + " " + outLen); } } catch (DataFormatException e) { throw DataUtils.newMVStoreException(ErrorCode.COMPRESSION_ERROR, e.getMessage(), e); } decompresser.end(); } }
Detected license expression
mpl-2.0 AND epl-1.0
Detected license expression (SPDX)
MPL-2.0 AND EPL-1.0
Percentage of license text
2.72
Copyrights
- end_line: 2
  copyright: Copyright 2004-2023 H2 Group. Multiple-Licensed
  start_line: 2
Holders
- holder: H2 Group. Multiple-Licensed
  end_line: 2
  start_line: 2
Authors

      
    
License detections License expression License expression SPDX
mpl_2_0_and_epl_1_0-796bf8d7-f485-3520-923d-e6a4b1ecd2f3 mpl-2.0 AND epl-1.0 MPL-2.0 AND EPL-1.0
URL Start line End line
https://h2database.com/html/license.html 3 3
Package URL License Primary language
pkg:osgi/com.h2database.source@2.2.220