REOPENED - issue BATCH-640: FieldSetMapper.mapLine() should contain the line number

OPEN - issue BATCH-278: Allow FixedLengthLineAggregator to be configured with different padding/alignment for specific columns

Remove FieldSetCreator and replace with new LineAggregator interface
This commit is contained in:
dsyer
2008-08-07 12:44:08 +00:00
parent 754d3254cd
commit c56cfc84fd
31 changed files with 568 additions and 1055 deletions

View File

@@ -21,8 +21,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.batch.item.file.mapping.DefaultFieldSet;
import org.springframework.batch.item.file.mapping.FieldSet;
import org.springframework.batch.item.file.transform.LineAggregator;
import org.springframework.batch.item.transform.ItemTransformer;
import org.springframework.batch.sample.domain.order.Address;
@@ -40,7 +38,7 @@ public class OrderTransformer implements ItemTransformer<Order, List<String>> {
/**
* Aggregators for all types of lines in the output file
*/
private Map<String, LineAggregator> aggregators;
private Map<String, LineAggregator<String[]>> aggregators;
/**
* Converts information from an Order object to a collection of Strings for
@@ -66,11 +64,11 @@ public class OrderTransformer implements ItemTransformer<Order, List<String>> {
return result;
}
public void setAggregators(Map<String, LineAggregator> aggregators) {
public void setAggregators(Map<String, LineAggregator<String[]>> aggregators) {
this.aggregators = aggregators;
}
private LineAggregator getAggregator(String name) {
private LineAggregator<String[]> getAggregator(String name) {
return aggregators.get(name);
}
@@ -82,39 +80,36 @@ public class OrderTransformer implements ItemTransformer<Order, List<String>> {
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
static FieldSet headerArgs(Order order) {
return new DefaultFieldSet(new String[] { "BEGIN_ORDER:", String.valueOf(order.getOrderId()),
dateFormat.format(order.getOrderDate()) });
static String[] headerArgs(Order order) {
return new String[] { "BEGIN_ORDER:", String.valueOf(order.getOrderId()),
dateFormat.format(order.getOrderDate()) };
}
static FieldSet footerArgs(Order order) {
return new DefaultFieldSet(new String[] { "END_ORDER:", order.getTotalPrice().toString() });
static String[] footerArgs(Order order) {
return new String[] { "END_ORDER:", order.getTotalPrice().toString() };
}
static FieldSet customerArgs(Order order) {
static String[] customerArgs(Order order) {
Customer customer = order.getCustomer();
return new DefaultFieldSet(new String[] { "CUSTOMER:", String.valueOf(customer.getRegistrationId()),
customer.getFirstName(), customer.getMiddleName(), customer.getLastName() });
return new String[] { "CUSTOMER:", String.valueOf(customer.getRegistrationId()), customer.getFirstName(),
customer.getMiddleName(), customer.getLastName() };
}
static FieldSet lineItemArgs(LineItem item) {
return new DefaultFieldSet(new String[] { "ITEM:", String.valueOf(item.getItemId()),
item.getPrice().toString() });
static String[] lineItemArgs(LineItem item) {
return new String[] { "ITEM:", String.valueOf(item.getItemId()), item.getPrice().toString() };
}
static FieldSet billingAddressArgs(Order order) {
static String[] billingAddressArgs(Order order) {
Address address = order.getBillingAddress();
return new DefaultFieldSet(new String[] { "ADDRESS:", address.getAddrLine1(), address.getCity(),
address.getZipCode() });
return new String[] { "ADDRESS:", address.getAddrLine1(), address.getCity(), address.getZipCode() };
}
static FieldSet billingInfoArgs(Order order) {
static String[] billingInfoArgs(Order order) {
BillingInfo billingInfo = order.getBilling();
return new DefaultFieldSet(new String[] { "BILLING:", billingInfo.getPaymentId(),
billingInfo.getPaymentDesc() });
return new String[] { "BILLING:", billingInfo.getPaymentId(), billingInfo.getPaymentDesc() };
}
}