Inventory items are now saved only if processing didn't fail. Receiving messages works, but there seems to be a problem with the POW check in some circumstances.

This commit is contained in:
2015-05-23 10:27:05 +02:00
parent 6b3b361aa3
commit b793526f2f
22 changed files with 82 additions and 73 deletions

View File

@ -96,7 +96,7 @@ public class JdbcAddressRepository extends JdbcHelper implements AddressReposito
if (publicKeyBlob != null) {
Pubkey pubkey = Factory.readPubkey(address.getVersion(), address.getStream(),
publicKeyBlob.getBinaryStream(), (int) publicKeyBlob.length(), false);
if (address.getVersion() == 4) {
if (address.getVersion() == 4 && pubkey instanceof V3Pubkey) {
pubkey = new V4Pubkey((V3Pubkey) pubkey);
}
address.setPubkey(pubkey);
@ -140,11 +140,11 @@ public class JdbcAddressRepository extends JdbcHelper implements AddressReposito
private void update(BitmessageAddress address) throws IOException, SQLException {
PreparedStatement ps = getConnection().prepareStatement(
"UPDATE Address SET address=?, alias=?, public_key=?, private_key=?");
ps.setString(1, address.getAddress());
ps.setString(2, address.getAlias());
writePubkey(ps, 3, address.getPubkey());
writeBlob(ps, 4, address.getPrivateKey());
"UPDATE Address SET alias=?, public_key=?, private_key=? WHERE address=?");
ps.setString(1, address.getAlias());
writePubkey(ps, 2, address.getPubkey());
writeBlob(ps, 3, address.getPrivateKey());
ps.setString(4, address.getAddress());
ps.executeUpdate();
}

View File

@ -53,7 +53,7 @@ public class JdbcMessageRepository extends JdbcHelper implements MessageReposito
@Override
public List<Plaintext> findMessages(Label label) {
return find("id IN SELECT message_id FROM Message_Label WHERE label_id=" + label.getId());
return find("id IN (SELECT message_id FROM Message_Label WHERE label_id=" + label.getId() + ")");
}
@Override
@ -94,7 +94,7 @@ public class JdbcMessageRepository extends JdbcHelper implements MessageReposito
List<Label> result = new ArrayList<>();
try {
Statement stmt = getConnection().createStatement();
ResultSet rs = stmt.executeQuery("SELECT label, color FROM Label WHERE id IN SELECT label_id FROM Message_Label WHERE message_id=" + messageId);
ResultSet rs = stmt.executeQuery("SELECT label, color FROM Label WHERE id IN (SELECT label_id FROM Message_Label WHERE message_id=" + messageId + ")");
while (rs.next()) {
result.add(new Label(rs.getString("label"), rs.getInt("color")));
}
@ -109,8 +109,8 @@ public class JdbcMessageRepository extends JdbcHelper implements MessageReposito
// save from address if necessary
if (message.getId() == null) {
BitmessageAddress savedAddress = ctx.getAddressRepo().getAddress(message.getFrom().getAddress());
if (savedAddress.getPrivateKey() == null) {
if (savedAddress.getAlias() != null) {
if (savedAddress == null || savedAddress.getPrivateKey() == null) {
if (savedAddress != null && savedAddress.getAlias() != null) {
message.getFrom().setAlias(savedAddress.getAlias());
}
ctx.getAddressRepo().save(message.getFrom());
@ -157,7 +157,11 @@ public class JdbcMessageRepository extends JdbcHelper implements MessageReposito
writeBlob(ps, 3, message);
ps.setLong(4, message.getSent());
ps.setLong(5, message.getReceived());
ps.setString(6, message.getStatus().name());
if (message.getStatus() != null)
ps.setString(6, message.getStatus().name());
else
ps.setString(6, null);
ps.executeUpdate();
// get generated id
@ -168,10 +172,14 @@ public class JdbcMessageRepository extends JdbcHelper implements MessageReposito
private void update(Connection connection, Plaintext message) throws SQLException, IOException {
PreparedStatement ps = connection.prepareStatement(
"UPDATE Message SET sent=?, received=?, status=?");
"UPDATE Message SET sent=?, received=?, status=? WHERE id=?");
ps.setLong(1, message.getSent());
ps.setLong(2, message.getReceived());
ps.setString(3, message.getStatus().name());
ps.setLong(3, (Long) message.getId());
if (message.getStatus() != null)
ps.setString(3, message.getStatus().name());
else
ps.setString(3, null);
ps.executeUpdate();
}