-
Language:
English
-
Language:
English
Red Hat Training
A Red Hat training course is available for Red Hat Fuse
2.10. Configuring the Fixed-Length Reader Programmatically
- Use this code to configure the fixed-length reader to read a person record set, binding the record set into a list of person instances:
Smooks smooks = new Smooks(); smooks.setReaderConfig(new FixedLengthReaderConfigurator("firstname[10]?trim,lastname[10]?trim,gender[1],age[3]?trim,country[2]") .setBinding(new FixedLengthBinding("people", Person.class, FixedLengthBindingType.LIST))); JavaResult result = new JavaResult(); smooks.filterSource(new StreamSource(fixedLengthStream), result); List<Person> people = (List<Person>) result.getBean("people");
Configuring the Java binding is not mandatory. You can instead programmatically configure the Smooks instance to use other visitor implementations to carry out various forms of processing on the fixed-length record set. - To bind fixed-length records directly to a list or map of a Java type that reflects the data in your fixed-length records, use either the FixedLengthListBinder or the FixedLengthMapBinder classes:
// Note: The binder instance should be cached and reused... FixedLengthListBinder binder = new FixedLengthListBinder("firstname[10]?trim,lastname[10]?trim,gender[1],age[3]?trim,country[2]", Person.class); List<Person> people = binder.bind(fixedLengthStream); FixedLengthMapBinder: // Note: The binder instance should be cached and reused... FixedLengthMapBinder binder = new FixedLengthMapBinder("firstname[10]?trim,lastname[10]?trim,gender[1],age[3]?trim,country[2]", Person.class, "firstname"); Map<String, Person> people = binder.bind(fixedLengthStream);
If you need more control over the binding process, revert back to the lower level APIs.