Package com.opencsv.bean
Interface FieldMap<I,K extends java.lang.Comparable<K>,C extends ComplexFieldMapEntry<I,K,T>,T>
-
- Type Parameters:
I
- The initializer type used to build the many-to-one mappingK
- Type of the field identifier (key)C
- Type of the ComplexFieldMapEntry used. This is specified as a parameter so we can provide type safety and polymorphism through a generic interface on the one hand, and still extend specific implementations with methods needed for that type of complex mapping without having to add every such method to the generic interface.T
- The type of the bean
- All Known Implementing Classes:
AbstractFieldMap
,FieldMapByName
,FieldMapByPosition
public interface FieldMap<I,K extends java.lang.Comparable<K>,C extends ComplexFieldMapEntry<I,K,T>,T>
Defines the basic characteristics of a map between field identifiers and their associatedBeanField
s. Such a mapping requires a method of matching multiple fields. This method will require data to initialize itself. Such a mapping also requires a key to index theBeanField
that is to be provided for a match.- Since:
- 4.2
- Author:
- Andrew Rucker Jones
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.lang.String[]
generateHeader(T bean)
This method generates a header that can be used for writing beans of the type provided back to a file.BeanField<T,K>
get(K key)
Gets theBeanField
associated with this key.BeanField<T,K>
put(K key, BeanField<T,K> value)
Associates the givenBeanField
with the givenkey
.void
putComplex(I initializer, BeanField<T,K> value)
Adds aBeanField
to this map indexed by the data ininitializer
.void
setErrorLocale(java.util.Locale errorLocale)
Sets the locale to be used for error messages.java.util.Collection<BeanField<T,K>>
values()
Provides all values currently in the map.
-
-
-
Method Detail
-
generateHeader
java.lang.String[] generateHeader(T bean) throws CsvRequiredFieldEmptyException
This method generates a header that can be used for writing beans of the type provided back to a file. Whether or not this generated header is used is decided by theMappingStrategy
in use. The ordering of the headers should be carefully considered by the implementing class.- Parameters:
bean
- One perfect, shining example of how the bean to be written should look. The most crucial thing is, for fields that result from joining multiple fields on reading and thus need to be split on writing, theMultiValuedMap
in question must have the complete structure of the header to be generated, even if some values are empty.- Returns:
- An array of header names for the output file
- Throws:
CsvRequiredFieldEmptyException
- If a required header is missing while attempting to write. Since every other header is hard-wired through the bean fields and their associated annotations, this can only happen with multi-valued fields.
-
get
BeanField<T,K> get(K key)
Gets theBeanField
associated with this key. If a key could possibly match both a regular, simple key (one added withput(Comparable, BeanField)
), and a complex key (one added withputComplex(java.lang.Object, com.opencsv.bean.BeanField)
), the simple key is always matched. If a key could match more than one complex key, the return value is undefined.
-
put
BeanField<T,K> put(K key, BeanField<T,K> value)
Associates the givenBeanField
with the givenkey
.
-
putComplex
void putComplex(I initializer, BeanField<T,K> value)
Adds aBeanField
to this map indexed by the data ininitializer
. This is what makes this map special: It allows one to define characteristics of a method to match multiple keys.- Parameters:
initializer
- Whatever data the implementation needs to match multiple keysvalue
- TheBeanField
that is to be returned on a later match
-
setErrorLocale
void setErrorLocale(java.util.Locale errorLocale)
Sets the locale to be used for error messages.- Parameters:
errorLocale
- The locale to be used for error messages
-
-