Top Description Constructors Methods
com.univocity.parsers.annotations

public abstract Class HeaderTransformer

extends Object
Class Inheritance
Imports
java.lang.reflect.*

A transformer of headers used in Nested attributes. Used to reassign header names/indexes of attributes of a Nested class which is useful when multiple Nested attributes of the same type are used within a class. For example, consider the Wheel class defined as:

public class Wheel {
    @Parsed
    String brand;

    @Parsed
    int miles;
}
 

And a Car which has four Wheels:

public static class Car {
		@Nested
		Wheel frontLeft;

		@Nested
		Wheel frontRight;

		@Nested
		Wheel rearLeft;

		@Nested
		Wheel rearRight;
}
 

The HeaderTransformer allows us to "rename" the attributes of each different Wheel of the Car so that input columns can be assigned to the appropriate places. Assuming an input with headers frontLeftWheelBrand,frontLeftWheelMiles,frontRightWheelBrand,frontRightWheelMiles,rearLeftWheelBrand,rearLeftWheelMiles,rearRightWheelBrand,rearRightWheelMiles, a HeaderTransformer can be created like this to assign a prefix in front of the header names derived from Wheel (originally just "brand" and "miles"):

public static class PrefixTransformer extends HeaderTransformer {

		private String prefix;

		public PrefixTransformer(String... args) {
			prefix = args[0];
       }

		@Override
		public String transformName(Field field, String name) {
			return prefix + Character.toUpperCase(name.charAt(0)) + name.substring(1);
       }
}

This allows us to to define the Car class as:

public static class Car {
		@Nested(headerTransformer = PrefixTransformer.class, args = "frontLeftWheel")
		Wheel frontLeft;

		@Nested(headerTransformer = PrefixTransformer.class, args = "frontRightWheel")
		Wheel frontRight;

		@Nested(headerTransformer = PrefixTransformer.class, args = "rearLeftWheel")
		Wheel rearLeft;

		@Nested(headerTransformer = PrefixTransformer.class, args = "rearRightWheel")
		Wheel rearRight;
}

The above annotation will prefix the frontLeft fields ("brand" and "miles") with "frontLeftWheel", effectively forming the header "frontLeftWheelBrand" and "frontLeftWheelMiles", which will match the input headers and assign the correct values to the correct Wheel instance

Important Note

It is mandatory to define a constructor that takes String[] as a parameter. The actual parameter values come from Nested#args() to allow custom configuration of the concrete HeaderTransformer instance.

Author
Univocity Software Pty Ltd - [email protected]

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public final int
transformIndex(AnnotatedElement element, int index)

public int

Returns:

the transformed position to be used to read/write values from/to the given field.
transformIndex
(Field
the field of a Nested class whose header will be transformed
field
,
int
the current column position associated with the field of the Nested class
index
)

Transforms a header index

public int

Returns:

the transformed position to be used to read/write values from/to the given method.
transformIndex
(Method
the method of a Nested class whose header will be transformed
method
,
int
the current column position associated with the method of the Nested class
index
)

Transforms a header index

public final String
public String

Returns:

the transformed header name to be used to read/write values from/to the given field.
transformName
(Field
the field of a Nested class whose header will be transformed
field
,
String
the current header name associated with the field of the Nested class
name
)

Transforms a header name

public String

Returns:

the transformed header name to be used to read/write values from/to the given method.
transformName
(Method
the method of a Nested class whose header will be transformed
method
,
String
the current header name associated with the method of the Nested class
name
)

Transforms a header name

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

HeaderTransformerback to summary
public HeaderTransformer()

Method Detail

transformIndexback to summary
public final int transformIndex(AnnotatedElement element, int index)
transformIndexback to summary
public int transformIndex(Field field, int index)

Transforms a header index

Parameters
field:Field

the field of a Nested class whose header will be transformed

index:int

the current column position associated with the field of the Nested class

Returns:int

the transformed position to be used to read/write values from/to the given field.

transformIndexback to summary
public int transformIndex(Method method, int index)

Transforms a header index

Parameters
method:Method

the method of a Nested class whose header will be transformed

index:int

the current column position associated with the method of the Nested class

Returns:int

the transformed position to be used to read/write values from/to the given method.

transformNameback to summary
public final String transformName(AnnotatedElement element, String name)
transformNameback to summary
public String transformName(Field field, String name)

Transforms a header name

Parameters
field:Field

the field of a Nested class whose header will be transformed

name:String

the current header name associated with the field of the Nested class

Returns:String

the transformed header name to be used to read/write values from/to the given field.

transformNameback to summary
public String transformName(Method method, String name)

Transforms a header name

Parameters
method:Method

the method of a Nested class whose header will be transformed

name:String

the current header name associated with the method of the Nested class

Returns:String

the transformed header name to be used to read/write values from/to the given method.