mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-24 13:19:02 +00:00

Look, this will make the git history look funny, but trimming unnecessary depth from the source tree is a very necessary sanity-preserving measure when dealing with a super-modularized codebase like this one. While it makes the project configuration a bit less conventional, it will save you several clicks every time you jump between modules. Which you'll do a lot, because it's *modul*ar. The src/main/java convention makes a lot of sense for a non-modular project though. This ain't that.
28 lines
734 B
Java
28 lines
734 B
Java
package nu.marginalia.bigstring;
|
|
|
|
import java.nio.ByteBuffer;
|
|
|
|
public class CompressedBigString implements BigString {
|
|
private final int originalSize;
|
|
private final int length;
|
|
private final ByteBuffer encoded;
|
|
|
|
private final static CompressionBufferPool bufferPool = new CompressionBufferPool();
|
|
|
|
public CompressedBigString(String stringValue) {
|
|
encoded = bufferPool.bufferForThread().compress(stringValue);
|
|
originalSize = encoded.position();
|
|
length = stringValue.length();
|
|
}
|
|
|
|
@Override
|
|
public String decode() {
|
|
return bufferPool.bufferForThread().decompress(encoded, length, originalSize);
|
|
}
|
|
|
|
@Override
|
|
public int length() {
|
|
return length;
|
|
}
|
|
}
|