// SPDX-FileCopyrightText: 2022 Paul Schaub // // SPDX-License-Identifier: Apache-2.0 package pgp.cert_d.jdbc.sqlite; import java.io.IOException; import java.sql.SQLException; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import pgp.cert_d.subkey_lookup.SubkeyLookup; public class DatabaseSubkeyLookup implements SubkeyLookup { private final SubkeyLookupDao dao; public DatabaseSubkeyLookup(SubkeyLookupDao dao) { this.dao = dao; } @Override public Set getCertificateFingerprintsForSubkeyId(long subkeyId) throws IOException { try { List entries = dao.selectValues(subkeyId); Set certificates = new HashSet<>(); for (Entry entry : entries) { certificates.add(entry.getCertificate()); } return Collections.unmodifiableSet(certificates); } catch (SQLException e) { throw new IOException("Cannot query for subkey lookup entries.", e); } } @Override public void storeCertificateSubkeyIds(String certificate, List subkeyIds) throws IOException { try { dao.insertValues(certificate, subkeyIds); } catch (SQLException e) { throw new IOException("Cannot store subkey lookup entries in database.", e); } } }