public class FieldUpdate extends Object
A field update holds a list of value updates that will be applied atomically to a field in a document.
To create a field update that contains only a single value update, use the static factory methods provided by this class.
Example:
FieldUpdate clearFieldUpdate = FieldUpdate.createClearField(field);
It is also possible to create a field update that holds more than one value update.
Example:
FieldUpdate fieldUpdate = FieldUpdate.create(field); ValueUpdate incrementValue = ValueUpdate.createIncrement("foo", 130d); ValueUpdate addValue = ValueUpdate.createAdd("bar", 100); fieldUpdate.addValueUpdate(incrementValue); fieldUpdate.addValueUpdate(addValue);
Note that the addValueUpdate() method returns a reference to itself to support chaining, so the last two lines could be written as one:
fieldUpdate.addValueUpdate(incrementValue).addValueUpdate(addValue);
Note also that the second example above is equivalent to:
FieldUpdate fieldUpdate = FieldUpdate.createIncrement(field, "foo", 130d); ValueUpdate addValue = ValueUpdate.createAdd("bar", 100); fieldUpdate.addValueUpdate(addValue);
Note that even though updates take fields as arguments, those fields are not necessarily a field of a document type - any name/value pair which existing in an updatable structure can be addressed by creating the Fields as needed. For example:
FieldUpdate field=FieldUpdate.createIncrement(new Field("myattribute",DataType.INT),130);
ValueUpdate
,
DocumentUpdate
Modifier and Type | Field and Description |
---|---|
private DocumentType |
documentType |
protected Field |
field |
private int |
serializationVersion |
protected List<ValueUpdate> |
valueUpdates |
Constructor and Description |
---|
FieldUpdate(DocumentUpdateReader reader,
DocumentType type,
int serializationVersion) |
FieldUpdate(Field field) |
FieldUpdate(Field field,
List<ValueUpdate> valueUpdates) |
FieldUpdate(Field field,
ValueUpdate valueUpd) |
Modifier and Type | Method and Description |
---|---|
void |
addAll(FieldUpdate update)
Adds all the
ValueUpdate s of the given FieldUpdate to this. |
FieldUpdate |
addValueUpdate(int index,
ValueUpdate valueUpdate)
Adds a value update to the list of value updates.
|
FieldUpdate |
addValueUpdate(ValueUpdate valueUpdate)
Adds a value update to the list of value updates.
|
FieldUpdate |
addValueUpdates(List<ValueUpdate> valueUpdates)
Adds a list of value updates to the list of value updates.
|
FieldUpdate |
applyTo(Document doc)
Applies this field update.
|
void |
clearValueUpdates()
Removes all value updates from the list of value updates.
|
static FieldUpdate |
create(Field field)
Creates a new, empty field update with no encapsulated value updates.
|
static FieldUpdate |
createAdd(Field field,
FieldValue value)
Creates a new field update, with one encapsulated value update
specifying an addition of a value to an array or a key to a weighted set (with default weight 1).
|
static FieldUpdate |
createAdd(Field field,
FieldValue key,
Integer weight)
Creates a new field update, with one encapsulated value update
specifying an addition of a key (with a specified weight) to a weighted set.
|
static FieldUpdate |
createAddAll(Field field,
List<? extends FieldValue> values)
Creates a new field update, with encapsulated value updates,
specifying an addition of all values in a given list to an array.
|
static FieldUpdate |
createAddAll(Field field,
WeightedSet<? extends FieldValue> set)
Creates a new field update, with encapsulated value updates,
specifying an addition of all key/weight pairs in a weighted set to a weighted set.
|
static FieldUpdate |
createAssign(Field field,
FieldValue newValue)
Creates a new field update, with one encapsulated value update,
that assigns a new value, completely overwriting the previous value.
|
static FieldUpdate |
createClear(Field field)
Creates a new field update, with one encapsulated value update,
that clears the value; see documentation for ClearValueUpdate to see behavior
for the individual data types.
|
static FieldUpdate |
createClearField(Field field)
Creates a new field update that clears the field.
|
static FieldUpdate |
createDecrement(Field field,
FieldValue key,
Number decrement)
Creates a new field update, with one encapsulated value update that decrements a weight in a weighted set.
|
static FieldUpdate |
createDecrement(Field field,
Number decrement)
Creates a new field update, with one encapsulated value update that decrements a value.
|
static FieldUpdate |
createDivide(Field field,
FieldValue key,
Number divisor)
Creates a new field update, with one encapsulated value update that divides a weight in a weighted set.
|
static FieldUpdate |
createDivide(Field field,
Number divisor)
Creates a new field update, with one encapsulated value update that divides a value.
|
static FieldUpdate |
createIncrement(Field field,
FieldValue key,
Number increment)
Creates a new field update, with one encapsulated value update that increments a weight in a weighted set.
|
static FieldUpdate |
createIncrement(Field field,
Number increment)
Creates a new field update, with one encapsulated value update that increments a value.
|
static FieldUpdate |
createMap(Field field,
FieldValue value,
ValueUpdate update)
Creates a new field update, with one encapsulated value update, which
is able to map an update to a value to a subvalue in an array or a
weighted set.
|
static FieldUpdate |
createMultiply(Field field,
FieldValue key,
Number factor)
Creates a new field update, with one encapsulated value update that multiplies a weight in a weighted set.
|
static FieldUpdate |
createMultiply(Field field,
Number factor)
Creates a new field update, with one encapsulated value update that multiplies a value.
|
static FieldUpdate |
createRemove(Field field,
FieldValue value)
Creates a new field update, with one encapsulated value update,
specifying the removal of a value from an array or a key/weight from a weighted set.
|
static FieldUpdate |
createRemoveAll(Field field,
List<? extends FieldValue> values)
Creates a new field update, with encapsulated value updates,
specifying the removal of all values in a given list from an array or weighted set.
|
static FieldUpdate |
createRemoveAll(Field field,
WeightedSet<? extends FieldValue> values)
Creates a new field update, with encapsulated value updates,
specifying the removal of all values in a given list from an array or weighted set.
|
boolean |
equals(Object o) |
DocumentType |
getDocumentType() |
Field |
getField()
Returns the field that this field update applies to
|
int |
getSerializationVersion() |
ValueUpdate |
getValueUpdate(int index)
Get the value update at the specified index in the list of value updates.
|
List<ValueUpdate> |
getValueUpdates()
Get an unmodifiable list of all value updates that this field update specifies.
|
List<ValueUpdate> |
getValueUpdates(ValueUpdate.ValueUpdateClassID classID)
Get value updates with the specified valueUpdateClassID.
|
int |
hashCode() |
boolean |
hasValueUpdate(ValueUpdate.ValueUpdateClassID classID)
Returns whether this field update contains (at least) one update of the given type
|
boolean |
isEmpty()
Returns whether or not this field update contains any value updates.
|
ValueUpdate |
removeValueUpdate(int index)
Removes the value update at the specified position in the list of value updates.
|
void |
serialize(DocumentUpdateWriter data) |
void |
serialize(com.yahoo.io.GrowableByteBuffer buf) |
void |
setField(Field field)
Sets the field this update applies to.
|
ValueUpdate |
setValueUpdate(int index,
ValueUpdate update)
Replaces the value update at the specified position in the list of value updates
with the specified value update.
|
int |
size()
Get the number of value updates in this field update.
|
String |
toString() |
protected Field field
protected List<ValueUpdate> valueUpdates
private DocumentType documentType
private int serializationVersion
FieldUpdate(Field field)
FieldUpdate(Field field, ValueUpdate valueUpd)
FieldUpdate(Field field, List<ValueUpdate> valueUpdates)
public FieldUpdate(DocumentUpdateReader reader, DocumentType type, int serializationVersion)
public DocumentType getDocumentType()
public int getSerializationVersion()
public Field getField()
public void setField(Field field)
public FieldUpdate applyTo(Document doc)
doc
- the document to apply the update topublic FieldUpdate addValueUpdate(ValueUpdate valueUpdate)
valueUpdate
- the ValueUpdate to addIllegalArgumentException
- if the data type of the value update is not equal to the data type of this fieldpublic FieldUpdate addValueUpdate(int index, ValueUpdate valueUpdate)
index
- the index where this value update should be addedvalueUpdate
- the ValueUpdate to addIllegalArgumentException
- if the data type of the value update is not equal to the data type of this fieldpublic FieldUpdate addValueUpdates(List<ValueUpdate> valueUpdates)
valueUpdates
- a list containing the value updates to addIllegalArgumentException
- if the data type of the value update is not equal to the data type of this fieldpublic ValueUpdate removeValueUpdate(int index)
index
- the index of the ValueUpdate to removeIndexOutOfBoundsException
- if index is out of rangepublic ValueUpdate setValueUpdate(int index, ValueUpdate update)
index
- index of value update to replaceupdate
- value update to be stored at the specified positionIndexOutOfBoundsException
- if index out of range (index < 0 || index >= size())public int size()
public void clearValueUpdates()
public ValueUpdate getValueUpdate(int index)
index
- the index of the ValueUpdate to returnIndexOutOfBoundsException
- if index is out of rangepublic List<ValueUpdate> getValueUpdates()
public List<ValueUpdate> getValueUpdates(ValueUpdate.ValueUpdateClassID classID)
classID
- the classID of ValueUpdates to returnpublic boolean hasValueUpdate(ValueUpdate.ValueUpdateClassID classID)
classID
- the classID of ValueUpdates to check forpublic boolean isEmpty()
public void addAll(FieldUpdate update)
ValueUpdate
s of the given FieldUpdate to this. If the given FieldUpdate refers to a
different Field
than this, this method throws an exception.update
- The update whose content to add to this.IllegalArgumentException
- If the Field
of the given FieldUpdate does not match this.public final void serialize(com.yahoo.io.GrowableByteBuffer buf)
public void serialize(DocumentUpdateWriter data)
public static FieldUpdate create(Field field)
field
- the Field to alterValueUpdate
,
addValueUpdate(ValueUpdate)
public static FieldUpdate createClearField(Field field)
field
- the Field to clearcreateClear(Field)
public static FieldUpdate createAdd(Field field, FieldValue value)
field
- the Field to add a value tovalue
- the value to add to the array, or key to add to the weighted setIllegalArgumentException
- if the runtime type of newValue does not match the type required by fieldUnsupportedOperationException
- if the field type is not array or weighted setValueUpdate.createAdd(FieldValue)
public static FieldUpdate createAdd(Field field, FieldValue key, Integer weight)
field
- the Field to a add a key tokey
- the key to addweight
- the weight to associate with the given keyIllegalArgumentException
- if the runtime type of key does not match the type required by fieldUnsupportedOperationException
- if the field type is not array or weighted setValueUpdate.createAdd(FieldValue,Integer)
public static FieldUpdate createAddAll(Field field, List<? extends FieldValue> values)
field
- the Field to add an array of values tovalues
- a List containing the values to addIllegalArgumentException
- if the runtime type of values does not match the type required by fieldUnsupportedOperationException
- if the field type is not array or weighted setValueUpdate.createAddAll(java.util.List)
,
ValueUpdate.createAdd(FieldValue)
public static FieldUpdate createAddAll(Field field, WeightedSet<? extends FieldValue> set)
field
- the Field to add the key/weight pairs in a weighted set toset
- a WeightedSet containing the key/weight pairs to addIllegalArgumentException
- if the runtime type of values does not match the type required by fieldUnsupportedOperationException
- if the field type is not weighted set or arrayValueUpdate.createAdd(FieldValue, Integer)
,
ValueUpdate.createAddAll(com.yahoo.document.datatypes.WeightedSet)
public static FieldUpdate createIncrement(Field field, Number increment)
field
- the field to increment the value ofincrement
- the number to increment byUnsupportedOperationException
- if the data type is non-numericValueUpdate.createIncrement(Number)
public static FieldUpdate createIncrement(Field field, FieldValue key, Number increment)
field
- the field to increment one of the weights ofkey
- the key whose weight in the weighted set to incrementincrement
- the number to increment byIllegalArgumentException
- if key is not equal to the nested type of the weighted setValueUpdate.createIncrement(Number)
,
ValueUpdate.createMap(FieldValue, ValueUpdate)
public static FieldUpdate createDecrement(Field field, Number decrement)
field
- the field to decrement the value ofdecrement
- the number to decrement byUnsupportedOperationException
- if the data type is non-numericValueUpdate.createDecrement(Number)
public static FieldUpdate createDecrement(Field field, FieldValue key, Number decrement)
field
- the field to decrement one of the weights ofkey
- the key whose weight in the weighted set to decrementdecrement
- the number to decrement byIllegalArgumentException
- if key is not equal to the nested type of the weighted setValueUpdate.createDecrement(Number)
,
ValueUpdate.createMap(FieldValue, ValueUpdate)
public static FieldUpdate createMultiply(Field field, Number factor)
field
- the field to multiply the value offactor
- the number to multiply byUnsupportedOperationException
- if the data type is non-numericValueUpdate.createMultiply(Number)
public static FieldUpdate createMultiply(Field field, FieldValue key, Number factor)
field
- the field to multiply one of the weights ofkey
- the key whose weight in the weighted set to multiplyfactor
- the number to multiply byIllegalArgumentException
- if key is not equal to the nested type of the weighted setValueUpdate.createMultiply(Number)
,
ValueUpdate.createMap(FieldValue, ValueUpdate)
public static FieldUpdate createDivide(Field field, Number divisor)
field
- the field to divide the value ofdivisor
- the number to divide byUnsupportedOperationException
- if the data type is non-numericValueUpdate.createDivide(Number)
public static FieldUpdate createDivide(Field field, FieldValue key, Number divisor)
field
- the field to divide one of the weights ofkey
- the key whose weight in the weighted set to dividedivisor
- the number to divide byIllegalArgumentException
- if key is not equal to the nested type of the weighted setValueUpdate.createDivide(Number)
,
ValueUpdate.createMap(FieldValue, ValueUpdate)
public static FieldUpdate createAssign(Field field, FieldValue newValue)
field
- the Field to assign a new value tonewValue
- the value to assignIllegalArgumentException
- if the runtime type of newValue does not match the type required by fieldValueUpdate.createAssign(FieldValue)
public static FieldUpdate createClear(Field field)
field
- the field to clear the value ofClearValueUpdate
,
ValueUpdate.createClear()
,
createClearField(com.yahoo.document.Field)
public static FieldUpdate createMap(Field field, FieldValue value, ValueUpdate update)
field
- the field to modify the subvalue ofvalue
- the index in case of array, or key in case of weighted setupdate
- the update to apply to the target sub-valueIllegalArgumentException
- in case data type is an array type and value is not an Integer; in case data type is a weighted set type and value is not equal to the nested type of the weighted set; or the encapsulated update throws such an exceptionUnsupportedOperationException
- if superType is a single-value type, or anything else than array or weighted set; or the encapsulated update throws such an exceptionValueUpdate.createMap(FieldValue, ValueUpdate)
public static FieldUpdate createRemove(Field field, FieldValue value)
field
- the field to remove a value fromvalue
- the value to remove from the array, or key to remove from the weighted setIllegalArgumentException
- if the runtime type of newValue does not match the type requiredUnsupportedOperationException
- if the field type is not array or weighted setValueUpdate.createRemove(FieldValue)
public static FieldUpdate createRemoveAll(Field field, List<? extends FieldValue> values)
field
- the field to remove values fromvalues
- a List containing the values to removeIllegalArgumentException
- if the runtime type of values does not match the type required by fieldUnsupportedOperationException
- if the field type is not array or weighted setValueUpdate.createRemoveAll(java.util.List)
public static FieldUpdate createRemoveAll(Field field, WeightedSet<? extends FieldValue> values)
field
- the field to remove values fromvalues
- a List containing the values to removeIllegalArgumentException
- if the runtime type of values does not match the type required by fieldUnsupportedOperationException
- if the field type is not array or weighted setValueUpdate.createRemoveAll(java.util.List)
Copyright © 2018. All rights reserved.