package org.peerbox.watchservice.filetree.persistency; import java.nio.file.Path; import java.nio.file.Paths; import java.sql.ResultSet; import java.sql.SQLException; import org.peerbox.watchservice.filetree.composite.FileComponent; import org.peerbox.watchservice.filetree.composite.FileLeaf; import org.peerbox.watchservice.filetree.composite.FolderComposite; import org.sql2o.ResultSetHandler; /** * This result set handler converts database records (ResultSet) into FolderComponents. * Depending on the is_file attribute either a FileLeaf or a FolderComposite is returned. * * @author albrecht * */ class FileComponentResultSetHandler implements ResultSetHandler<FileComponent> { @Override public FileComponent handle(ResultSet resultSet) throws SQLException { FileComponent f = null; final Path path = Paths.get(resultSet.getString("path")); final boolean isFile = resultSet.getBoolean("is_file"); final String contentHash = resultSet.getString("content_hash"); final boolean isSynchronized = resultSet.getBoolean("is_synchronized"); final boolean isUploaded = resultSet.getBoolean("is_uploaded"); if (isFile) { f = new FileLeaf(path, true, contentHash); } else { f = new FolderComposite(path, true, contentHash); } f.setIsSynchronized(isSynchronized); f.setIsUploaded(isUploaded); return f; } }