TransactionalMultiKeyHashMap.smali

.class Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;
.super Ljava/lang/Object;
.source "MemoryFullPrunedBlockStore.java"


# annotations
.annotation system Ldalvik/annotation/Signature;
    value = {
        "<UniqueKeyType:",
        "Ljava/lang/Object;",
        "MultiKeyType:",
        "Ljava/lang/Object;",
        "ValueType:",
        "Ljava/lang/Object;",
        ">",
        "Ljava/lang/Object;"
    }
.end annotation


# instance fields
.field mapKeys:Ljava/util/HashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/HashMap",
            "<TMultiKeyType;",
            "Ljava/util/Set",
            "<TUniqueKeyType;>;>;"
        }
    .end annotation
.end field

.field mapValues:Lorg/bitcoinj/store/TransactionalHashMap;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lorg/bitcoinj/store/TransactionalHashMap",
            "<TUniqueKeyType;TValueType;>;"
        }
    .end annotation
.end field


# direct methods
.method public constructor <init>()V
    .registers 2

    .prologue
    .line 184
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 185
    new-instance v0, Lorg/bitcoinj/store/TransactionalHashMap;

    invoke-direct {v0}, Lorg/bitcoinj/store/TransactionalHashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapValues:Lorg/bitcoinj/store/TransactionalHashMap;

    .line 186
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    iput-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapKeys:Ljava/util/HashMap;

    .line 187
    return-void
.end method


# virtual methods
.method public AbortTransaction()V
    .registers 2

    .prologue
    .line 198
    iget-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapValues:Lorg/bitcoinj/store/TransactionalHashMap;

    invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->abortDatabaseBatchWrite()V

    .line 199
    return-void
.end method

.method public BeginTransaction()V
    .registers 2

    .prologue
    .line 190
    iget-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapValues:Lorg/bitcoinj/store/TransactionalHashMap;

    invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->beginDatabaseBatchWrite()V

    .line 191
    return-void
.end method

.method public CommitTransaction()V
    .registers 2

    .prologue
    .line 194
    iget-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapValues:Lorg/bitcoinj/store/TransactionalHashMap;

    invoke-virtual {v0}, Lorg/bitcoinj/store/TransactionalHashMap;->commitDatabaseBatchWrite()V

    .line 195
    return-void
.end method

.method public get(Ljava/lang/Object;)Ljava/lang/Object;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TUniqueKeyType;)TValueType;"
        }
    .end annotation

    .prologue
    .line 203
    iget-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapValues:Lorg/bitcoinj/store/TransactionalHashMap;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/store/TransactionalHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method public put(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TUniqueKeyType;TMultiKeyType;TValueType;)V"
        }
    .end annotation

    .prologue
    .line 207
    iget-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapValues:Lorg/bitcoinj/store/TransactionalHashMap;

    invoke-virtual {v0, p1, p3}, Lorg/bitcoinj/store/TransactionalHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)V

    .line 208
    iget-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapKeys:Ljava/util/HashMap;

    invoke-virtual {v0, p2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/util/Set;

    .line 209
    if-nez v0, :cond_1d

    .line 210
    new-instance v0, Ljava/util/HashSet;

    invoke-direct {v0}, Ljava/util/HashSet;-><init>()V

    .line 211
    invoke-interface {v0, p1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    .line 212
    iget-object v1, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapKeys:Ljava/util/HashMap;

    invoke-virtual {v1, p2, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 216
    :goto_1c
    return-void

    .line 214
    :cond_1d
    invoke-interface {v0, p1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z

    goto :goto_1c
.end method

.method public removeByMultiKey(Ljava/lang/Object;)V
    .registers 4
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TMultiKeyType;)V"
        }
    .end annotation

    .prologue
    .line 224
    iget-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapKeys:Ljava/util/HashMap;

    invoke-virtual {v0, p1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/util/Set;

    .line 225
    if-eqz v0, :cond_1c

    .line 226
    invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :goto_e
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_1c

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    .line 227
    invoke-virtual {p0, v1}, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->removeByUniqueKey(Ljava/lang/Object;)Ljava/lang/Object;

    goto :goto_e

    .line 228
    :cond_1c
    return-void
.end method

.method public removeByUniqueKey(Ljava/lang/Object;)Ljava/lang/Object;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TUniqueKeyType;)TValueType;"
        }
    .end annotation

    .prologue
    .line 220
    iget-object v0, p0, Lorg/bitcoinj/store/TransactionalMultiKeyHashMap;->mapValues:Lorg/bitcoinj/store/TransactionalHashMap;

    invoke-virtual {v0, p1}, Lorg/bitcoinj/store/TransactionalHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method