Skip to content

Commit

Permalink
[PDI-13787] Get Variables Timestamp Conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt Tucker committed Jun 23, 2016
1 parent 145dd42 commit 5e97a7e
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 40 deletions.
Expand Up @@ -29,15 +29,17 @@
import org.pentaho.di.core.Const; import org.pentaho.di.core.Const;
import org.pentaho.di.core.database.DatabaseMeta; import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettlePluginException;
import org.pentaho.di.core.exception.KettleStepException; import org.pentaho.di.core.exception.KettleStepException;
import org.pentaho.di.core.exception.KettleXMLException; import org.pentaho.di.core.exception.KettleXMLException;
import org.pentaho.di.core.injection.Injection; import org.pentaho.di.core.injection.Injection;
import org.pentaho.di.core.injection.InjectionDeep; import org.pentaho.di.core.injection.InjectionDeep;
import org.pentaho.di.core.injection.InjectionSupported; import org.pentaho.di.core.injection.InjectionSupported;
import org.pentaho.di.core.row.RowMeta; import org.pentaho.di.core.row.RowMeta;
import org.pentaho.di.core.row.RowMetaInterface; import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.ValueMeta;
import org.pentaho.di.core.row.ValueMetaInterface; import org.pentaho.di.core.row.ValueMetaInterface;
import org.pentaho.di.core.row.value.ValueMetaFactory;
import org.pentaho.di.core.row.value.ValueMetaString;
import org.pentaho.di.core.variables.VariableSpace; import org.pentaho.di.core.variables.VariableSpace;
import org.pentaho.di.core.xml.XMLHandler; import org.pentaho.di.core.xml.XMLHandler;
import org.pentaho.di.i18n.BaseMessages; import org.pentaho.di.i18n.BaseMessages;
Expand Down Expand Up @@ -75,6 +77,7 @@ public void setFieldDefinitions( FieldDefinition[] fieldDefinitions ) {
this.fieldDefinitions = fieldDefinitions; this.fieldDefinitions = fieldDefinitions;
} }


@Override
public void loadXML( Node stepnode, List<DatabaseMeta> databases, IMetaStore metaStore ) throws KettleXMLException { public void loadXML( Node stepnode, List<DatabaseMeta> databases, IMetaStore metaStore ) throws KettleXMLException {
readData( stepnode ); readData( stepnode );
} }
Expand All @@ -86,6 +89,7 @@ public void allocate( int count ) {
} }
} }


@Override
public Object clone() { public Object clone() {
GetVariableMeta retval = (GetVariableMeta) super.clone(); GetVariableMeta retval = (GetVariableMeta) super.clone();


Expand All @@ -110,14 +114,16 @@ private void readData( Node stepnode ) throws KettleXMLException {


fieldDefinitions[i].setFieldName( XMLHandler.getTagValue( fnode, "name" ) ); fieldDefinitions[i].setFieldName( XMLHandler.getTagValue( fnode, "name" ) );
fieldDefinitions[i].setVariableString( XMLHandler.getTagValue( fnode, "variable" ) ); fieldDefinitions[i].setVariableString( XMLHandler.getTagValue( fnode, "variable" ) );
fieldDefinitions[i].setFieldType( ValueMeta.getType( XMLHandler.getTagValue( fnode, "type" ) ) ); fieldDefinitions[i].setFieldType(
ValueMetaFactory.getIdForValueMeta( XMLHandler.getTagValue( fnode, "type" ) ) );
fieldDefinitions[i].setFieldFormat( XMLHandler.getTagValue( fnode, "format" ) ); fieldDefinitions[i].setFieldFormat( XMLHandler.getTagValue( fnode, "format" ) );
fieldDefinitions[i].setCurrency( XMLHandler.getTagValue( fnode, "currency" ) ); fieldDefinitions[i].setCurrency( XMLHandler.getTagValue( fnode, "currency" ) );
fieldDefinitions[i].setDecimal( XMLHandler.getTagValue( fnode, "decimal" ) ); fieldDefinitions[i].setDecimal( XMLHandler.getTagValue( fnode, "decimal" ) );
fieldDefinitions[i].setGroup( XMLHandler.getTagValue( fnode, "group" ) ); fieldDefinitions[i].setGroup( XMLHandler.getTagValue( fnode, "group" ) );
fieldDefinitions[i].setFieldLength( Const.toInt( XMLHandler.getTagValue( fnode, "length" ), -1 ) ); fieldDefinitions[i].setFieldLength( Const.toInt( XMLHandler.getTagValue( fnode, "length" ), -1 ) );
fieldDefinitions[i].setFieldPrecision( Const.toInt( XMLHandler.getTagValue( fnode, "precision" ), -1 ) ); fieldDefinitions[i].setFieldPrecision( Const.toInt( XMLHandler.getTagValue( fnode, "precision" ), -1 ) );
fieldDefinitions[i].setTrimType( ValueMeta.getTrimTypeByCode( XMLHandler.getTagValue( fnode, "trim_type" ) ) ); fieldDefinitions[i].setTrimType(
ValueMetaString.getTrimTypeByCode( XMLHandler.getTagValue( fnode, "trim_type" ) ) );


// Backward compatibility // Backward compatibility
// //
Expand All @@ -130,6 +136,7 @@ private void readData( Node stepnode ) throws KettleXMLException {
} }
} }


@Override
public void setDefault() { public void setDefault() {
int count = 0; int count = 0;


Expand All @@ -141,6 +148,7 @@ public void setDefault() {
} }
} }


@Override
public void getFields( RowMetaInterface inputRowMeta, String name, RowMetaInterface[] info, StepMeta nextStep, public void getFields( RowMetaInterface inputRowMeta, String name, RowMetaInterface[] info, StepMeta nextStep,
VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException { VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {
// Determine the maximum length... // Determine the maximum length...
Expand All @@ -158,7 +166,12 @@ public void getFields( RowMetaInterface inputRowMeta, String name, RowMetaInterf


RowMetaInterface row = new RowMeta(); RowMetaInterface row = new RowMeta();
for ( int i = 0; i < fieldDefinitions.length; i++ ) { for ( int i = 0; i < fieldDefinitions.length; i++ ) {
ValueMetaInterface v = new ValueMeta( fieldDefinitions[i].getFieldName(), fieldDefinitions[i].getFieldType() ); ValueMetaInterface v;
try {
v = ValueMetaFactory.createValueMeta( fieldDefinitions[i].getFieldName(), fieldDefinitions[i].getFieldType() );
} catch ( KettlePluginException e ) {
throw new KettleStepException( e );
}
int fieldLength = fieldDefinitions[i].getFieldLength(); int fieldLength = fieldDefinitions[i].getFieldLength();
if ( fieldLength < 0 ) { if ( fieldLength < 0 ) {
v.setLength( length ); v.setLength( length );
Expand All @@ -179,9 +192,10 @@ public void getFields( RowMetaInterface inputRowMeta, String name, RowMetaInterf
row.addValueMeta( v ); row.addValueMeta( v );
} }


inputRowMeta.mergeRowMeta( row ); inputRowMeta.mergeRowMeta( row, name );
} }


@Override
public String getXML() { public String getXML() {
StringBuilder retval = new StringBuilder( 300 ); StringBuilder retval = new StringBuilder( 300 );


Expand All @@ -191,19 +205,19 @@ public String getXML() {
if ( fieldName != null && fieldName.length() != 0 ) { if ( fieldName != null && fieldName.length() != 0 ) {
retval.append( " <field>" ).append( Const.CR ); retval.append( " <field>" ).append( Const.CR );
retval.append( " " ).append( XMLHandler.addTagValue( "name", fieldName ) ); retval.append( " " ).append( XMLHandler.addTagValue( "name", fieldName ) );
retval.append( " " ).append( XMLHandler.addTagValue( "variable", fieldDefinitions[i] retval.append( " " ).append( XMLHandler.addTagValue( "variable",
.getVariableString() ) ); fieldDefinitions[i].getVariableString() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "type", ValueMeta.getTypeDesc( fieldDefinitions[i] retval.append( " " ).append( XMLHandler.addTagValue( "type",
.getFieldType() ) ) ); ValueMetaFactory.getValueMetaName( fieldDefinitions[i].getFieldType() ) ) );
retval.append( " " ).append( XMLHandler.addTagValue( "format", fieldDefinitions[i].getFieldFormat() ) ); retval.append( " " ).append( XMLHandler.addTagValue( "format", fieldDefinitions[i].getFieldFormat() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "currency", fieldDefinitions[i].getCurrency() ) ); retval.append( " " ).append( XMLHandler.addTagValue( "currency", fieldDefinitions[i].getCurrency() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "decimal", fieldDefinitions[i].getDecimal() ) ); retval.append( " " ).append( XMLHandler.addTagValue( "decimal", fieldDefinitions[i].getDecimal() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "group", fieldDefinitions[i].getGroup() ) ); retval.append( " " ).append( XMLHandler.addTagValue( "group", fieldDefinitions[i].getGroup() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "length", fieldDefinitions[i].getFieldLength() ) ); retval.append( " " ).append( XMLHandler.addTagValue( "length", fieldDefinitions[i].getFieldLength() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "precision", fieldDefinitions[i] retval.append( " " ).append( XMLHandler.addTagValue( "precision", fieldDefinitions[i]
.getFieldPrecision() ) ); .getFieldPrecision() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "trim_type", ValueMeta.getTrimTypeCode( retval.append( " " ).append( XMLHandler.addTagValue( "trim_type",
fieldDefinitions[i].getTrimType() ) ) ); ValueMetaString.getTrimTypeCode( fieldDefinitions[i].getTrimType() ) ) );


retval.append( " </field>" ).append( Const.CR ); retval.append( " </field>" ).append( Const.CR );
} }
Expand All @@ -213,6 +227,7 @@ public String getXML() {
return retval.toString(); return retval.toString();
} }


@Override
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases )
throws KettleException { throws KettleException {
try { try {
Expand All @@ -223,16 +238,17 @@ public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, Lis
for ( int i = 0; i < nrfields; i++ ) { for ( int i = 0; i < nrfields; i++ ) {
fieldDefinitions[i].setFieldName( rep.getStepAttributeString( id_step, i, "field_name" ) ); fieldDefinitions[i].setFieldName( rep.getStepAttributeString( id_step, i, "field_name" ) );
fieldDefinitions[i].setVariableString( rep.getStepAttributeString( id_step, i, "field_variable" ) ); fieldDefinitions[i].setVariableString( rep.getStepAttributeString( id_step, i, "field_variable" ) );
fieldDefinitions[i].setFieldType( ValueMeta.getType( rep.getStepAttributeString( id_step, i, "field_type" ) ) ); fieldDefinitions[i].setFieldType(
ValueMetaFactory.getIdForValueMeta( rep.getStepAttributeString( id_step, i, "field_type" ) ) );


fieldDefinitions[i].setFieldFormat( rep.getStepAttributeString( id_step, i, "field_format" ) ); fieldDefinitions[i].setFieldFormat( rep.getStepAttributeString( id_step, i, "field_format" ) );
fieldDefinitions[i].setCurrency( rep.getStepAttributeString( id_step, i, "field_currency" ) ); fieldDefinitions[i].setCurrency( rep.getStepAttributeString( id_step, i, "field_currency" ) );
fieldDefinitions[i].setDecimal( rep.getStepAttributeString( id_step, i, "field_decimal" ) ); fieldDefinitions[i].setDecimal( rep.getStepAttributeString( id_step, i, "field_decimal" ) );
fieldDefinitions[i].setGroup( rep.getStepAttributeString( id_step, i, "field_group" ) ); fieldDefinitions[i].setGroup( rep.getStepAttributeString( id_step, i, "field_group" ) );
fieldDefinitions[i].setFieldLength( (int) rep.getStepAttributeInteger( id_step, i, "field_length" ) ); fieldDefinitions[i].setFieldLength( (int) rep.getStepAttributeInteger( id_step, i, "field_length" ) );
fieldDefinitions[i].setFieldPrecision( (int) rep.getStepAttributeInteger( id_step, i, "field_precision" ) ); fieldDefinitions[i].setFieldPrecision( (int) rep.getStepAttributeInteger( id_step, i, "field_precision" ) );
fieldDefinitions[i].setTrimType( ValueMeta.getTrimTypeByCode( rep.getStepAttributeString( id_step, i, fieldDefinitions[i].setTrimType(
"field_trim_type" ) ) ); ValueMetaString.getTrimTypeByCode( rep.getStepAttributeString( id_step, i, "field_trim_type" ) ) );


// Backward compatibility // Backward compatibility
// //
Expand All @@ -247,6 +263,7 @@ public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, Lis
} }
} }


@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
throws KettleException { throws KettleException {
try { try {
Expand All @@ -257,17 +274,17 @@ public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transform
rep.saveStepAttribute( id_transformation, id_step, i, "field_name", fieldName ); rep.saveStepAttribute( id_transformation, id_step, i, "field_name", fieldName );
rep.saveStepAttribute( id_transformation, id_step, i, "field_variable", fieldDefinitions[i] rep.saveStepAttribute( id_transformation, id_step, i, "field_variable", fieldDefinitions[i]
.getVariableString() ); .getVariableString() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_type", ValueMeta.getTypeDesc( fieldDefinitions[i] rep.saveStepAttribute( id_transformation, id_step, i, "field_type",
.getFieldType() ) ); ValueMetaFactory.getValueMetaName( fieldDefinitions[i].getFieldType() ) );
rep.saveStepAttribute( id_transformation, id_step, i, "field_format", fieldDefinitions[i].getFieldFormat() ); rep.saveStepAttribute( id_transformation, id_step, i, "field_format", fieldDefinitions[i].getFieldFormat() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_currency", fieldDefinitions[i].getCurrency() ); rep.saveStepAttribute( id_transformation, id_step, i, "field_currency", fieldDefinitions[i].getCurrency() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_decimal", fieldDefinitions[i].getDecimal() ); rep.saveStepAttribute( id_transformation, id_step, i, "field_decimal", fieldDefinitions[i].getDecimal() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_group", fieldDefinitions[i].getGroup() ); rep.saveStepAttribute( id_transformation, id_step, i, "field_group", fieldDefinitions[i].getGroup() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_length", fieldDefinitions[i].getFieldLength() ); rep.saveStepAttribute( id_transformation, id_step, i, "field_length", fieldDefinitions[i].getFieldLength() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_precision", fieldDefinitions[i] rep.saveStepAttribute( id_transformation, id_step, i, "field_precision", fieldDefinitions[i]
.getFieldPrecision() ); .getFieldPrecision() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_trim_type", ValueMeta.getTrimTypeCode( rep.saveStepAttribute( id_transformation, id_step, i, "field_trim_type",
fieldDefinitions[i].getTrimType() ) ); ValueMetaString.getTrimTypeCode( fieldDefinitions[i].getTrimType() ) );
} }
} }
} catch ( Exception e ) { } catch ( Exception e ) {
Expand All @@ -276,6 +293,7 @@ public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transform


} }


@Override
public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta, RowMetaInterface prev, public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta, RowMetaInterface prev,
String[] input, String[] output, RowMetaInterface info, VariableSpace space, Repository repository, String[] input, String[] output, RowMetaInterface info, VariableSpace space, Repository repository,
IMetaStore metaStore ) { IMetaStore metaStore ) {
Expand All @@ -297,11 +315,13 @@ public void check( List<CheckResultInterface> remarks, TransMeta transMeta, Step
} }
} }


@Override
public StepInterface getStep( StepMeta stepMeta, StepDataInterface stepDataInterface, int cnr, TransMeta transMeta, public StepInterface getStep( StepMeta stepMeta, StepDataInterface stepDataInterface, int cnr, TransMeta transMeta,
Trans trans ) { Trans trans ) {
return new GetVariable( stepMeta, stepDataInterface, cnr, transMeta, trans ); return new GetVariable( stepMeta, stepDataInterface, cnr, transMeta, trans );
} }


@Override
public StepDataInterface getStepData() { public StepDataInterface getStepData() {
return new GetVariableData(); return new GetVariableData();
} }
Expand Down Expand Up @@ -483,6 +503,7 @@ public void setTrimType( int trimType ) {
this.trimType = trimType; this.trimType = trimType;
} }


@Override
public FieldDefinition clone() { public FieldDefinition clone() {
try { try {
return (FieldDefinition) super.clone(); return (FieldDefinition) super.clone();
Expand Down
Expand Up @@ -21,6 +21,10 @@
******************************************************************************/ ******************************************************************************/
package org.pentaho.di.trans.steps.getvariable; package org.pentaho.di.trans.steps.getvariable;


import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
Expand All @@ -29,38 +33,42 @@


import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.EqualsBuilder;
import org.junit.Before; import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.pentaho.di.core.KettleEnvironment; import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException; import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettleStepException;
import org.pentaho.di.core.plugins.PluginRegistry; import org.pentaho.di.core.plugins.PluginRegistry;
import org.pentaho.di.core.row.RowMeta;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.ValueMetaInterface; import org.pentaho.di.core.row.ValueMetaInterface;
import org.pentaho.di.trans.step.StepMetaInterface; import org.pentaho.di.core.row.value.ValueMetaTimestamp;
import org.pentaho.di.core.variables.Variables;
import org.pentaho.di.trans.steps.getvariable.GetVariableMeta.FieldDefinition; import org.pentaho.di.trans.steps.getvariable.GetVariableMeta.FieldDefinition;
import org.pentaho.di.trans.steps.loadsave.LoadSaveTester; import org.pentaho.di.trans.steps.loadsave.LoadSaveTester;
import org.pentaho.di.trans.steps.loadsave.initializer.InitializerInterface; import org.pentaho.di.trans.steps.loadsave.initializer.InitializerInterface;
import org.pentaho.di.trans.steps.loadsave.validator.ArrayLoadSaveValidator; import org.pentaho.di.trans.steps.loadsave.validator.ArrayLoadSaveValidator;
import org.pentaho.di.trans.steps.loadsave.validator.FieldLoadSaveValidator; import org.pentaho.di.trans.steps.loadsave.validator.FieldLoadSaveValidator;


public class GetVariableMetaTest implements InitializerInterface<StepMetaInterface> { public class GetVariableMetaTest implements InitializerInterface<GetVariableMeta> {
LoadSaveTester loadSaveTester; LoadSaveTester<GetVariableMeta> loadSaveTester;
Class<GetVariableMeta> testMetaClass = GetVariableMeta.class; Class<GetVariableMeta> testMetaClass = GetVariableMeta.class;


@Before @BeforeClass
public void setUpLoadSave() throws Exception { public static void setUpBeforeClass() throws KettleException {
KettleEnvironment.init(); KettleEnvironment.init();
PluginRegistry.init( true ); PluginRegistry.init( true );
}

@Before
public void setUpLoadSave() throws Exception {
List<String> attributes = Arrays.asList( "fieldDefinitions" ); List<String> attributes = Arrays.asList( "fieldDefinitions" );


Map<String, String> getterMap = new HashMap<String, String>() { Map<String, String> getterMap = new HashMap<String, String>();
{ getterMap.put( "fieldDefinitions", "getFieldDefinitions" );
put( "fieldDefinitions", "getFieldDefinitions" );
} Map<String, String> setterMap = new HashMap<String, String>();
}; setterMap.put( "fieldDefinitions", "setFieldDefinitions" );
Map<String, String> setterMap = new HashMap<String, String>() {
{
put( "fieldDefinitions", "setFieldDefinitions" );
}
};


FieldDefinition fieldDefinition = new FieldDefinition(); FieldDefinition fieldDefinition = new FieldDefinition();
fieldDefinition.setFieldName( "fieldName" ); fieldDefinition.setFieldName( "fieldName" );
Expand All @@ -72,7 +80,7 @@ public void setUpLoadSave() throws Exception {
fieldDefinition.setVariableString( "variableString" ); fieldDefinition.setVariableString( "variableString" );


FieldLoadSaveValidator<FieldDefinition[]> fieldDefinitionLoadSaveValidator = FieldLoadSaveValidator<FieldDefinition[]> fieldDefinitionLoadSaveValidator =
new ArrayLoadSaveValidator<FieldDefinition>( new FieldDefinitionLoadSaveValidator( fieldDefinition ), 5 ); new ArrayLoadSaveValidator<FieldDefinition>( new FieldDefinitionLoadSaveValidator( fieldDefinition ), 5 );


Map<String, FieldLoadSaveValidator<?>> attrValidatorMap = new HashMap<String, FieldLoadSaveValidator<?>>(); Map<String, FieldLoadSaveValidator<?>> attrValidatorMap = new HashMap<String, FieldLoadSaveValidator<?>>();
attrValidatorMap.put( "fieldName", fieldDefinitionLoadSaveValidator ); attrValidatorMap.put( "fieldName", fieldDefinitionLoadSaveValidator );
Expand All @@ -81,22 +89,42 @@ public void setUpLoadSave() throws Exception {
typeValidatorMap.put( FieldDefinition[].class.getCanonicalName(), fieldDefinitionLoadSaveValidator ); typeValidatorMap.put( FieldDefinition[].class.getCanonicalName(), fieldDefinitionLoadSaveValidator );


loadSaveTester = loadSaveTester =
new LoadSaveTester( testMetaClass, attributes, Collections.emptyList(), Collections.emptyList(), getterMap, new LoadSaveTester<>( testMetaClass, attributes, Collections.emptyList(), Collections.emptyList(), getterMap,
setterMap, attrValidatorMap, typeValidatorMap, this ); setterMap, attrValidatorMap, typeValidatorMap, this );
} }


// Call the allocate method on the LoadSaveTester meta class // Call the allocate method on the LoadSaveTester meta class
public void modify( StepMetaInterface someMeta ) { @Override
if ( someMeta instanceof GetVariableMeta ) { public void modify( GetVariableMeta someMeta ) {
( (GetVariableMeta) someMeta ).allocate( 5 ); someMeta.allocate( 5 );
}
} }


@Test @Test
public void testSerialization() throws KettleException { public void testSerialization() throws KettleException {
loadSaveTester.testSerialization(); loadSaveTester.testSerialization();
} }


@Test
public void testGetValueMetaPlugin() throws KettleStepException {
GetVariableMeta meta = new GetVariableMeta();
meta.setDefault();

FieldDefinition field = new FieldDefinition();
field.setFieldName( "outputField" );
field.setVariableString( String.valueOf( 2000000L ) );
field.setFieldType( ValueMetaInterface.TYPE_TIMESTAMP );
meta.setFieldDefinitions( new FieldDefinition[]{ field } );

RowMetaInterface rowMeta = new RowMeta();
meta.getFields( rowMeta, "stepName", null, null, new Variables(), null, null );

assertNotNull( rowMeta );
assertEquals( 1, rowMeta.size() );
assertEquals( "outputField", rowMeta.getFieldNames()[0] );
assertEquals( ValueMetaInterface.TYPE_TIMESTAMP, rowMeta.getValueMeta( 0 ).getType() );
assertTrue( rowMeta.getValueMeta( 0 ) instanceof ValueMetaTimestamp );
}

public static class FieldDefinitionLoadSaveValidator implements FieldLoadSaveValidator<FieldDefinition> { public static class FieldDefinitionLoadSaveValidator implements FieldLoadSaveValidator<FieldDefinition> {


private final FieldDefinition defaultValue; private final FieldDefinition defaultValue;
Expand Down

0 comments on commit 5e97a7e

Please sign in to comment.