Class HeaderTransformer
java.lang.Object
com.univocity.parsers.annotations.HeaderTransformer
A transformer of headers used in
And a
The
This allows us to to define the
The above annotation will prefix the
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 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.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal int
transformIndex
(AnnotatedElement element, int index) int
transformIndex
(Field field, int index) Transforms a header indexint
transformIndex
(Method method, int index) Transforms a header indexfinal String
transformName
(AnnotatedElement element, String name) transformName
(Field field, String name) Transforms a header nametransformName
(Method method, String name) Transforms a header name
-
Constructor Details
-
HeaderTransformer
public HeaderTransformer()
-
-
Method Details
-
transformName
-
transformIndex
-
transformName
Transforms a header name -
transformIndex
Transforms a header index -
transformName
Transforms a header name -
transformIndex
Transforms a header index
-