diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java index 0ce26bd8c..e76facd45 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java @@ -179,13 +179,13 @@ public class FlatFileItemReader extends ExecutionContextUserSupport implements R String line = readLine(); if (line != null) { + int lineCount = getReader().getPosition(); try { FieldSet tokenizedLine = tokenizer.tokenize(line); - return fieldSetMapper.mapLine(tokenizedLine); + return fieldSetMapper.mapLine(tokenizedLine, lineCount); } catch (RuntimeException ex) { // add current line count to message and re-throw - int lineCount = getReader().getPosition(); throw new FlatFileParseException("Parsing error at line: " + lineCount + " in resource=" + resource.getDescription() + ", input=[" + line + "]", ex, line, lineCount); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/BeanWrapperFieldSetMapper.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/BeanWrapperFieldSetMapper.java index 81ee85b4e..9bd69a6f4 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/BeanWrapperFieldSetMapper.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/BeanWrapperFieldSetMapper.java @@ -99,7 +99,7 @@ public class BeanWrapperFieldSetMapper extends DefaultPropertyEditorRegistrar im /** * The bean name (id) for an object that can be populated from the field set - * that will be passed into {@link #mapLine(FieldSet)}. Typically a + * that will be passed into {@link #mapLine(FieldSet, int)}. Typically a * prototype scoped bean so that a new instance is returned for each field * set mapped. * @@ -115,7 +115,7 @@ public class BeanWrapperFieldSetMapper extends DefaultPropertyEditorRegistrar im /** * Public setter for the type of bean to create instead of using a prototype * bean. An object of this type will be created from its default constructor - * for every call to {@link #mapLine(FieldSet)}.
+ * for every call to {@link #mapLine(FieldSet, int)}.
* * Either this property or the prototype bean name must be specified, but * not both. @@ -150,9 +150,9 @@ public class BeanWrapperFieldSetMapper extends DefaultPropertyEditorRegistrar im * the {@link DataBinder} from {@link #createBinder(Object)} has errors * after binding). * - * @see org.springframework.batch.item.file.mapping.FieldSetMapper#mapLine(org.springframework.batch.item.file.mapping.FieldSet) + * @see org.springframework.batch.item.file.mapping.FieldSetMapper#mapLine(org.springframework.batch.item.file.mapping.FieldSet, int) */ - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { Object copy = getBean(); DataBinder binder = createBinder(copy); binder.bind(new MutablePropertyValues(getBeanProperties(copy, fs.getProperties()))); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/FieldSetMapper.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/FieldSetMapper.java index 4b4cde966..28096d2fe 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/FieldSetMapper.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/FieldSetMapper.java @@ -16,18 +16,31 @@ package org.springframework.batch.item.file.mapping; - /** - * Interface that is used to map data obtained from a file into an object. + * Interface that is used to map data obtained from a {@link FieldSet} into an + * object. * * @author tomas.slanina * @author Dave Syer * */ public interface FieldSetMapper { - + /** - * Method used to map data obtained from a file into an object. + * Constant (negative) value indicating an unknown row number. */ - public Object mapLine(FieldSet fs); + public final static int ROW_NUMBER_UNKNOWN = -1; + + /** + * Method used to map data obtained from a {@link FieldSet} into an object. + * Implementations can do whatever they need to to convert the input into an + * object of the desired type. Often the row number is not used, and + * sometimes it is not available anyway, in which case its value will be + * {@link #ROW_NUMBER_UNKNOWN}. + * + * @param fs the {@link FieldSet} to map + * @param rownum the row number for the field set in the input source (if + * known) + */ + public Object mapLine(FieldSet fs, int rownum); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PassThroughFieldSetMapper.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PassThroughFieldSetMapper.java index d96e5f3b1..ca44e5a75 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PassThroughFieldSetMapper.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PassThroughFieldSetMapper.java @@ -29,7 +29,7 @@ public class PassThroughFieldSetMapper implements FieldSetMapper, FieldSetCreato * (non-Javadoc) * @see org.springframework.batch.io.file.FieldSetMapper#mapLine(org.springframework.batch.io.file.FieldSet) */ - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { return fs; } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/MultiResourceItemReaderFlatFileTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/MultiResourceItemReaderFlatFileTests.java index 1aac541ac..84590dbd2 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/MultiResourceItemReaderFlatFileTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/MultiResourceItemReaderFlatFileTests.java @@ -15,7 +15,7 @@ public class MultiResourceItemReaderFlatFileTests extends CommonItemStreamItemRe FlatFileItemReader fileReader = new FlatFileItemReader(); fileReader.setFieldSetMapper(new FieldSetMapper() { - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { Foo foo = new Foo(); foo.setValue(fs.readInt(0)); return foo; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderAdvancedTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderAdvancedTests.java index 014075668..2f070100b 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderAdvancedTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderAdvancedTests.java @@ -52,7 +52,7 @@ public class FlatFileItemReaderAdvancedTests extends TestCase { }; private FieldSetMapper fieldSetMapper = new FieldSetMapper() { - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { return fs; } }; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderBasicTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderBasicTests.java index 542cf625b..6e84304fd 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderBasicTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderBasicTests.java @@ -59,7 +59,7 @@ public class FlatFileItemReaderBasicTests extends TestCase { }; private FieldSetMapper fieldSetMapper = new FieldSetMapper() { - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { return fs; } }; @@ -126,7 +126,7 @@ public class FlatFileItemReaderBasicTests extends TestCase { public void testReadWithMapperError() throws Exception { itemReader.setFieldSetMapper(new FieldSetMapper() { - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { throw new RuntimeException("foo"); } }); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderCommonTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderCommonTests.java index b49cef499..2f708614f 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderCommonTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderCommonTests.java @@ -17,7 +17,7 @@ public class FlatFileItemReaderCommonTests extends CommonItemStreamItemReaderTes Resource resource = new ByteArrayResource(FOOS.getBytes()); tested.setResource(resource); tested.setFieldSetMapper(new FieldSetMapper() { - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { Foo foo = new Foo(); foo.setValue(fs.readInt(0)); return foo; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/mapping/BeanWrapperFieldSetMapperTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/mapping/BeanWrapperFieldSetMapperTests.java index 6c6c76b97..77ca7fae0 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/mapping/BeanWrapperFieldSetMapperTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/mapping/BeanWrapperFieldSetMapperTests.java @@ -63,7 +63,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "This is some dummy string", "true", "C" }, new String[] { "varString", "varBoolean", "varChar" }); - TestObject result = (TestObject) mapper.mapLine(fieldSet); + TestObject result = (TestObject) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals("This is some dummy string", result.getVarString()); assertEquals(true, result.isVarBoolean()); assertEquals('C', result.getVarChar()); @@ -78,7 +78,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "This is some dummy string", "true", "C" }, new String[] { "varString", "varBoolean", "varChar" }); - TestObject result = (TestObject) mapper.mapLine(fieldSet); + TestObject result = (TestObject) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals("This is some dummy string", result.getVarString()); assertEquals(true, result.isVarBoolean()); assertEquals('C', result.getVarChar()); @@ -93,7 +93,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "This is some dummy string", "true", "C" }, new String[] { "VarString", "VAR_BOOLEAN", "VAR_CHAR" }); - TestObject result = (TestObject) mapper.mapLine(fieldSet); + TestObject result = (TestObject) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals("This is some dummy string", result.getVarString()); assertEquals(true, result.isVarBoolean()); assertEquals('C', result.getVarChar()); @@ -106,7 +106,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "This is some dummy string", "true", "C" }, new String[] { "varString", "varBoolean", "varChar" }); - TestObject result = (TestObject) mapper.mapLine(fieldSet); + TestObject result = (TestObject) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals("This is some dummy string", result.getVarString()); assertEquals(true, result.isVarBoolean()); assertEquals('C', result.getVarChar()); @@ -128,7 +128,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "This is some dummy string", "1", "Another dummy", "2" }, new String[] { "valueA", "valueB", "testObjectB.valueA", "testObjectB.testObjectC.value" }); - TestNestedA result = (TestNestedA) mapper.mapLine(fieldSet); + TestNestedA result = (TestNestedA) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals("This is some dummy string", result.getValueA()); assertEquals(1, result.getValueB()); @@ -148,7 +148,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "This is some dummy string", "1" }, new String[] { "VALUE_A", "VALUE_B" }); - TestNestedA result = (TestNestedA) mapper.mapLine(fieldSet); + TestNestedA result = (TestNestedA) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals("This is some dummy string", result.getValueA()); assertEquals(1, result.getValueB()); @@ -165,7 +165,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "1" }, new String[] { "foo" }); - TestNestedC result = (TestNestedC) mapper.mapLine(fieldSet); + TestNestedC result = (TestNestedC) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); // "foo" is similar enough to "value" that it matches - but only because // nothing else does... @@ -187,7 +187,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "Another dummy", "2" }, new String[] { "TestObjectB.ValueA", "TestObjectB.TestObjectC.Value" }); - TestNestedA result = (TestNestedA) mapper.mapLine(fieldSet); + TestNestedA result = (TestNestedA) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals("Another dummy", result.getTestObjectB().getValueA()); assertEquals(2, result.getTestObjectB().getTestObjectC().getValue()); @@ -207,7 +207,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "Another dummy" }, new String[] { "TestObjectB.foo" }); try { - mapper.mapLine(fieldSet); + mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); fail("Expected NotWritablePropertyException"); } catch (NotWritablePropertyException e) { @@ -229,7 +229,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "2" }, new String[] { "TestObjectA.garbage" }); try { - mapper.mapLine(fieldSet); + mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); fail("Expected NotWritablePropertyException"); } catch (NotWritablePropertyException e) { @@ -269,7 +269,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "1", "2", "3" }, new String[] { "NestedC[0].Value", "NestedC[1].Value", "NestedC[2].Value" }); - mapper.mapLine(fieldSet); + mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals(1, ((TestNestedC) nestedList.getNestedC().get(0)).getValue()); assertEquals(2, ((TestNestedC) nestedList.getNestedC().get(1)).getValue()); @@ -285,7 +285,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { FieldSet fieldSet = new DefaultFieldSet(new String[] { "00009" }, new String[] { "varLong" }); try { - mapper.mapLine(fieldSet); + mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); fail("Expected BindingException"); } catch (BindingException e) { @@ -302,7 +302,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { mapper.setCustomEditors(Collections.singletonMap(Long.TYPE, new CustomNumberEditor(Long.class, NumberFormat .getNumberInstance(), true))); - TestObject bean = (TestObject) mapper.mapLine(fieldSet); + TestObject bean = (TestObject) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals(9, bean.getVarLong()); } @@ -316,7 +316,7 @@ public class BeanWrapperFieldSetMapperTests extends TestCase { mapper.setCustomEditors(Collections.singletonMap(Long.TYPE, new CustomNumberEditor(Long.class, NumberFormat .getNumberInstance(), true))); - TestObject bean = (TestObject) mapper.mapLine(fieldSet); + TestObject bean = (TestObject) mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); assertEquals(9, bean.getVarLong()); assertEquals(78, bean.getVarInt()); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/mapping/PassThroughFieldSetMapperTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/mapping/PassThroughFieldSetMapperTests.java index 54b8e6d42..3aa50add1 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/mapping/PassThroughFieldSetMapperTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/mapping/PassThroughFieldSetMapperTests.java @@ -27,11 +27,11 @@ public class PassThroughFieldSetMapperTests extends TestCase { /** * Test method for - * {@link org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper#mapLine(org.springframework.batch.item.file.mapping.FieldSet)}. + * {@link org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper#mapLine(org.springframework.batch.item.file.mapping.FieldSet, int)}. */ public void testMapLine() { FieldSet fieldSet = new DefaultFieldSet(new String[] { "foo", "bar" }); - assertEquals(fieldSet, mapper.mapLine(fieldSet)); + assertEquals(fieldSet, mapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN)); } /** diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AbstractTradeBatchTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AbstractTradeBatchTests.java index 36ab5c9b8..3a1570150 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AbstractTradeBatchTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/support/AbstractTradeBatchTests.java @@ -60,7 +60,7 @@ public abstract class AbstractTradeBatchTests extends TestCase { } protected static class TradeMapper implements FieldSetMapper{ - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { return new Trade(fs); } } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/OrderItemReader.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/OrderItemReader.java index 09903a47d..b46172ca7 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/OrderItemReader.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/item/reader/OrderItemReader.java @@ -91,7 +91,7 @@ public class OrderItemReader extends DelegatingItemReader { // start a new Order if (Order.LINE_ID_HEADER.equals(lineId)) { log.debug("STARTING NEW RECORD"); - order = (Order) headerMapper.mapLine(fieldSet); + order = (Order) headerMapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN); return; } @@ -116,7 +116,7 @@ public class OrderItemReader extends DelegatingItemReader { log.debug("MAPPING CUSTOMER"); if (order.getCustomer() == null) { - order.setCustomer((Customer) customerMapper.mapLine(fieldSet)); + order.setCustomer((Customer) customerMapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN)); order.getCustomer().setBusinessCustomer(true); } @@ -127,7 +127,7 @@ public class OrderItemReader extends DelegatingItemReader { log.debug("MAPPING CUSTOMER"); if (order.getCustomer() == null) { - order.setCustomer((Customer) customerMapper.mapLine(fieldSet)); + order.setCustomer((Customer) customerMapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN)); order.getCustomer().setBusinessCustomer(false); } @@ -136,25 +136,25 @@ public class OrderItemReader extends DelegatingItemReader { if (Address.LINE_ID_BILLING_ADDR.equals(lineId)) { log.debug("MAPPING BILLING ADDRESS"); - order.setBillingAddress((Address) addressMapper.mapLine(fieldSet)); + order.setBillingAddress((Address) addressMapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN)); return; } if (Address.LINE_ID_SHIPPING_ADDR.equals(lineId)) { log.debug("MAPPING SHIPPING ADDRESS"); - order.setShippingAddress((Address) addressMapper.mapLine(fieldSet)); + order.setShippingAddress((Address) addressMapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN)); return; } if (BillingInfo.LINE_ID_BILLING_INFO.equals(lineId)) { log.debug("MAPPING BILLING INFO"); - order.setBilling((BillingInfo) billingMapper.mapLine(fieldSet)); + order.setBilling((BillingInfo) billingMapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN)); return; } if (ShippingInfo.LINE_ID_SHIPPING_INFO.equals(lineId)) { log.debug("MAPPING SHIPPING INFO"); - order.setShipping((ShippingInfo) shippingMapper.mapLine(fieldSet)); + order.setShipping((ShippingInfo) shippingMapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN)); return; } @@ -165,7 +165,7 @@ public class OrderItemReader extends DelegatingItemReader { order.setLineItems(new ArrayList()); } - order.getLineItems().add(itemMapper.mapLine(fieldSet)); + order.getLineItems().add(itemMapper.mapLine(fieldSet, FieldSetMapper.ROW_NUMBER_UNKNOWN)); return; } diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/AddressFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/AddressFieldSetMapper.java index 4c2a4c673..7c0cbe875 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/AddressFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/AddressFieldSetMapper.java @@ -33,7 +33,7 @@ public class AddressFieldSetMapper implements FieldSetMapper { public static final String COUNTRY_COLUMN = "COUNTRY"; - public Object mapLine(FieldSet fieldSet) { + public Object mapLine(FieldSet fieldSet, int rownum) { Address address = new Address(); address.setAddressee(fieldSet.readString(ADDRESSEE_COLUMN)); diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/BillingFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/BillingFieldSetMapper.java index f5bcbeeb0..fbeb6343e 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/BillingFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/BillingFieldSetMapper.java @@ -27,7 +27,7 @@ public class BillingFieldSetMapper implements FieldSetMapper { public static final String PAYMENT_TYPE_ID_COLUMN = "PAYMENT_TYPE_ID"; public static final String PAYMENT_DESC_COLUMN = "PAYMENT_DESC"; - public Object mapLine(FieldSet fieldSet) { + public Object mapLine(FieldSet fieldSet, int rownum) { BillingInfo info = new BillingInfo(); info.setPaymentId(fieldSet.readString(PAYMENT_TYPE_ID_COLUMN)); diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/CustomerFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/CustomerFieldSetMapper.java index d96a4a1ca..a0fe7b582 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/CustomerFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/CustomerFieldSetMapper.java @@ -34,7 +34,7 @@ public class CustomerFieldSetMapper implements FieldSetMapper { public static final String REG_ID_COLUMN = "REG_ID"; public static final String VIP_COLUMN = "VIP"; - public Object mapLine(FieldSet fieldSet) { + public Object mapLine(FieldSet fieldSet, int rownum) { Customer customer = new Customer(); if (Customer.LINE_ID_BUSINESS_CUST.equals(fieldSet.readString(LINE_ID_COLUMN))) { diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/GameFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/GameFieldSetMapper.java index ca7a6dd90..46f71e311 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/GameFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/GameFieldSetMapper.java @@ -6,7 +6,7 @@ import org.springframework.batch.sample.domain.Game; public class GameFieldSetMapper implements FieldSetMapper { - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { if(fs == null){ return null; diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/HeaderFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/HeaderFieldSetMapper.java index 61cbe7924..462f130e4 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/HeaderFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/HeaderFieldSetMapper.java @@ -27,7 +27,7 @@ public class HeaderFieldSetMapper implements FieldSetMapper { public static final String ORDER_ID_COLUMN = "ORDER_ID"; public static final String ORDER_DATE_COLUMN = "ORDER_DATE"; - public Object mapLine(FieldSet fieldSet) { + public Object mapLine(FieldSet fieldSet, int rownum) { Order order = new Order(); order.setOrderId(fieldSet.readLong(ORDER_ID_COLUMN)); order.setOrderDate(fieldSet.readDate(ORDER_DATE_COLUMN)); diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/OrderItemFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/OrderItemFieldSetMapper.java index 2f35d2474..62f669a3e 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/OrderItemFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/OrderItemFieldSetMapper.java @@ -33,7 +33,7 @@ public class OrderItemFieldSetMapper implements FieldSetMapper { public static final String ITEM_ID_COLUMN = "ITEM_ID"; - public Object mapLine(FieldSet fieldSet) { + public Object mapLine(FieldSet fieldSet, int rownum) { LineItem item = new LineItem(); item.setItemId(fieldSet.readLong(ITEM_ID_COLUMN)); diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/PlayerFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/PlayerFieldSetMapper.java index 034d11c28..0b1fe8895 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/PlayerFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/PlayerFieldSetMapper.java @@ -6,7 +6,7 @@ import org.springframework.batch.sample.domain.Player; public class PlayerFieldSetMapper implements FieldSetMapper { - public Object mapLine(FieldSet fs) { + public Object mapLine(FieldSet fs, int rownum) { if(fs == null){ return null; diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/ShippingFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/ShippingFieldSetMapper.java index 2fc8a6a45..49ed328e7 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/ShippingFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/ShippingFieldSetMapper.java @@ -28,7 +28,7 @@ public class ShippingFieldSetMapper implements FieldSetMapper { public static final String SHIPPING_TYPE_ID_COLUMN = "SHIPPING_TYPE_ID"; public static final String SHIPPER_ID_COLUMN = "SHIPPER_ID"; - public Object mapLine(FieldSet fieldSet) { + public Object mapLine(FieldSet fieldSet, int rownum) { ShippingInfo info = new ShippingInfo(); info.setShipperId(fieldSet.readString(SHIPPER_ID_COLUMN)); diff --git a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/TradeFieldSetMapper.java b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/TradeFieldSetMapper.java index c74728b26..9bf56f933 100644 --- a/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/TradeFieldSetMapper.java +++ b/spring-batch-samples/src/main/java/org/springframework/batch/sample/mapping/TradeFieldSetMapper.java @@ -30,7 +30,7 @@ public class TradeFieldSetMapper implements FieldSetMapper { public static final int PRICE_COLUMN = 2; public static final int CUSTOMER_COLUMN = 3; - public Object mapLine(FieldSet fieldSet) { + public Object mapLine(FieldSet fieldSet, int rownum) { if ("BEGIN".equals(fieldSet.readString(0))) { return AggregateItemReader.BEGIN_RECORD; diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/reader/OrderItemReaderTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/reader/OrderItemReaderTests.java index 7f15e3b4f..ce60cf0cf 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/reader/OrderItemReaderTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/item/reader/OrderItemReaderTests.java @@ -90,19 +90,19 @@ public class OrderItemReaderTests extends TestCase { mapperControl = MockControl.createControl(FieldSetMapper.class); mapper = (FieldSetMapper)mapperControl.getMock(); //set how mapper should respond - set return values for mapper - mapper.mapLine(headerFS); + mapper.mapLine(headerFS, FieldSetMapper.ROW_NUMBER_UNKNOWN); mapperControl.setReturnValue(order); - mapper.mapLine(customerFS); + mapper.mapLine(customerFS, FieldSetMapper.ROW_NUMBER_UNKNOWN); mapperControl.setReturnValue(customer); - mapper.mapLine(billingFS); + mapper.mapLine(billingFS, FieldSetMapper.ROW_NUMBER_UNKNOWN); mapperControl.setReturnValue(billing); - mapper.mapLine(shippingFS); + mapper.mapLine(shippingFS, FieldSetMapper.ROW_NUMBER_UNKNOWN); mapperControl.setReturnValue(shipping); - mapper.mapLine(billingInfoFS); + mapper.mapLine(billingInfoFS, FieldSetMapper.ROW_NUMBER_UNKNOWN); mapperControl.setReturnValue(billingInfo); - mapper.mapLine(shippingInfoFS); + mapper.mapLine(shippingInfoFS, FieldSetMapper.ROW_NUMBER_UNKNOWN); mapperControl.setReturnValue(shippingInfo); - mapper.mapLine(itemFS); + mapper.mapLine(itemFS, FieldSetMapper.ROW_NUMBER_UNKNOWN); mapperControl.setReturnValue(item,3); mapperControl.replay(); diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/mapping/AbstractFieldSetMapperTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/mapping/AbstractFieldSetMapperTests.java index 8f9ddd3c2..9c4b6e399 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/mapping/AbstractFieldSetMapperTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/mapping/AbstractFieldSetMapperTests.java @@ -1,10 +1,10 @@ package org.springframework.batch.sample.mapping; +import junit.framework.TestCase; + import org.springframework.batch.item.file.mapping.FieldSet; import org.springframework.batch.item.file.mapping.FieldSetMapper; -import junit.framework.TestCase; - /** * Encapsulates basic logic for testing custom {@link FieldSetMapper} implementations. * @@ -35,7 +35,7 @@ public abstract class AbstractFieldSetMapperTests extends TestCase { * Assumes the domain object implements sensible equals(Object other) */ public void testRegularUse() { - assertEquals(expectedDomainObject(), fieldSetMapper().mapLine(fieldSet())); + assertEquals(expectedDomainObject(), fieldSetMapper().mapLine(fieldSet(), FieldSetMapper.ROW_NUMBER_UNKNOWN)); } } diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/mapping/TradeFieldSetMapperTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/mapping/TradeFieldSetMapperTests.java index 834427b91..f52b73666 100644 --- a/spring-batch-samples/src/test/java/org/springframework/batch/sample/mapping/TradeFieldSetMapperTests.java +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/mapping/TradeFieldSetMapperTests.java @@ -40,11 +40,11 @@ public class TradeFieldSetMapperTests extends AbstractFieldSetMapperTests{ } public void testBeginRecord() throws Exception { - assertEquals(AggregateItemReader.BEGIN_RECORD, fieldSetMapper().mapLine(new DefaultFieldSet(new String[] {"BEGIN"}))); + assertEquals(AggregateItemReader.BEGIN_RECORD, fieldSetMapper().mapLine(new DefaultFieldSet(new String[] {"BEGIN"}), FieldSetMapper.ROW_NUMBER_UNKNOWN)); } public void testEndRecord() throws Exception { - assertEquals(AggregateItemReader.END_RECORD, fieldSetMapper().mapLine(new DefaultFieldSet(new String[] {"END"}))); + assertEquals(AggregateItemReader.END_RECORD, fieldSetMapper().mapLine(new DefaultFieldSet(new String[] {"END"}), FieldSetMapper.ROW_NUMBER_UNKNOWN)); } }