com.vaadin.data.provider.DataKeyMapper Maven / Gradle / Ivy
/*
* Copyright (C) 2000-2024 Vaadin Ltd
*
* This program is available under Vaadin Commercial License and Service Terms.
*
* See for the full
* license.
*/
package com.vaadin.data.provider;
import java.io.Serializable;
import com.vaadin.data.ValueProvider;
/**
* DataKeyMapper to map data objects to key strings.
*
* @since 8.0
* @param
* data type
*/
public interface DataKeyMapper extends Serializable {
/**
* Gets the key for data object. If no key exists beforehand, a new key is
* created.
*
* @param dataObject
* data object for key mapping
* @return key for given data object
*/
String key(T dataObject);
/**
* Check whether this key mapper contains the given data object.
*
* @param dataObject
* the data object to check
* @return {@code true} if the given data object is contained in this key
* mapper, {@code false} otherwise
*/
boolean has(T dataObject);
/**
* Gets the data object identified by given key.
*
* @param key
* key of a data object
* @return identified data object; null
if invalid key
*/
T get(String key);
/**
* Removes a data object from the key mapping. The key is also dropped.
* Dropped keys are not reused.
*
* @param dataObject
* dropped data object
*/
void remove(T dataObject);
/**
* Removes all data objects from the key mapping. The keys are also dropped.
* Dropped keys are not reused.
*/
void removeAll();
/**
* Updates any existing mappings of given data object. The equality of two
* data objects is determined by the equality of their identifiers provided
* by the given value provider.
*
* @param dataObject
* the data object to update
*
* @since 8.1
*
*/
void refresh(T dataObject);
/**
* Takes identifier getter into use and updates existing mappings.
*
* @param identifierGetter
* has to return a unique key for every bean, and the returned
* key has to follow general {@code hashCode()} and
* {@code equals()} contract, see {@link Object#hashCode()} for
* details.
* @since 8.1
*/
void setIdentifierGetter(ValueProvider identifierGetter);
}