OPEN - issue BATCH-371: FlatFileItemWriter no longer uses LineAggregator

http://jira.springframework.org/browse/BATCH-371

Changed the interface of LineAggregator for symmetry with LineTokenizer.
This commit is contained in:
dsyer
2008-02-20 08:55:35 +00:00
parent 2d9a4fb570
commit f6bd90fc3e
12 changed files with 116 additions and 89 deletions

View File

@@ -16,10 +16,10 @@
package org.springframework.batch.io.file.transform;
import org.springframework.batch.io.file.transform.DelimitedLineAggregator;
import junit.framework.TestCase;
import org.springframework.batch.io.file.mapping.DefaultFieldSet;
/**
* Unit tests for {@link DelimitedLineAggregator}
*
@@ -34,7 +34,7 @@ public class DelimitedLineAggregatorTests extends TestCase {
String[] args = { "a", "bc", "def" };
String expectedResult = "a:bc:def";
String result = aggregator.aggregate(args);
String result = aggregator.aggregate(new DefaultFieldSet(args));
assertEquals(result, expectedResult);
}

View File

@@ -16,6 +16,7 @@
package org.springframework.batch.io.file.transform;
import org.springframework.batch.io.file.mapping.DefaultFieldSet;
import org.springframework.batch.io.file.transform.FixedLengthLineAggregator;
import org.springframework.batch.io.file.transform.Range;
@@ -39,7 +40,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
String[] args = { "does not matter what is here" };
try {
aggregator.aggregate(args);
aggregator.aggregate(new DefaultFieldSet(args));
fail("should not work with no ranges specified");
}
catch (IllegalArgumentException expected) {
@@ -55,7 +56,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
aggregator.setColumns(new Range[0]);
try {
aggregator.aggregate(string);
aggregator.aggregate(new DefaultFieldSet(string));
fail("Exception expected: count of aggregated strings"
+ " does not match the number of columns");
}
@@ -71,7 +72,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
String[] args = { "Oversize" };
aggregator.setColumns(new Range[] {new Range(1,args[0].length()-1)});
try {
aggregator.aggregate(args);
aggregator.aggregate(new DefaultFieldSet(args));
fail("Invalid text length, exception should have been thrown");
}
catch (IllegalArgumentException expected) {
@@ -85,7 +86,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
public void testAggregate() {
String[] args = { "Matchsize", "Smallsize" };
aggregator.setColumns(new Range[] {new Range(1,9), new Range(10,18)});
String result = aggregator.aggregate(args);
String result = aggregator.aggregate(new DefaultFieldSet(args));
assertEquals("MatchsizeSmallsize", result);
}
@@ -95,7 +96,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
public void testAggregateWithLastRangeUnbound() {
String[] args = { "Matchsize", "Smallsize" };
aggregator.setColumns(new Range[] {new Range(1,12), new Range(13)});
String result = aggregator.aggregate(args);
String result = aggregator.aggregate(new DefaultFieldSet(args));
assertEquals("Matchsize Smallsize", result);
}
@@ -107,7 +108,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
String[] args = { "Matchsize", "Smallsize" };
aggregator.setAlignment("right");
aggregator.setColumns(new Range[] {new Range(1,13), new Range(14,23)});
String result = aggregator.aggregate(args);
String result = aggregator.aggregate(new DefaultFieldSet(args));
assertEquals(23,result.length());
assertEquals(result, " Matchsize Smallsize");
}
@@ -119,7 +120,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
String[] args = { "Matchsize", "Smallsize" };
aggregator.setAlignment("center");
aggregator.setColumns(new Range[] {new Range(1,13), new Range(14,25)});
String result = aggregator.aggregate(args);
String result = aggregator.aggregate(new DefaultFieldSet(args));
assertEquals(result, " Matchsize Smallsize ");
}
@@ -131,7 +132,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
aggregator.setPadding('.');
aggregator.setAlignment("left");
aggregator.setColumns(new Range[] {new Range(1,13), new Range(14,24)});
String result = aggregator.aggregate(args);
String result = aggregator.aggregate(new DefaultFieldSet(args));
assertEquals(result, "Matchsize....Smallsize..");
}
@@ -142,7 +143,7 @@ public class FixedLengthLineAggregatorTests extends TestCase {
String[] args = { "Matchsize", "Smallsize" };
aggregator.setAlignment("left");
aggregator.setColumns(new Range[] {new Range(1,13), new Range(14,24)});
String result = aggregator.aggregate(args);
String result = aggregator.aggregate(new DefaultFieldSet(args));
assertEquals(result, "Matchsize Smallsize ");
}
@@ -166,6 +167,6 @@ public class FixedLengthLineAggregatorTests extends TestCase {
public void testAggregateNullArgument() {
String[] args = { null };
aggregator.setColumns(new Range[] {new Range(1,3)});
assertEquals(" ", aggregator.aggregate(args));
assertEquals(" ", aggregator.aggregate(new DefaultFieldSet(args)));
}
}

View File

@@ -15,6 +15,8 @@
*/
package org.springframework.batch.io.file.transform;
import org.springframework.batch.io.file.mapping.FieldSet;
import junit.framework.TestCase;
/**
@@ -31,7 +33,7 @@ public class LineAggregatorItemTransformerTests extends TestCase {
*/
public void testSetAggregator() throws Exception {
transformer.setAggregator(new LineAggregator() {
public String aggregate(String[] args) {
public String aggregate(FieldSet fieldSet) {
return "foo";
}
});

View File

@@ -16,7 +16,7 @@
package org.springframework.batch.io.file.transform;
import org.springframework.batch.io.file.transform.LineAggregator;
import org.springframework.batch.io.file.mapping.FieldSet;
/**
@@ -24,16 +24,16 @@ import org.springframework.batch.io.file.transform.LineAggregator;
*
* @author robert.kasanicky
*/
public class LineAggregatorStub implements LineAggregator {
public class StubLineAggregator implements LineAggregator {
/**
* Concatenates arguments. Ignores the LineDescriptor.
* Concatenates arguments.
*/
public String aggregate(String[] args) {
public String aggregate(FieldSet fieldSet) {
String result = "";
for (int i = 1; i < args.length; i++) {
result = result + args[i];
for (int i = 1; i < fieldSet.getFieldCount(); i++) {
result = result + fieldSet.readString(i);
}
return result;