FieldsMapping createFieldMapping( String fileName, CsvInputMeta csvInputMeta ) throws KettleException { FieldsMapping mapping = null; if ( csvInputMeta.isHeaderPresent() ) { String[] fieldNames = readFieldNamesFromFile( fileName, csvInputMeta ); mapping = NamedFieldsMapping.mapping( fieldNames, fieldNames( csvInputMeta ) ); } else { int fieldsCount = csvInputMeta.getInputFields() == null ? 0 : csvInputMeta.getInputFields().length; mapping = UnnamedFieldsMapping.mapping( fieldsCount ); } return mapping; }
@Test public void fieldMetaIndexWithUnexistingField_nonUniqueColumnNames() { NamedFieldsMapping mapping = NamedFieldsMapping.mapping( new String[] { "Object", "Test", "Object" }, new String[] { "Object", "Test" } ); assertEquals( FieldsMapping.FIELD_DOES_NOT_EXIST, mapping.fieldMetaIndex( 2 ) ); }
@Test public void mapping() { NamedFieldsMapping mapping = NamedFieldsMapping.mapping( new String[] { "FIRST", "SECOND", "THIRD" }, new String[] { "SECOND", "THIRD" } ); assertEquals( 0, mapping.fieldMetaIndex( 1 ) ); }
@Test public void mappingWithNonUniqueColumnNames() { NamedFieldsMapping mapping = NamedFieldsMapping.mapping( new String[] { "Object", "Test", "Object" }, new String[] { "Object", "Test", "Object" } ); assertEquals( 0, mapping.fieldMetaIndex( 0 ) ); assertEquals( 2, mapping.fieldMetaIndex( 2 ) ); }
@Test public void mappingWithNonMatchingColumnNames() { NamedFieldsMapping mapping = NamedFieldsMapping.mapping( new String[] {"One", "Two", "Three" }, new String[] { "A", "B", "C" } ); assertEquals( 0, mapping.fieldMetaIndex( 0 ) ); // One -> A assertEquals( 1, mapping.fieldMetaIndex( 1 ) ); // Two -> B NamedFieldsMapping.mapping( new String[] {"A", "B", "A" }, new String[] { "A", "A" } ); assertEquals( 0, mapping.fieldMetaIndex( 0 ) ); // A -> A assertEquals( FieldsMapping.FIELD_DOES_NOT_EXIST, mapping.fieldMetaIndex( 1 ) ); // B -> undefined NamedFieldsMapping.mapping( new String[] {"A", "B", "A" }, new String[] { "A", "X", "B", "Z" } ); assertEquals( 0, mapping.fieldMetaIndex( 0 ) ); // A -> A assertEquals( 2, mapping.fieldMetaIndex( 1 ) ); // B -> B NamedFieldsMapping.mapping( new String[] {"A", "B", "A" }, new String[] { "A", "A", "C" } ); assertEquals( 0, mapping.fieldMetaIndex( 0 ) ); // A -> A assertEquals( 2, mapping.fieldMetaIndex( 1 ) ); // B -> C NamedFieldsMapping.mapping( new String[] {"A", "B", "C", "D", "E" }, new String[] { "X", "C", "Y", "B" } );