public TransactionalMultiKeyHashMap() { mapValues = new TransactionalHashMap<UniqueKeyType, ValueType>(); mapKeys = new HashMap<MultiKeyType, Set<UniqueKeyType>>(); }
public void AbortTransaction() { mapValues.abortDatabaseBatchWrite(); }
public void BeginTransaction() { mapValues.beginDatabaseBatchWrite(); }
@Nullable public ValueType get(UniqueKeyType key) { return mapValues.get(key); }
public void put(UniqueKeyType uniqueKey, MultiKeyType multiKey, ValueType value) { mapValues.put(uniqueKey, value); Set<UniqueKeyType> set = mapKeys.get(multiKey); if (set == null) { set = new HashSet<>(); set.add(uniqueKey); mapKeys.put(multiKey, set); }else{ set.add(uniqueKey); } }
@Nullable public ValueType removeByUniqueKey(UniqueKeyType key) { return mapValues.remove(key); }
public void CommitTransaction() { mapValues.commitDatabaseBatchWrite(); }
@Override public List<UTXO> getOpenTransactionOutputs(List<Address> addresses) throws UTXOProviderException { // This is *NOT* optimal: We go through all the outputs and select the ones we are looking for. // If someone uses this store for production then they have a lot more to worry about than an inefficient impl :) List<UTXO> foundOutputs = new ArrayList<>(); List<UTXO> outputsList = transactionOutputMap.values(); for (UTXO output : outputsList) { for (Address address : addresses) { if (output.getAddress().equals(address.toString())) { foundOutputs.add(output); } } } return foundOutputs; } }
@Nullable public ValueType get(UniqueKeyType key) { return mapValues.get(key); }
public void put(UniqueKeyType uniqueKey, MultiKeyType multiKey, ValueType value) { mapValues.put(uniqueKey, value); Set<UniqueKeyType> set = mapKeys.get(multiKey); if (set == null) { set = new HashSet<>(); set.add(uniqueKey); mapKeys.put(multiKey, set); }else{ set.add(uniqueKey); } }
@Nullable public ValueType removeByUniqueKey(UniqueKeyType key) { return mapValues.remove(key); }
public void CommitTransaction() { mapValues.commitDatabaseBatchWrite(); }
@Override public List<UTXO> getOpenTransactionOutputs(List<Address> addresses) throws UTXOProviderException { // This is *NOT* optimal: We go through all the outputs and select the ones we are looking for. // If someone uses this store for production then they have a lot more to worry about than an inefficient impl :) List<UTXO> foundOutputs = new ArrayList<UTXO>(); List<UTXO> outputsList = transactionOutputMap.values(); for (UTXO output : outputsList) { for (Address address : addresses) { if (output.getAddress().equals(address.toString())) { foundOutputs.add(output); } } } return foundOutputs; } }
@Nullable public ValueType get(UniqueKeyType key) { return mapValues.get(key); }
public void put(UniqueKeyType uniqueKey, MultiKeyType multiKey, ValueType value) { mapValues.put(uniqueKey, value); Set<UniqueKeyType> set = mapKeys.get(multiKey); if (set == null) { set = new HashSet<UniqueKeyType>(); set.add(uniqueKey); mapKeys.put(multiKey, set); }else{ set.add(uniqueKey); } }
public void AbortTransaction() { mapValues.abortDatabaseBatchWrite(); }
public TransactionalMultiKeyHashMap() { mapValues = new TransactionalHashMap<>(); mapKeys = new HashMap<>(); }
@Nullable public ValueType removeByUniqueKey(UniqueKeyType key) { return mapValues.remove(key); }
public void CommitTransaction() { mapValues.commitDatabaseBatchWrite(); }
public void BeginTransaction() { mapValues.beginDatabaseBatchWrite(); }