private long searchOffset(SeekableLineReader slr, final String key, boolean lessThan, Comparator<String> comparator) throws IOException { long offset = binaryFindOffset(slr, key, comparator); slr.seek(offset); String line = null; if (offset > 0) { slr.skipLine(); } String prev = null; while(true) { if (line != null) { offset += line.getBytes().length + 1; } line = slr.readLine(); if(line == null) break; if(comparator.compare(line, key) >= 0) break; prev = line; } if (lessThan && prev != null) { offset -= prev.getBytes().length + 1; } return offset; }
private long searchOffset(SeekableLineReader slr, final String key, boolean lessThan, Comparator<String> comparator) throws IOException { long offset = binaryFindOffset(slr, key, comparator); slr.seek(offset); String line = null; if (offset > 0) { slr.skipLine(); } String prev = null; while(true) { if (line != null) { offset += line.getBytes().length + 1; } line = slr.readLine(); if(line == null) break; if(comparator.compare(line, key) >= 0) break; prev = line; } if (lessThan && prev != null) { offset -= prev.getBytes().length + 1; } return offset; }
private long searchOffset(SeekableLineReader slr, final String key, boolean lessThan, Comparator<String> comparator) throws IOException { long offset = binaryFindOffset(slr, key, comparator); slr.seek(offset); String line = null; if (offset > 0) { slr.skipLine(); } String prev = null; while(true) { if (line != null) { offset += line.getBytes().length + 1; } line = slr.readLine(); if(line == null) break; if(comparator.compare(line, key) >= 0) break; prev = line; } if (lessThan && prev != null) { offset -= prev.getBytes().length + 1; } return offset; }
private CloseableIterator<String> search(SeekableLineReader slr, final String key, boolean lessThan, Comparator<String> comparator) throws IOException { long min = binaryFindOffset(slr, key, comparator); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine(String.format("Aligning(%d)",min)); } slr.seek(min); String line; if (min > 0) { slr.skipLine(); } String prev = null; while(true) { line = slr.readLine(); if (line == null) break; if (comparator.compare(line, key) >= 0) break; prev = line; } if (!lessThan) { prev = null; } return new CachedStringIterator(slr, prev, line); }
private CloseableIterator<String> search(SeekableLineReader slr, final String key, boolean lessThan, Comparator<String> comparator) throws IOException { long min = binaryFindOffset(slr, key, comparator); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine(String.format("Aligning(%d)",min)); } slr.seek(min); String line; if (min > 0) { slr.skipLine(); } String prev = null; while(true) { line = slr.readLine(); if (line == null) break; if (comparator.compare(line, key) >= 0) break; prev = line; } if (!lessThan) { prev = null; } return new CachedStringIterator(slr, prev, line); }
private CloseableIterator<String> search(SeekableLineReader slr, final String key, boolean lessThan, Comparator<String> comparator) throws IOException { long min = binaryFindOffset(slr, key, comparator); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine(String.format("Aligning(%d)",min)); } slr.seek(min); String line; if (min > 0) { slr.skipLine(); } String prev = null; while(true) { line = slr.readLine(); if (line == null) break; if (comparator.compare(line, key) >= 0) break; prev = line; } if (!lessThan) { prev = null; } return new CachedStringIterator(slr, prev, line); }
FieldExtractingSLR lineCountReader = new FieldExtractingSLR(slr, lineField, "\t"); long offset = summary.binaryFindOffset(lineCountReader, lineNumber, SortedTextFile.numericComparator); slr.seek(offset);
FieldExtractingSLR lineCountReader = new FieldExtractingSLR(slr, lineField, "\t"); long offset = summary.binaryFindOffset(lineCountReader, lineNumber, SortedTextFile.numericComparator); slr.seek(offset);
FieldExtractingSLR lineCountReader = new FieldExtractingSLR(slr, lineField, "\t"); long offset = summary.binaryFindOffset(lineCountReader, lineNumber, SortedTextFile.numericComparator); slr.seek(offset);