tokenizer.setNames(this.names.toArray(new String[this.names.size()]));
@Test public void testConcurrentUsage() throws Exception { final BeanWrapperFieldSetMapper<GreenBean> mapper = new BeanWrapperFieldSetMapper<>(); mapper.setStrict(true); mapper.setTargetType(GreenBean.class); // mapper.setDistanceLimit(0); final DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); String[] names = { "blue", "green" }; lineTokenizer.setNames(names); ExecutorService executorService = Executors.newFixedThreadPool(5); Collection<Future<Boolean>> results = new ArrayList<>(); for (int i = 0; i < 10; i++) { Future<Boolean> result = executorService.submit(new Callable<Boolean>() { @Override public Boolean call() throws Exception { for (int i = 0; i < 10; i++) { GreenBean bean = mapper.mapFieldSet(lineTokenizer.tokenize("blue,green")); Assert.assertEquals("green", bean.getGreen()); } return true; } }); results.add(result); } for (Future<Boolean> future : results) { assertTrue(future.get()); } }
tokenizer.setNames(line.split(",")); tokenizer.setStrict(false);
tokenizer.setNames(line.split(",")); tokenizer.setStrict(false);
@Test public void testTooFewNamesNotStrict() { tokenizer.setNames(new String[] {"A", "B"}); tokenizer.setStrict(false); FieldSet tokens = tokenizer.tokenize("a,b,c"); assertTrue(TOKEN_MATCHES, tokens.readString(0).equals("a")); assertTrue(TOKEN_MATCHES, tokens.readString(1).equals("b")); }
@Test public void testTooManyNamesNotStrict() { tokenizer.setNames(new String[] {"A", "B", "C", "D","E"}); tokenizer.setStrict( false ); FieldSet tokens = tokenizer.tokenize("a,b,c"); assertTrue(TOKEN_MATCHES, tokens.readString(0).equals("a")); assertTrue(TOKEN_MATCHES, tokens.readString(1).equals("b")); assertTrue(TOKEN_MATCHES, tokens.readString(2).equals("c")); assertTrue(TOKEN_MATCHES, tokens.readString(3).equals("")); assertTrue(TOKEN_MATCHES, tokens.readString(4).equals("")); }
@Test public void testNames() { tokenizer.setNames(new String[] {"A", "B", "C"}); FieldSet line = tokenizer.tokenize("a,b,c"); assertEquals(3, line.getFieldCount()); assertEquals("a", line.readString("A")); }
@Test(expected=IncorrectTokenCountException.class) public void testTokenizeWithIncludedFieldsAndTooFewNames() { tokenizer.setIncludedFields(new int[] {1,2}); tokenizer.setNames(new String[] {"foo"}); FieldSet line = tokenizer.tokenize("\"a\",\"b\",\"c\",\"d\""); assertEquals(2, line.getFieldCount()); assertEquals("c", line.readString("bar")); }
@Test public void testTokenizeWithIncludedFieldsAndNames() { tokenizer.setIncludedFields(new int[] {1,2}); tokenizer.setNames(new String[] {"foo", "bar"}); FieldSet line = tokenizer.tokenize("\"a\",\"b\",\"c\",\"d\""); assertEquals(2, line.getFieldCount()); assertEquals("c", line.readString("bar")); }
@Test(expected=IncorrectTokenCountException.class) public void testTokenizeWithIncludedFieldsAndTooManyNames() { tokenizer.setIncludedFields(new int[] {1,2}); tokenizer.setNames(new String[] {"foo", "bar", "spam"}); FieldSet line = tokenizer.tokenize("\"a\",\"b\",\"c\",\"d\""); assertEquals(2, line.getFieldCount()); assertEquals("c", line.readString("bar")); }
@Test public void testEmptyLineWithNames(){ tokenizer.setNames(new String[]{"A", "B"}); try{ tokenizer.tokenize(""); } catch(IncorrectTokenCountException ex){ assertEquals(2, ex.getExpectedCount()); assertEquals(0, ex.getActualCount()); assertEquals("", ex.getInput()); } }
@Test public void testTooManyNames() { tokenizer.setNames(new String[] {"A", "B", "C", "D"}); try{ tokenizer.tokenize("a,b,c"); } catch(IncorrectTokenCountException e){ assertEquals(4, e.getExpectedCount()); assertEquals(3, e.getActualCount()); assertEquals("a,b,c", e.getInput()); } }
@Test(expected = NotWritablePropertyException.class) public void testFuzzyMatchingWithKeyCandidateCollision() throws BindException { BeanWrapperFieldSetMapper<GreenBean> mapper = new BeanWrapperFieldSetMapper<>(); mapper.setStrict(true); mapper.setTargetType(GreenBean.class); DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); String[] names = { "brown", "green", "great", "groin", "braun" }; lineTokenizer.setNames(names); GreenBean bean = mapper.mapFieldSet(lineTokenizer.tokenize("brown,green,great,groin,braun")); Assert.assertEquals("green", bean.getGreen()); }
@Test public void testTooFewNames() { tokenizer.setNames(new String[] {"A", "B"}); try { tokenizer.tokenize("a,b,c"); fail("Expected IncorrectTokenCountException"); } catch (IncorrectTokenCountException e) { assertEquals(2, e.getExpectedCount()); assertEquals(3, e.getActualCount()); assertEquals("a,b,c", e.getInput()); } }
@Test public void testFuzzyMatchingWithLowerLimit() throws BindException { BeanWrapperFieldSetMapper<GreenBean> mapper = new BeanWrapperFieldSetMapper<>(); mapper.setDistanceLimit(0); mapper.setStrict(false); mapper.setTargetType(GreenBean.class); DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); String[] names = { "brown", "green", "great", "groin", "braun" }; lineTokenizer.setNames(names); GreenBean bean = mapper.mapFieldSet(lineTokenizer.tokenize("brown,green,great,groin,braun")); Assert.assertEquals("green", bean.getGreen()); }
@Test public void testFuzzyMatchingWithPropertyCollision() throws BindException { BeanWrapperFieldSetMapper<BlueBean> mapper = new BeanWrapperFieldSetMapper<>(); mapper.setStrict(true); mapper.setTargetType(BlueBean.class); DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); String[] names = { "blue" }; lineTokenizer.setNames(names); BlueBean bean = mapper.mapFieldSet(lineTokenizer.tokenize("blue")); // An exact match always wins... Assert.assertEquals("blue", bean.getBlue()); Assert.assertEquals(null, bean.getBleu()); }
private LineTokenizer getTokenizer(String line){ this.columnNames = line.split(delimiter); DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); lineTokenizer.setQuoteCharacter(quoteCharacter); lineTokenizer.setDelimiter(delimiter); lineTokenizer.setStrict(false); lineTokenizer.setNames(columnNames); addColumnNames(); return lineTokenizer; }
@Bean public LineMapper<Partner> lineMapper(){ DefaultLineMapper<Partner> lineMapper = new DefaultLineMapper<Partner>(); DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); lineTokenizer.setNames(new String[]{"name","email","gender"}); lineTokenizer.setIncludedFields(new int[]{0,2,3}); BeanWrapperFieldSetMapper<Partner> fieldSetMapper = new BeanWrapperFieldSetMapper<Partner>(); fieldSetMapper.setTargetType(Partner.class); lineMapper.setLineTokenizer(lineTokenizer); lineMapper.setFieldSetMapper(fieldSetMapper); return lineMapper; }
@Bean public LineMapper<Partner> lineMapper(){ DefaultLineMapper<Partner> lineMapper = new DefaultLineMapper<Partner>(); DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); lineTokenizer.setNames(new String[]{"name","email"}); lineTokenizer.setIncludedFields(new int[]{0,2}); BeanWrapperFieldSetMapper<Partner> fieldSetMapper = new BeanWrapperFieldSetMapper<Partner>(); fieldSetMapper.setTargetType(Partner.class); lineMapper.setLineTokenizer(lineTokenizer); lineMapper.setFieldSetMapper(fieldSetMapper); return lineMapper; }
@Bean public LineMapper<Partner> lineMapper(){ DefaultLineMapper<Partner> lineMapper = new DefaultLineMapper<Partner>(); DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer(); lineTokenizer.setNames(new String[]{"name","email","gender"}); lineTokenizer.setIncludedFields(new int[]{0,2,3}); BeanWrapperFieldSetMapper<Partner> fieldSetMapper = new BeanWrapperFieldSetMapper<Partner>(); fieldSetMapper.setTargetType(Partner.class); lineMapper.setLineTokenizer(lineTokenizer); lineMapper.setFieldSetMapper(fieldSetMapper); return lineMapper; }