Skip to content

Commit

Permalink
[BACKLOG-8270] - Add Metadata Injection (MDI) support to the If field…
Browse files Browse the repository at this point in the history
… value is null step (#2568)

[BACKLOG-8270] - Add Metadata Injection (MDI) support to the If field value is null step - test
  • Loading branch information
AndreyBurikhin authored and mdamour1976 committed May 30, 2016
1 parent 729c544 commit 9efea45
Show file tree
Hide file tree
Showing 8 changed files with 498 additions and 313 deletions.
55 changes: 29 additions & 26 deletions engine/src/org/pentaho/di/trans/steps/ifnull/IfNull.java
Expand Up @@ -2,7 +2,7 @@
* *
* Pentaho Data Integration * Pentaho Data Integration
* *
* Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com
* *
******************************************************************************* *******************************************************************************
* *
Expand Down Expand Up @@ -83,50 +83,53 @@ public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws


if ( meta.isSelectFields() ) { if ( meta.isSelectFields() ) {
// Consider only selected fields // Consider only selected fields
if ( meta.getFieldName() != null && meta.getFieldName().length > 0 ) { if ( meta.getFields() != null && meta.getFields().length > 0 ) {
data.fieldnrs = new int[meta.getFieldName().length]; int fieldsLength = meta.getFields().length;
data.defaultValues = new String[meta.getFieldName().length]; data.fieldnrs = new int[fieldsLength];
data.defaultMasks = new String[meta.getFieldName().length]; data.defaultValues = new String[fieldsLength];
data.setEmptyString = new boolean[meta.getFieldName().length]; data.defaultMasks = new String[fieldsLength];

data.setEmptyString = new boolean[fieldsLength];
for ( int i = 0; i < meta.getFieldName().length; i++ ) {
data.fieldnrs[i] = data.outputRowMeta.indexOfValue( meta.getFieldName()[i] ); for ( int i = 0; i < meta.getFields().length; i++ ) {
data.fieldnrs[i] = data.outputRowMeta.indexOfValue( meta.getFields()[i].getFieldName() );
if ( data.fieldnrs[i] < 0 ) { if ( data.fieldnrs[i] < 0 ) {
logError( BaseMessages.getString( PKG, "IfNull.Log.CanNotFindField", meta.getFieldName()[i] ) ); logError( BaseMessages.getString( PKG, "IfNull.Log.CanNotFindField", meta.getFields()[i]
throw new KettleException( BaseMessages.getString( PKG, "IfNull.Log.CanNotFindField", meta .getFieldName() ) );
.getFieldName()[i] ) ); throw new KettleException( BaseMessages.getString( PKG, "IfNull.Log.CanNotFindField", meta.getFields()[i]
.getFieldName() ) );
} }
data.defaultValues[i] = environmentSubstitute( meta.getReplaceValue()[i] ); data.defaultValues[i] = environmentSubstitute( meta.getFields()[i].getReplaceValue() );
data.defaultMasks[i] = environmentSubstitute( meta.getReplaceMask()[i] ); data.defaultMasks[i] = environmentSubstitute( meta.getFields()[i].getReplaceMask() );
data.setEmptyString[i] = meta.isSetEmptyString()[i]; data.setEmptyString[i] = meta.getFields()[i].isSetEmptyString();
} }
} else { } else {
throw new KettleException( BaseMessages.getString( PKG, "IfNull.Log.SelectFieldsEmpty" ) ); throw new KettleException( BaseMessages.getString( PKG, "IfNull.Log.SelectFieldsEmpty" ) );
} }
} else if ( meta.isSelectValuesType() ) { } else if ( meta.isSelectValuesType() ) {
// Consider only select value types // Consider only select value types
if ( meta.getTypeName() != null && meta.getTypeName().length > 0 ) { if ( meta.getValueTypes() != null && meta.getValueTypes().length > 0 ) {
// return the real default values // return the real default values
data.defaultValues = new String[meta.getTypeName().length]; int typeLength = meta.getValueTypes().length;
data.defaultMasks = new String[meta.getTypeName().length]; data.defaultValues = new String[typeLength];
data.setEmptyString = new boolean[meta.getTypeName().length]; data.defaultMasks = new String[typeLength];
data.setEmptyString = new boolean[typeLength];


// return all type codes // return all type codes
HashSet<String> AlllistTypes = new HashSet<String>(); HashSet<String> AlllistTypes = new HashSet<String>();
for ( int i = 0; i < ValueMetaInterface.typeCodes.length; i++ ) { for ( int i = 0; i < ValueMetaInterface.typeCodes.length; i++ ) {
AlllistTypes.add( ValueMetaInterface.typeCodes[i] ); AlllistTypes.add( ValueMetaInterface.typeCodes[i] );
} }


for ( int i = 0; i < meta.getTypeName().length; i++ ) { for ( int i = 0; i < meta.getValueTypes().length; i++ ) {
if ( !AlllistTypes.contains( meta.getTypeName()[i] ) ) { if ( !AlllistTypes.contains( meta.getValueTypes()[i].getTypeName() ) ) {
throw new KettleException( BaseMessages.getString( PKG, "IfNull.Log.CanNotFindValueType", meta throw new KettleException( BaseMessages.getString( PKG, "IfNull.Log.CanNotFindValueType", meta
.getTypeName()[i] ) ); .getValueTypes()[i].getTypeName() ) );
} }


data.ListTypes.put( meta.getTypeName()[i], i ); data.ListTypes.put( meta.getValueTypes()[i].getTypeName(), i );
data.defaultValues[i] = environmentSubstitute( meta.getTypeReplaceValue()[i] ); data.defaultValues[i] = environmentSubstitute( meta.getValueTypes()[i].getTypereplaceValue() );
data.defaultMasks[i] = environmentSubstitute( meta.getTypeReplaceMask()[i] ); data.defaultMasks[i] = environmentSubstitute( meta.getValueTypes()[i].getTypereplaceMask() );
data.setEmptyString[i] = meta.isSetTypeEmptyString()[i]; data.setEmptyString[i] = meta.getValueTypes()[i].isSetTypeEmptyString();
} }


HashSet<Integer> fieldsSelectedIndex = new HashSet<Integer>(); HashSet<Integer> fieldsSelectedIndex = new HashSet<Integer>();
Expand Down

0 comments on commit 9efea45

Please sign in to comment.