io.permazen.change.MapFieldRemove Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of permazen-main Show documentation
Show all versions of permazen-main Show documentation
Permazen classes that map Java model classes onto the core API.
/*
* Copyright (C) 2015 Archie L. Cobbs. All rights reserved.
*/
package io.permazen.change;
import io.permazen.JObject;
import io.permazen.JTransaction;
import java.util.Objects;
/**
* Notification object that gets passed to {@link io.permazen.annotation.OnChange @OnChange}-annotated methods
* when a key/value pair is removed from a map field.
*
* @param the type of the object containing the changed field
* @param the type of the changed map's key
* @param the type of the changed map's value
*/
public class MapFieldRemove extends MapFieldChange {
private final K key;
private final V value;
/**
* Constructor.
*
* @param jobj Java object containing the map field that changed
* @param storageId the storage ID of the affected field
* @param fieldName the name of the field that changed
* @param key the key of the removed key/value pair
* @param value the value of the removed key/value pair
* @throws IllegalArgumentException if {@code jobj} or {@code fieldName} is null
*/
public MapFieldRemove(T jobj, int storageId, String fieldName, K key, V value) {
super(jobj, storageId, fieldName);
this.key = key;
this.value = value;
}
@Override
public R visit(ChangeSwitch target) {
return target.caseMapFieldRemove(this);
}
@Override
public void apply(JTransaction jtx, JObject jobj) {
jtx.readMapField(jobj.getObjId(), this.getStorageId(), false).remove(this.key);
}
/**
* Get the key of the key/value pair that was removed.
*
* @return the key of the removed key/value pair
*/
public K getKey() {
return this.key;
}
/**
* Get the value of the key/value pair that was removed.
*
* @return the value of the removed key/value pair
*/
public V getValue() {
return this.value;
}
// Object
@Override
public boolean equals(Object obj) {
if (obj == this)
return true;
if (!super.equals(obj))
return false;
final MapFieldRemove, ?, ?> that = (MapFieldRemove, ?, ?>)obj;
return Objects.equals(this.key, that.key)
&& Objects.equals(this.value, that.value);
}
@Override
public int hashCode() {
return super.hashCode() ^ Objects.hashCode(this.key) ^ Objects.hashCode(this.value);
}
@Override
public String toString() {
return "MapFieldRemove[object=" + this.getObject() + ",field=\"" + this.getFieldName() + "\",key="
+ this.key + ",value=" + this.value + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy