public LinkKey(final LinkDefinition<?, ?> link) { this(link.getRemoteContainerId(), link.getName(), link.getRole()); }
private String generateLinkKey(final LinkDefinition<?, ?> linkDefinition) { MessageDigest md; try { md = MessageDigest.getInstance("SHA-256"); } catch (NoSuchAlgorithmException e) { throw new StoreException("Cannot generate SHA-256 checksum", e); } md.update(linkDefinition.getRemoteContainerId().getBytes(UTF_8)); md.update(linkDefinition.getName().getBytes(UTF_8)); md.update(linkDefinition.getRole().getValue() ? (byte) 1 : (byte) 0); return Base64.getEncoder().encodeToString(md.digest()); } }
public LinkImpl(final LinkDefinition<S, T> linkDefinition, final LinkRegistry<S, T> linkRegistry) { this(linkDefinition.getRemoteContainerId(), linkDefinition.getName(), linkDefinition.getRole(), linkRegistry); setTermini(linkDefinition.getSource(), linkDefinition.getTarget()); }
private void insert(final Connection connection, final String linkKey, final LinkDefinition<? extends BaseSource, ? extends BaseTarget> linkDefinition) throws SQLException { try (PreparedStatement statement = connection.prepareStatement(String.format( "INSERT INTO %s (link_key, remote_container_id, link_name, link_role, source, target) VALUES (?,?,?,?,?,?)", getLinksTableName()))) { statement.setString(1, linkKey); saveStringAsBlob(statement, 2, linkDefinition.getRemoteContainerId()); saveStringAsBlob(statement, 3, linkDefinition.getName()); statement.setInt(4, linkDefinition.getRole().getValue() ? 1 : 0); saveObjectAsBlob(statement, 5, linkDefinition.getSource()); saveObjectAsBlob(statement, 6, linkDefinition.getTarget()); if (statement.executeUpdate() != 1) { throw new StoreException(String.format("Cannot save link %s", new LinkKey(linkDefinition))); } } }