@Override public void onFileAddChunk(File file, Chunk chunk) { logger.log(Level.INFO, " - Adding chunk " + StringUtil.toHex(chunk.getChecksum()) + " to inputFileToChunkIDs-map for file " + file + " ..."); List<ChunkChecksum> chunkIDsForFile = chunkIndex.inputFileToChunkIDs.get(file); if (chunkIDsForFile == null) { chunkIDsForFile = new ArrayList<ChunkChecksum>(); } chunkIDsForFile.add(new ChunkChecksum(chunk.getChecksum())); chunkIndex.inputFileToChunkIDs.put(file, chunkIDsForFile); }
@Override public boolean onChunk(Chunk chunk) { if (chunkIndex.chunkIDToMultiChunkID.containsKey(new ChunkChecksum(chunk.getChecksum()))) { logger.log(Level.INFO, " + Known chunk " + StringUtil.toHex(chunk.getChecksum())); return false; } else { logger.log(Level.INFO, " + New chunk " + StringUtil.toHex(chunk.getChecksum())); return true; } }
@Override public void onFileAddChunk(File file, Chunk chunk) { logger.log(Level.FINER, "- Chunk > FileContent: {0} > {1}", new Object[] { StringUtil.toHex(chunk.getChecksum()), file }); fileContent.addChunk(new ChunkChecksum(chunk.getChecksum())); }
logger.log(Level.INFO, " - Adding chunk " + StringUtil.toHex(chunk.getChecksum()) + " to multichunk " + multiChunk.getId() + " ..."); chunkIndex.chunkIDToMultiChunkID.put(new ChunkChecksum(chunk.getChecksum()), multiChunk.getId()); chunkIDsForFile.add(new ChunkChecksum(chunk.getChecksum())); chunkIndex.inputFileToChunkIDs.put(file, chunkIDsForFile); if (chunkIndex.chunkIDToMultiChunkID.containsKey(new ChunkChecksum(chunk.getChecksum()))) { logger.log(Level.INFO, " + Known chunk " + StringUtil.toHex(chunk.getChecksum())); return false;
/** * Checks if chunk already exists in all database versions * Afterwards checks if chunk exists in new introduced database version. */ @Override public boolean onChunk(Chunk chunk) { ChunkChecksum chunkChecksum = new ChunkChecksum(chunk.getChecksum()); chunkEntry = localDatabase.getChunk(chunkChecksum); if (chunkEntry == null) { chunkEntry = newDatabaseVersion.getChunk(chunkChecksum); if (chunkEntry == null) { logger.log(Level.FINER, "- Chunk new: {0}", chunkChecksum.toString()); chunkEntry = new ChunkEntry(chunkChecksum, chunk.getSize()); newDatabaseVersion.addChunk(chunkEntry); return true; } } logger.log(Level.FINER, "- Chunk exists: {0}", StringUtil.toHex(chunk.getChecksum())); return false; } }
private Map<ChunkChecksum, File> extractChunksFromMultiChunks(List<File> outputMultiChunkFiles, FrameworkCombination combination) throws IOException { Map<ChunkChecksum, File> extractedChunks = new HashMap<ChunkChecksum, File>(); for (File outputMultiChunkFile : outputMultiChunkFiles) { logger.log(Level.INFO, "- Extracting multichunk " + outputMultiChunkFile + " ..."); MultiChunk outputMultiChunk = combination.multiChunker.createMultiChunk( combination.transformer.createInputStream(new FileInputStream(outputMultiChunkFile))); Chunk outputChunkInMultiChunk = null; while (null != (outputChunkInMultiChunk = outputMultiChunk.read())) { File extractedChunkFile = new File(tempDir + "/chunk-" + StringUtil.toHex((outputChunkInMultiChunk.getChecksum())) + "-from-multichunk-" + outputMultiChunk.getId()); logger.log(Level.INFO, " + Writing chunk " + StringUtil.toHex((outputChunkInMultiChunk.getChecksum())) + " to " + extractedChunkFile + " ..."); TestFileUtil.writeToFile(outputChunkInMultiChunk.getContent(), extractedChunkFile); extractedChunks.put(new ChunkChecksum(outputChunkInMultiChunk.getChecksum()), extractedChunkFile); } } return extractedChunks; }
public static ChunkChecksum parseChunkChecksum(String s) { return new ChunkChecksum(ObjectId.parseObjectId(s)); } }
@Override public void onMultiChunkWrite(MultiChunk multiChunk, Chunk chunk) { logger.log(Level.INFO, " - Adding chunk " + StringUtil.toHex(chunk.getChecksum()) + " to multichunk " + multiChunk.getId() + " ..."); chunkIndex.chunkIDToMultiChunkID.put(new ChunkChecksum(chunk.getChecksum()), multiChunk.getId()); }