forked from Qortal/qortal
first stab at repository interfaces and hsqldb implementations
This commit is contained in:
parent
2ea6f12b3c
commit
a0345412e8
@ -13,14 +13,14 @@ public class GenesisTransaction extends Transaction {
|
||||
|
||||
// Constructors
|
||||
|
||||
public GenesisTransaction(String recipient, BigDecimal amount, long timestamp, byte[] signature) {
|
||||
public GenesisTransaction(Account recipient, BigDecimal amount, long timestamp, byte[] signature) {
|
||||
super(TransactionType.GENESIS, BigDecimal.ZERO, new GenesisAccount(), timestamp, signature);
|
||||
|
||||
this.recipient = new Account(recipient);
|
||||
this.recipient = recipient;
|
||||
this.amount = amount;
|
||||
}
|
||||
|
||||
public GenesisTransaction(String recipient, BigDecimal amount, long timestamp) {
|
||||
public GenesisTransaction(Account recipient, BigDecimal amount, long timestamp) {
|
||||
this(recipient, amount, timestamp, null);
|
||||
}
|
||||
|
||||
|
9
src/repository/Repository.java
Normal file
9
src/repository/Repository.java
Normal file
@ -0,0 +1,9 @@
|
||||
package repository;
|
||||
|
||||
public interface Repository {
|
||||
|
||||
// public void save();
|
||||
|
||||
// public void delete();
|
||||
|
||||
}
|
9
src/repository/TransactionRepository.java
Normal file
9
src/repository/TransactionRepository.java
Normal file
@ -0,0 +1,9 @@
|
||||
package repository;
|
||||
|
||||
import data.transaction.Transaction;
|
||||
|
||||
public interface TransactionRepository extends Repository {
|
||||
|
||||
public Transaction fromSignature(byte[] signature);
|
||||
|
||||
}
|
30
src/repository/hsqldb/HSQLDBGenesisTransaction.java
Normal file
30
src/repository/hsqldb/HSQLDBGenesisTransaction.java
Normal file
@ -0,0 +1,30 @@
|
||||
package repository.hsqldb;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import data.account.Account;
|
||||
import data.account.PublicKeyAccount;
|
||||
import data.transaction.GenesisTransaction;
|
||||
import data.transaction.Transaction;
|
||||
import database.DB;
|
||||
|
||||
public class HSQLDBGenesisTransaction extends HSQLDBTransaction {
|
||||
|
||||
protected Transaction fromSignature(byte[] signature, byte[] reference, PublicKeyAccount creator, long timestamp, BigDecimal fee) {
|
||||
try {
|
||||
ResultSet rs = DB.checkedExecute("SELECT recipient, amount FROM GenesisTransactions WHERE signature = ?", signature);
|
||||
if (rs == null)
|
||||
return null;
|
||||
|
||||
Account recipient = new Account(rs.getString(1));
|
||||
BigDecimal amount = rs.getBigDecimal(2).setScale(8);
|
||||
|
||||
return new GenesisTransaction(recipient, amount, timestamp, signature);
|
||||
} catch (SQLException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
42
src/repository/hsqldb/HSQLDBTransaction.java
Normal file
42
src/repository/hsqldb/HSQLDBTransaction.java
Normal file
@ -0,0 +1,42 @@
|
||||
package repository.hsqldb;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import database.DB;
|
||||
import data.account.PublicKeyAccount;
|
||||
import data.transaction.Transaction;
|
||||
import data.transaction.Transaction.TransactionType;
|
||||
import repository.TransactionRepository;
|
||||
|
||||
public class HSQLDBTransaction implements TransactionRepository {
|
||||
|
||||
private static final int REFERENCE_LENGTH = 64;
|
||||
|
||||
public Transaction fromSignature(byte[] signature) {
|
||||
try {
|
||||
ResultSet rs = DB.checkedExecute("SELECT type, reference, creator, creation, fee FROM Transactions WHERE signature = ?", signature);
|
||||
if (rs == null)
|
||||
return null;
|
||||
|
||||
TransactionType type = TransactionType.valueOf(rs.getInt(1));
|
||||
byte[] reference = DB.getResultSetBytes(rs.getBinaryStream(1), REFERENCE_LENGTH);
|
||||
// Note: can't use CREATOR_LENGTH in case we encounter Genesis Account's short, 8-byte public key
|
||||
PublicKeyAccount creator = new PublicKeyAccount(DB.getResultSetBytes(rs.getBinaryStream(2)));
|
||||
long timestamp = rs.getTimestamp(3).getTime();
|
||||
BigDecimal fee = rs.getBigDecimal(4).setScale(8);
|
||||
|
||||
switch (type) {
|
||||
case GENESIS:
|
||||
return new HSQLDBGenesisTransaction().fromSignature(signature, reference, creator, timestamp, fee);
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user