Skip to content
Snippets Groups Projects
Commit e38f64a7 authored by izabel's avatar izabel
Browse files

parser warning improved

SVN: 4557
parent 95bfa397
No related branches found
No related tags found
No related merge requests found
......@@ -73,7 +73,7 @@ public class DefaultParser<E> implements IParser<E>
// Parser
//
public final List<E> parse(final Iterator<Line> lineIterator, final ILineFilter lineFilter, final long headerLength)
public final List<E> parse(final Iterator<Line> lineIterator, final ILineFilter lineFilter, final int headerLength)
throws ParsingException
{
final List<E> elements = new ArrayList<E>();
......@@ -83,7 +83,7 @@ public class DefaultParser<E> implements IParser<E>
while (lineIterator.hasNext())
{
Line line = lineIterator.next();
final String nextLine = line.getText();
String nextLine = line.getText();
int number = line.getNumber();
if (lineFilter.acceptLine(nextLine, number))
{
......@@ -91,11 +91,23 @@ public class DefaultParser<E> implements IParser<E>
E object = null;
try
{
if (tokens.length > headerLength)
if (tokens.length != headerLength)
{
String moreLessStr = tokens.length > headerLength ? "more" : "less";
StringBuilder lineStructure = new StringBuilder();
for (int i = 0; i < tokens.length; i++)
{
lineStructure.append(tokens[i]);
if (i + 1 < tokens.length)
{
lineStructure.append(" <TAB> ");
}
}
lineStructure.append(" <END_OF_LINE>");
throw new RuntimeException(String.format(
"Line <%s> has more columns (%s) than the header (%s)", number, String
.valueOf(tokens.length), String.valueOf(headerLength)));
"Line <%s> has %s columns (%s) than the header (%s):\n%s", number, moreLessStr,
String.valueOf(tokens.length), String.valueOf(headerLength), lineStructure
.toString()));
}
object = createObject(tokens);
} catch (final ParserException parserException)
......
......@@ -35,7 +35,7 @@ public interface IParser<E>
* @param headerLength number of columns in the header
* @return a <code>List</code> of elements.
*/
public List<E> parse(final Iterator<Line> lineIterator, final ILineFilter lineFilter, final long headerLength)
public List<E> parse(final Iterator<Line> lineIterator, final ILineFilter lineFilter, final int headerLength)
throws ParsingException;
/**
......
......@@ -97,7 +97,7 @@ public class TabFileLoader<T>
{
reader = new FileReader(file);
return load(reader);
} catch (IOException ex)
} catch (final IOException ex)
{
throw new EnvironmentFailureException(ex.getMessage());
} catch (final ParsingException ex)
......@@ -110,10 +110,10 @@ public class TabFileLoader<T>
}
}
List<T> load(Reader reader)
List<T> load(final Reader reader)
{
List<T> result = new ArrayList<T>();
Iterator<Line> lineIterator = createLineIterator(reader);
final List<T> result = new ArrayList<T>();
final Iterator<Line> lineIterator = createLineIterator(reader);
if (lineIterator.hasNext() == false)
{
return result;
......@@ -136,11 +136,11 @@ public class TabFileLoader<T>
final DefaultParser<T> parser = new DefaultParser<T>();
final String[] tokens = StringUtils.split(headerLine, "\t");
final long headerLength = tokens.length;
final int headerLength = tokens.length;
notUnique(tokens);
final IAliasPropertyMapper propertyMapper = new HeaderFilePropertyMapper(tokens);
parser.setObjectFactory(factory.createFactory(propertyMapper));
ILineFilter filter = AlwaysAcceptLineFilter.INSTANCE;
final ILineFilter filter = AlwaysAcceptLineFilter.INSTANCE;
if (previousLineHasColumnHeaders)
{
result.addAll(parser.parse(Arrays.asList(line).iterator(), filter, headerLength));
......@@ -149,10 +149,10 @@ public class TabFileLoader<T>
return result;
}
private Iterator<Line> createLineIterator(Reader reader)
private Iterator<Line> createLineIterator(final Reader reader)
{
final LineIterator lineIterator = IOUtils.lineIterator(reader);
Iterator<Line> iterator = new Iterator<Line>()
final Iterator<Line> iterator = new Iterator<Line>()
{
private int lineNumber;
......
......@@ -36,7 +36,7 @@ public final class DefaultParserTest
"Charles\tDarwin\tHumboldt Ave. 1865\t4242 Somewhere",
"Albert\tEinstein\tNewton Road 1905\t4711 Princton");
private final static long HEADER_LENGTH = 4;
private final static int HEADER_LENGTH = 4;
@Test
public final void testParseWithoutFactoryAndHeader()
......@@ -80,7 +80,7 @@ public final class DefaultParserTest
try
{
parser.parse(createLineIterator(), new HeaderLineFilter(2), HEADER_LENGTH);
} catch (ParsingException ex)
} catch (final ParsingException ex)
{
assertEquals("Creating an object with following tokens '[firstName, lastName, address, city]' failed.", ex
.getMessage());
......@@ -92,7 +92,7 @@ public final class DefaultParserTest
{
return new Iterator<Line>()
{
private Iterator<String> iterator = text.iterator();
private final Iterator<String> iterator = text.iterator();
private int lineNumber;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment