Skip to content

Commit

Permalink
[PDI-10290] XML Well Formed Job Entry Test
Browse files Browse the repository at this point in the history
Added a LoadSave test and getter/setter methods
  • Loading branch information
Matt Tucker committed Jun 5, 2015
1 parent 58c491c commit c33f08a
Show file tree
Hide file tree
Showing 3 changed files with 154 additions and 37 deletions.
Expand Up @@ -2,7 +2,7 @@
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com
* Copyright (C) 2002-2015 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
Expand Down Expand Up @@ -73,18 +73,22 @@
public class JobEntryXMLWellFormed extends JobEntryBase implements Cloneable, JobEntryInterface {
private static Class<?> PKG = JobEntryXMLWellFormed.class; // for i18n purposes, needed by Translator2!!

public String SUCCESS_IF_AT_LEAST_X_FILES_WELL_FORMED = "success_when_at_least";
public String SUCCESS_IF_BAD_FORMED_FILES_LESS = "success_if_bad_formed_files_less";
public String SUCCESS_IF_NO_ERRORS = "success_if_no_errors";
public static String SUCCESS_IF_AT_LEAST_X_FILES_WELL_FORMED = "success_when_at_least";
public static String SUCCESS_IF_BAD_FORMED_FILES_LESS = "success_if_bad_formed_files_less";
public static String SUCCESS_IF_NO_ERRORS = "success_if_no_errors";

public String ADD_ALL_FILENAMES = "all_filenames";
public String ADD_WELL_FORMED_FILES_ONLY = "only_well_formed_filenames";
public String ADD_BAD_FORMED_FILES_ONLY = "only_bad_formed_filenames";
public static String ADD_ALL_FILENAMES = "all_filenames";
public static String ADD_WELL_FORMED_FILES_ONLY = "only_well_formed_filenames";
public static String ADD_BAD_FORMED_FILES_ONLY = "only_bad_formed_filenames";

@Deprecated
public boolean arg_from_previous;
@Deprecated
public boolean include_subfolders;

@Deprecated
public String[] source_filefolder;
@Deprecated
public String[] wildcard;
private String nr_errors_less_than;
private String success_condition;
Expand Down Expand Up @@ -120,24 +124,24 @@ public Object clone() {
}

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

retval.append( super.getXML() );
retval.append( " " ).append( XMLHandler.addTagValue( "arg_from_previous", arg_from_previous ) );
retval.append( " " ).append( XMLHandler.addTagValue( "include_subfolders", include_subfolders ) );
retval.append( " " ).append( XMLHandler.addTagValue( "nr_errors_less_than", nr_errors_less_than ) );
retval.append( " " ).append( XMLHandler.addTagValue( "success_condition", success_condition ) );
retval.append( " " ).append( XMLHandler.addTagValue( "resultfilenames", resultfilenames ) );
retval.append( " <fields>" ).append( Const.CR );
retval.append( " " ).append( XMLHandler.openTag( "fields" ) ).append( Const.CR );
if ( source_filefolder != null ) {
for ( int i = 0; i < source_filefolder.length; i++ ) {
retval.append( " <field>" ).append( Const.CR );
retval.append( " " ).append( XMLHandler.openTag( "field" ) ).append( Const.CR );
retval.append( " " ).append( XMLHandler.addTagValue( "source_filefolder", source_filefolder[i] ) );
retval.append( " " ).append( XMLHandler.addTagValue( "wildcard", wildcard[i] ) );
retval.append( " </field>" ).append( Const.CR );
retval.append( " " ).append( XMLHandler.closeTag( "field" ) ).append( Const.CR );
}
}
retval.append( " </fields>" ).append( Const.CR );
retval.append( " " ).append( XMLHandler.closeTag( "fields" ) ).append( Const.CR );

return retval.toString();
}
Expand Down Expand Up @@ -582,10 +586,18 @@ private boolean GetFileWildcard( String selectedfile, String wildcard ) {
return getIt;
}

public boolean isIncludeSubfolders() {
return include_subfolders;
}

public void setIncludeSubfolders( boolean include_subfoldersin ) {
this.include_subfolders = include_subfoldersin;
}

public boolean isArgFromPrevious() {
return arg_from_previous;
}

public void setArgFromPrevious( boolean argfrompreviousin ) {
this.arg_from_previous = argfrompreviousin;
}
Expand All @@ -594,6 +606,22 @@ public void setNrErrorsLessThan( String nr_errors_less_than ) {
this.nr_errors_less_than = nr_errors_less_than;
}

public String[] getSourceFileFolders() {
return source_filefolder;
}

public void setSourceFileFolders( String[] filefolders ) {
this.source_filefolder = filefolders;
}

public String[] getSourceWildcards() {
return wildcard;
}

public void setSourceWildcards( String[] wildcards ) {
this.wildcard = wildcards;
}

public String getNrErrorsLessThan() {
return nr_errors_less_than;
}
Expand Down
@@ -0,0 +1,87 @@
/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2015 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/

package org.pentaho.di.job.entries.xmlwellformed;

import static java.util.Arrays.asList;

import java.util.List;
import java.util.Map;

import org.junit.BeforeClass;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.job.entry.loadSave.JobEntryLoadSaveTestSupport;
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.StringLoadSaveValidator;

public class JobEntryXMLWellFormedLoadSaveTest extends JobEntryLoadSaveTestSupport<JobEntryXMLWellFormed> {
@BeforeClass
public static void setupClass() throws KettleException {
KettleEnvironment.init();
}

@Override
protected Map<String, FieldLoadSaveValidator<?>> createAttributeValidatorsMap() {
return toMap(
"source_filefolder", new ArrayLoadSaveValidator<String>( new StringLoadSaveValidator(), 50 ),
"wildcard", new ArrayLoadSaveValidator<String>( new StringLoadSaveValidator(), 50 ) );
}

@Override
protected Class<JobEntryXMLWellFormed> getJobEntryClass() {
return JobEntryXMLWellFormed.class;
}

@Override
protected List<String> listCommonAttributes() {
return asList( "arg_from_previous", "include_subfolders", "nr_errors_less_than", "success_condition",
"resultfilenames", "source_filefolder", "wildcard" );
}

@Override
protected Map<String, String> createGettersMap() {
return toMap(
"arg_from_previous", "isArgFromPrevious",
"include_subfolders", "isIncludeSubfolders",
"nr_errors_less_than", "getNrErrorsLessThan",
"success_condition", "getSuccessCondition",
"resultfilenames", "getResultFilenames",
"source_filefolder", "getSourceFileFolders",
"wildcard", "getSourceWildcards"
);
}

@Override
protected Map<String, String> createSettersMap() {
return toMap(
"arg_from_previous", "setArgFromPrevious",
"include_subfolders", "setIncludeSubfolders",
"nr_errors_less_than", "setNrErrorsLessThan",
"success_condition", "setSuccessCondition",
"resultfilenames", "setResultFilenames",
"source_filefolder", "setSourceFileFolders",
"wildcard", "setSourceWildcards"
);
}
}
Expand Up @@ -267,7 +267,7 @@ public void widgetSelected( SelectionEvent e ) {
wlPrevious.setLayoutData( fdlPrevious );
wPrevious = new Button( wSettings, SWT.CHECK );
props.setLook( wPrevious );
wPrevious.setSelection( jobEntry.arg_from_previous );
wPrevious.setSelection( jobEntry.isArgFromPrevious() );
wPrevious.setToolTipText( BaseMessages.getString( PKG, "JobXMLWellFormed.Previous.Tooltip" ) );
fdPrevious = new FormData();
fdPrevious.left = new FormAttachment( middle, 0 );
Expand Down Expand Up @@ -429,8 +429,8 @@ public void widgetSelected( SelectionEvent e ) {
wlFields.setLayoutData( fdlFields );

int rows =
jobEntry.source_filefolder == null ? 1 : ( jobEntry.source_filefolder.length == 0
? 0 : jobEntry.source_filefolder.length );
jobEntry.getSourceFileFolders() == null ? 1 : ( jobEntry.getSourceFileFolders().length == 0
? 0 : jobEntry.getSourceFileFolders().length );
final int FieldsRows = rows;

ColumnInfo[] colinf =
Expand Down Expand Up @@ -761,29 +761,29 @@ public void dispose() {
public void getData() {
wName.setText( Const.nullToEmpty( jobEntry.getName() ) );

if ( jobEntry.source_filefolder != null ) {
for ( int i = 0; i < jobEntry.source_filefolder.length; i++ ) {
if ( jobEntry.getSourceFileFolders() != null ) {
for ( int i = 0; i < jobEntry.getSourceFileFolders().length; i++ ) {
TableItem ti = wFields.table.getItem( i );
if ( jobEntry.source_filefolder[i] != null ) {
ti.setText( 1, jobEntry.source_filefolder[i] );
if ( jobEntry.getSourceFileFolders()[i] != null ) {
ti.setText( 1, jobEntry.getSourceFileFolders()[i] );
}

if ( jobEntry.wildcard[i] != null ) {
ti.setText( 2, jobEntry.wildcard[i] );
if ( jobEntry.getSourceWildcards()[i] != null ) {
ti.setText( 2, jobEntry.getSourceWildcards()[i] );
}
}
wFields.setRowNums();
wFields.optWidth( true );
}
wPrevious.setSelection( jobEntry.arg_from_previous );
wIncludeSubfolders.setSelection( jobEntry.include_subfolders );
wPrevious.setSelection( jobEntry.isArgFromPrevious() );
wIncludeSubfolders.setSelection( jobEntry.isIncludeSubfolders() );

wNrErrorsLessThan.setText( Const.NVL( jobEntry.getNrErrorsLessThan(), "10" ) );

if ( jobEntry.getSuccessCondition() != null ) {
if ( jobEntry.getSuccessCondition().equals( jobEntry.SUCCESS_IF_AT_LEAST_X_FILES_WELL_FORMED ) ) {
if ( jobEntry.getSuccessCondition().equals( JobEntryXMLWellFormed.SUCCESS_IF_AT_LEAST_X_FILES_WELL_FORMED ) ) {
wSuccessCondition.select( 1 );
} else if ( jobEntry.getSuccessCondition().equals( jobEntry.SUCCESS_IF_BAD_FORMED_FILES_LESS ) ) {
} else if ( jobEntry.getSuccessCondition().equals( JobEntryXMLWellFormed.SUCCESS_IF_BAD_FORMED_FILES_LESS ) ) {
wSuccessCondition.select( 2 );
} else {
wSuccessCondition.select( 0 );
Expand All @@ -793,9 +793,9 @@ public void getData() {
}

if ( jobEntry.getResultFilenames() != null ) {
if ( jobEntry.getResultFilenames().equals( jobEntry.ADD_WELL_FORMED_FILES_ONLY ) ) {
if ( jobEntry.getResultFilenames().equals( JobEntryXMLWellFormed.ADD_WELL_FORMED_FILES_ONLY ) ) {
wAddFilenameToResult.select( 1 );
} else if ( jobEntry.getResultFilenames().equals( jobEntry.ADD_BAD_FORMED_FILES_ONLY ) ) {
} else if ( jobEntry.getResultFilenames().equals( JobEntryXMLWellFormed.ADD_BAD_FORMED_FILES_ONLY ) ) {
wAddFilenameToResult.select( 2 );
} else {
wAddFilenameToResult.select( 0 );
Expand Down Expand Up @@ -830,19 +830,19 @@ private void ok() {
jobEntry.setNrErrorsLessThan( wNrErrorsLessThan.getText() );

if ( wSuccessCondition.getSelectionIndex() == 1 ) {
jobEntry.setSuccessCondition( jobEntry.SUCCESS_IF_AT_LEAST_X_FILES_WELL_FORMED );
jobEntry.setSuccessCondition( JobEntryXMLWellFormed.SUCCESS_IF_AT_LEAST_X_FILES_WELL_FORMED );
} else if ( wSuccessCondition.getSelectionIndex() == 2 ) {
jobEntry.setSuccessCondition( jobEntry.SUCCESS_IF_BAD_FORMED_FILES_LESS );
jobEntry.setSuccessCondition( JobEntryXMLWellFormed.SUCCESS_IF_BAD_FORMED_FILES_LESS );
} else {
jobEntry.setSuccessCondition( jobEntry.SUCCESS_IF_NO_ERRORS );
jobEntry.setSuccessCondition( JobEntryXMLWellFormed.SUCCESS_IF_NO_ERRORS );
}

if ( wAddFilenameToResult.getSelectionIndex() == 1 ) {
jobEntry.setResultFilenames( jobEntry.ADD_WELL_FORMED_FILES_ONLY );
jobEntry.setResultFilenames( JobEntryXMLWellFormed.ADD_WELL_FORMED_FILES_ONLY );
} else if ( wAddFilenameToResult.getSelectionIndex() == 2 ) {
jobEntry.setResultFilenames( jobEntry.ADD_BAD_FORMED_FILES_ONLY );
jobEntry.setResultFilenames( JobEntryXMLWellFormed.ADD_BAD_FORMED_FILES_ONLY );
} else {
jobEntry.setResultFilenames( jobEntry.ADD_ALL_FILENAMES );
jobEntry.setResultFilenames( JobEntryXMLWellFormed.ADD_ALL_FILENAMES );
}

int nritems = wFields.nrNonEmpty();
Expand All @@ -853,18 +853,20 @@ private void ok() {
nr++;
}
}
jobEntry.source_filefolder = new String[nr];
jobEntry.wildcard = new String[nr];
String[] source_filefolder = new String[nr];
String[] wildcard = new String[nr];
nr = 0;
for ( int i = 0; i < nritems; i++ ) {
String source = wFields.getNonEmpty( i ).getText( 1 );
String wild = wFields.getNonEmpty( i ).getText( 2 );
if ( source != null && source.length() != 0 ) {
jobEntry.source_filefolder[nr] = source;
jobEntry.wildcard[nr] = wild;
source_filefolder[nr] = source;
wildcard[nr] = wild;
nr++;
}
}
jobEntry.setSourceFileFolders( source_filefolder );
jobEntry.setSourceWildcards( wildcard );
dispose();
}

Expand Down

0 comments on commit c33f08a

Please sign in to comment.