provide additional signature for HashedFileExtract

This commit is contained in:
Jonathan Shook
2021-01-21 00:19:03 -06:00
parent cdf2bd5968
commit 83a40b015f

View File

@@ -37,30 +37,36 @@ import java.util.function.LongFunction;
@ThreadSafeMapper @ThreadSafeMapper
public class HashedFileExtractToString implements LongFunction<String> { public class HashedFileExtractToString implements LongFunction<String> {
private final static Logger logger = LogManager.getLogger(HashedFileExtractToString.class); private final static Logger logger = LogManager.getLogger(HashedFileExtractToString.class);
private static CharBuffer fileDataImage =null; private static CharBuffer fileDataImage = null;
private final HashRange sizeRange; private final HashRange sizeRange;
private final HashRange positionRange; private final HashRange positionRange;
private int minsize, maxsize; private final int minsize;
private final int maxsize;
private final String fileName; private final String fileName;
@Example({"HashedFileExtractToString('data/adventures.txt',100,200)","return a fragment from adventures.txt between 100 and 200 characters long"}) @Example({"HashedFileExtractToString('data/adventures.txt',100,200)", "return a fragment from adventures.txt between 100 and 200 characters long"})
public HashedFileExtractToString(String fileName, int minsize, int maxsize) { public HashedFileExtractToString(String fileName, int minsize, int maxsize) {
this.fileName = fileName; this.fileName = fileName;
this.minsize = minsize; this.minsize = minsize;
this.maxsize = maxsize; this.maxsize = maxsize;
loadData(); loadData();
this.sizeRange = new HashRange(minsize, maxsize); this.sizeRange = new HashRange(minsize, maxsize);
this.positionRange = new HashRange(1, (fileDataImage.limit()-maxsize)-1); this.positionRange = new HashRange(1, (fileDataImage.limit() - maxsize) - 1);
}
@Example({"HashedFileExtractToString('data/adventures.txt',100,.1)", "return a fragment between 90 and 110 characters long"})
public HashedFileExtractToString(String fileName, int avgsize, double percentVary) {
this(fileName, avgsize - (int) (percentVary * avgsize), avgsize + (int) (percentVary * avgsize));
} }
private void loadData() { private void loadData() {
if (fileDataImage == null) { if (fileDataImage == null) {
synchronized (HashedFileExtractToString.class) { synchronized (HashedFileExtractToString.class) {
if (fileDataImage == null) { if (fileDataImage == null) {
CharBuffer image= NBIO.readCharBuffer(fileName); CharBuffer image = NBIO.readCharBuffer(fileName);
fileDataImage = image; fileDataImage = image;
} }
} }