protected ChunkEntry createChunkEntryFromRow(ResultSet resultSet) throws SQLException { ChunkChecksum chunkChecksum = ChunkChecksum.parseChunkChecksum(resultSet.getString("checksum")); return new ChunkEntry(chunkChecksum, resultSet.getInt("size")); }
private void writeChunks(IndentXmlStreamWriter xmlOut, Collection<ChunkEntry> chunks) throws XMLStreamException { if (chunks.size() > 0) { xmlOut.writeStartElement("chunks"); for (ChunkEntry chunk : chunks) { xmlOut.writeEmptyElement("chunk"); xmlOut.writeAttribute("checksum", chunk.getChecksum().toString()); xmlOut.writeAttribute("size", chunk.getSize()); } xmlOut.writeEndElement(); // </chunks> } }
public void addChunk(ChunkEntry chunk) { chunks.put(chunk.getChecksum(), chunk); }
protected Map<ChunkChecksum, ChunkEntry> createChunkEntries(ResultSet resultSet) throws SQLException { Map<ChunkChecksum, ChunkEntry> chunks = new HashMap<ChunkChecksum, ChunkEntry>(); while (resultSet.next()) { ChunkEntry chunkEntry = createChunkEntryFromRow(resultSet); chunks.put(chunkEntry.getChecksum(), chunkEntry); } return chunks; }
/** * Writes a list of {@link ChunkEntry}s to the database using <tt>INSERT</tt>s and the given connection. * * <p><b>Note:</b> This method executes, but <b>does not commit</b> the query. * * @param connection The connection used to execute the statements * @param databaseVersionId * @param chunks List of {@link ChunkEntry}s to be inserted in the database * @throws SQLException If the SQL statement fails */ public void writeChunks(Connection connection, long databaseVersionId, Collection<ChunkEntry> chunks) throws SQLException { if (chunks.size() > 0) { PreparedStatement preparedStatement = getStatement(connection, "chunk.insert.all.writeChunks.sql"); for (ChunkEntry chunk : chunks) { preparedStatement.setString(1, chunk.getChecksum().toString()); preparedStatement.setLong(2, databaseVersionId); preparedStatement.setInt(3, chunk.getSize()); preparedStatement.addBatch(); } preparedStatement.executeBatch(); preparedStatement.close(); } }
@Override public void onMultiChunkWrite(MultiChunk multiChunk, Chunk chunk) { logger.log(Level.FINER, "- Chunk > MultiChunk: {0} > {1}", new Object[] { StringUtil.toHex(chunk.getChecksum()), multiChunk.getId() }); multiChunkEntry.addChunk(chunkEntry.getChecksum()); }
int chunkSize = Integer.parseInt(attributes.getValue("size")); ChunkEntry chunkEntry = new ChunkEntry(chunkChecksum, chunkSize); databaseVersion.addChunk(chunkEntry);
private void updateFullDatabaseVersionCache(DatabaseVersion newDatabaseVersion) { if (fullDatabaseVersionCache.getChunk(sourceChunk.getChecksum()) == null) { fullDatabaseVersionCache.addChunk(sourceChunk);
/** * 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; } }