/** * {@inheritDoc} */ @Override public Iterator<ResourceBlocks> iterator() { ensureSorted(); return new ResourceIterator(); }
private static void populateIndex(CloneIndex duplicationIndex, Collection<Block> duplicationBlocks) { for (Block block : duplicationBlocks) { duplicationIndex.insert(block); } }
/** * @since 2.14 */ public static Builder builder() { return new Builder(); }
/** * Given: index, which accepts blocks with 4-byte hash. * Expected: exception during insertion of block with 8-byte hash. */ @Test(expected = IllegalArgumentException.class) public void attempt_to_insert_hash_of_incorrect_size() { CloneIndex index = new PackedMemoryCloneIndex(4, 1); index.insert(newBlock("a", 1)); }
protected static CloneIndex createIndex(Block[]... blocks) { CloneIndex cloneIndex = new MemoryCloneIndex(); for (Block[] b : blocks) { for (Block block : b) { cloneIndex.insert(block); } } return cloneIndex; }
public static Predicate<CloneGroup> numberOfUnitsNotLessThan(int min) { return input -> input != null && input.getLengthInUnits() >= min; } }
@Override public Collection<Block> getBySequenceHash(ByteArray hash) { return mem.getBySequenceHash(hash); }
private static void quickSort(Sortable data, int low, int high) { if (high - low < 5) { bubbleSort(data, low, high); return; } int i = partition(data, low, high); if (low < i - 1) { quickSort(data, low, i - 1); } if (i < high) { quickSort(data, i, high); } }
/** * Performs sorting, if necessary. */ private void ensureSorted() { if (sorted) { return; } ensureCapacity(); DataUtils.sort(byBlockHash); for (int i = 0; i < size; i++) { resourceIdsIndex[i] = i; } DataUtils.sort(byResourceId); sorted = true; }
/** * Creates new part with specified resourceId and unitStart, and 0 for lineStart and lineEnd. */ private ClonePart newClonePart(String resourceId, int unitStart) { return new ClonePart(resourceId, unitStart, 0, 0); }
@Override public Iterator<ResourceBlocks> iterator() { return mem.iterator(); }
@Override public int noResources() { return mem.noResources(); }
public CloneGroup build() { return new CloneGroup(this); } }
private Block getBlock(int index, String resourceId) { return createBlock(index, resourceId, null); }
protected static ClonePart newClonePart(String resourceId, int unitStart, int cloneUnitLength) { return new ClonePart(resourceId, unitStart, unitStart, unitStart + cloneUnitLength + LINES_PER_BLOCK - 1); }