/** * Note: This method selects also {@link DatabaseVersionStatus#DIRTY DIRTY}. */ public List<MultiChunkId> getMultiChunkIds(FileChecksum fileChecksum) { List<MultiChunkId> multiChunkIds = new ArrayList<MultiChunkId>(); if (fileChecksum == null) { return multiChunkIds; } else { try (PreparedStatement preparedStatement = getStatement("multichunk.select.all.getMultiChunkIdsForFileChecksum.sql")) { preparedStatement.setString(1, fileChecksum.toString()); try (ResultSet resultSet = preparedStatement.executeQuery()) { while (resultSet.next()) { multiChunkIds.add(MultiChunkId.parseMultiChunkId(resultSet.getString("multichunk_id"))); } return multiChunkIds; } } catch (SQLException e) { throw new RuntimeException(e); } } }
private void writeFileContentChunkRefs(Connection connection, FileContent fileContent) throws SQLException { PreparedStatement preparedStatement = getStatement(connection, "filecontent.insert.all.writeFileContentChunkRefs.sql"); int order = 0; for (ChunkChecksum chunkChecksum : fileContent.getChunks()) { preparedStatement.setString(1, fileContent.getChecksum().toString()); preparedStatement.setString(2, chunkChecksum.toString()); preparedStatement.setInt(3, order); preparedStatement.addBatch(); order++; } preparedStatement.executeBatch(); preparedStatement.close(); }
private FileContent getFileContentWithoutChunkChecksums(FileChecksum fileChecksum) { try (PreparedStatement preparedStatement = getStatement("filecontent.select.all.getFileContentByChecksumWithoutChunkChecksums.sql")) { preparedStatement.setString(1, fileChecksum.toString()); try (ResultSet resultSet = preparedStatement.executeQuery()) { if (resultSet.next()) { FileContent fileContent = new FileContent(); fileContent.setChecksum(FileChecksum.parseFileChecksum(resultSet.getString("checksum"))); fileContent.setSize(resultSet.getLong("size")); return fileContent; } } return null; } catch (SQLException e) { throw new RuntimeException(e); } }
if (fileProperties.getChecksum() != null) { Collection<PartialFileHistory> fileHistoriesWithSameChecksum = localDatabase .getFileHistoriesWithLastVersionByChecksumSizeAndModifiedDate(fileProperties.getChecksum().toString(), fileProperties.getSize(), new Date(fileProperties.getLastModified()));
xmlOut.writeAttribute("checksum", fileVersion.getChecksum().toString());
String fileContentChecksumStr = (fileVersion.getChecksum() != null) ? fileVersion.getChecksum().toString() : null;
private FileContent getFileContentWithChunkChecksums(FileChecksum fileChecksum) { try (PreparedStatement preparedStatement = getStatement("filecontent.select.all.getFileContentByChecksumWithChunkChecksums.sql")) { preparedStatement.setString(1, fileChecksum.toString()); try (ResultSet resultSet = preparedStatement.executeQuery()) { FileContent fileContent = null; while (resultSet.next()) { if (fileContent == null) { fileContent = new FileContent(); fileContent.setChecksum(FileChecksum.parseFileChecksum(resultSet.getString("checksum"))); fileContent.setSize(resultSet.getLong("size")); } // Add chunk references ChunkChecksum chunkChecksum = ChunkChecksum.parseChunkChecksum(resultSet.getString("chunk_checksum")); fileContent.addChunk(chunkChecksum); } return fileContent; } } catch (SQLException e) { throw new RuntimeException(e); } }
PreparedStatement preparedStatement = getStatement(connection, "filecontent.insert.all.writeFileContents.sql"); preparedStatement.setString(1, fileContent.getChecksum().toString()); preparedStatement.setLong(2, databaseVersionId); preparedStatement.setLong(3, fileContent.getSize());
private void writeFileContents(IndentXmlStreamWriter xmlOut, Collection<FileContent> fileContents) throws XMLStreamException { if (fileContents.size() > 0) { xmlOut.writeStartElement("fileContents"); for (FileContent fileContent : fileContents) { xmlOut.writeStartElement("fileContent"); xmlOut.writeAttribute("checksum", fileContent.getChecksum().toString()); xmlOut.writeAttribute("size", fileContent.getSize()); xmlOut.writeStartElement("chunkRefs"); Collection<ChunkChecksum> fileContentChunkChunks = fileContent.getChunks(); for (ChunkChecksum chunkChecksum : fileContentChunkChunks) { xmlOut.writeEmptyElement("chunkRef"); xmlOut.writeAttribute("ref", chunkChecksum.toString()); } xmlOut.writeEndElement(); // </chunkRefs> xmlOut.writeEndElement(); // </fileContent> } xmlOut.writeEndElement(); // </fileContents> } }
@Override public void write(OutputNode node, FileContent.FileChecksum value) throws Exception { node.setValue(value.toString()); } }