org.pentaho.di.trans.steps.stringoperations.StringOperationsMeta Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kettle-engine Show documentation
Show all versions of kettle-engine Show documentation
Container pom for Pentaho Data Integration modules
The newest version!
/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2017 by Hitachi Vantara : 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.trans.steps.stringoperations;
import java.util.List;
import org.pentaho.di.core.CheckResult;
import org.pentaho.di.core.CheckResultInterface;
import org.pentaho.di.core.Const;
import org.pentaho.di.core.util.Utils;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettleStepException;
import org.pentaho.di.core.exception.KettleXMLException;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.ValueMetaInterface;
import org.pentaho.di.core.row.value.ValueMetaString;
import org.pentaho.di.core.variables.VariableSpace;
import org.pentaho.di.core.xml.XMLHandler;
import org.pentaho.di.i18n.BaseMessages;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.BaseStepMeta;
import org.pentaho.di.trans.step.StepDataInterface;
import org.pentaho.di.trans.step.StepInterface;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.step.StepMetaInterface;
import org.pentaho.metastore.api.IMetaStore;
import org.w3c.dom.Node;
/**
* This class takes care of the meta data for the StringOperations step.
*
* @author Samatar Hassan
* @since 02 April 2009
*/
public class StringOperationsMeta extends BaseStepMeta implements StepMetaInterface {
private static Class> PKG = StringOperationsMeta.class; // for i18n purposes, needed by Translator2!!
/** which field in input stream to compare with? */
private String[] fieldInStream;
/** output field */
private String[] fieldOutStream;
/** Trim type */
private int[] trimType;
/** Lower/Upper type */
private int[] lowerUpper;
/** InitCap */
private int[] initCap;
private int[] maskXML;
private int[] digits;
private int[] remove_special_characters;
/** padding type */
private int[] padding_type;
/** Pad length */
private String[] padLen;
private String[] padChar;
/**
* The trim type codes
*/
public static final String[] trimTypeCode = { "none", "left", "right", "both" };
public static final int TRIM_NONE = 0;
public static final int TRIM_LEFT = 1;
public static final int TRIM_RIGHT = 2;
public static final int TRIM_BOTH = 3;
/**
* The trim description
*/
public static final String[] trimTypeDesc = {
BaseMessages.getString( PKG, "StringOperationsMeta.TrimType.None" ),
BaseMessages.getString( PKG, "StringOperationsMeta.TrimType.Left" ),
BaseMessages.getString( PKG, "StringOperationsMeta.TrimType.Right" ),
BaseMessages.getString( PKG, "StringOperationsMeta.TrimType.Both" ) };
/**
* The lower upper codes
*/
public static final String[] lowerUpperCode = { "none", "lower", "upper" };
public static final int LOWER_UPPER_NONE = 0;
public static final int LOWER_UPPER_LOWER = 1;
public static final int LOWER_UPPER_UPPER = 2;
/**
* The lower upper description
*/
public static final String[] lowerUpperDesc = {
BaseMessages.getString( PKG, "StringOperationsMeta.LowerUpper.None" ),
BaseMessages.getString( PKG, "StringOperationsMeta.LowerUpper.Lower" ),
BaseMessages.getString( PKG, "StringOperationsMeta.LowerUpper.Upper" ) };
public static final String[] initCapDesc = new String[] {
BaseMessages.getString( PKG, "System.Combo.No" ), BaseMessages.getString( PKG, "System.Combo.Yes" ) };
public static final String[] initCapCode = { "no", "yes" };
public static final int INIT_CAP_NO = 0;
public static final int INIT_CAP_YES = 1;
// digits
public static final String[] digitsCode = { "none", "digits_only", "remove_digits" };
public static final int DIGITS_NONE = 0;
public static final int DIGITS_ONLY = 1;
public static final int DIGITS_REMOVE = 2;
public static final String[] digitsDesc = new String[] {
BaseMessages.getString( PKG, "StringOperationsMeta.Digits.None" ),
BaseMessages.getString( PKG, "StringOperationsMeta.Digits.Only" ),
BaseMessages.getString( PKG, "StringOperationsMeta.Digits.Remove" ) };
// mask XML
public static final String[] maskXMLDesc = new String[] {
BaseMessages.getString( PKG, "StringOperationsMeta.MaskXML.None" ),
BaseMessages.getString( PKG, "StringOperationsMeta.MaskXML.EscapeXML" ),
BaseMessages.getString( PKG, "StringOperationsMeta.MaskXML.CDATA" ),
BaseMessages.getString( PKG, "StringOperationsMeta.MaskXML.UnEscapeXML" ),
BaseMessages.getString( PKG, "StringOperationsMeta.MaskXML.EscapeSQL" ),
BaseMessages.getString( PKG, "StringOperationsMeta.MaskXML.EscapeHTML" ),
BaseMessages.getString( PKG, "StringOperationsMeta.MaskXML.UnEscapeHTML" ), };
public static final String[] maskXMLCode = {
"none", "escapexml", "cdata", "unescapexml", "escapesql", "escapehtml", "unescapehtml" };
public static final int MASK_NONE = 0;
public static final int MASK_ESCAPE_XML = 1;
public static final int MASK_CDATA = 2;
public static final int MASK_UNESCAPE_XML = 3;
public static final int MASK_ESCAPE_SQL = 4;
public static final int MASK_ESCAPE_HTML = 5;
public static final int MASK_UNESCAPE_HTML = 6;
// remove special characters
public static final String[] removeSpecialCharactersCode = { "none", "cr", "lf", "crlf", "tab", "espace" };
public static final int REMOVE_SPECIAL_CHARACTERS_NONE = 0;
public static final int REMOVE_SPECIAL_CHARACTERS_CR = 1;
public static final int REMOVE_SPECIAL_CHARACTERS_LF = 2;
public static final int REMOVE_SPECIAL_CHARACTERS_CRLF = 3;
public static final int REMOVE_SPECIAL_CHARACTERS_TAB = 4;
public static final int REMOVE_SPECIAL_CHARACTERS_ESPACE = 5;
public static final String[] removeSpecialCharactersDesc = new String[] {
BaseMessages.getString( PKG, "StringOperationsMeta.RemoveSpecialCharacters.None" ),
BaseMessages.getString( PKG, "StringOperationsMeta.RemoveSpecialCharacters.CR" ),
BaseMessages.getString( PKG, "StringOperationsMeta.RemoveSpecialCharacters.LF" ),
BaseMessages.getString( PKG, "StringOperationsMeta.RemoveSpecialCharacters.CRLF" ),
BaseMessages.getString( PKG, "StringOperationsMeta.RemoveSpecialCharacters.TAB" ),
BaseMessages.getString( PKG, "StringOperationsMeta.RemoveSpecialCharacters.Space" ) };
/**
* The padding description
*/
public static final String[] paddingDesc = {
BaseMessages.getString( PKG, "StringOperationsMeta.Padding.None" ),
BaseMessages.getString( PKG, "StringOperationsMeta.Padding.Left" ),
BaseMessages.getString( PKG, "StringOperationsMeta.Padding.Right" ) };
public static final String[] paddingCode = { "none", "left", "right" };
public static final int PADDING_NONE = 0;
public static final int PADDING_LEFT = 1;
public static final int PADDING_RIGHT = 2;
public StringOperationsMeta() {
super(); // allocate BaseStepMeta
}
/**
* @return Returns the fieldInStream.
*/
public String[] getFieldInStream() {
return fieldInStream;
}
/**
* @param keyStream
* The fieldInStream to set.
*/
public void setFieldInStream( String[] keyStream ) {
this.fieldInStream = keyStream;
}
/**
* @return Returns the fieldOutStream.
*/
public String[] getFieldOutStream() {
return fieldOutStream;
}
/**
* @param keyStream
* The fieldOutStream to set.
*/
public void setFieldOutStream( String[] keyStream ) {
this.fieldOutStream = keyStream;
}
public String[] getPadLen() {
return padLen;
}
public void setPadLen( String[] value ) {
padLen = value;
}
public String[] getPadChar() {
return padChar;
}
public void setPadChar( String[] value ) {
padChar = value;
}
public int[] getTrimType() {
return trimType;
}
public void setTrimType( int[] trimType ) {
this.trimType = trimType;
}
public int[] getLowerUpper() {
return lowerUpper;
}
public void setLowerUpper( int[] lowerUpper ) {
this.lowerUpper = lowerUpper;
}
public int[] getInitCap() {
return initCap;
}
public void setInitCap( int[] value ) {
initCap = value;
}
public int[] getMaskXML() {
return maskXML;
}
public void setMaskXML( int[] value ) {
maskXML = value;
}
public int[] getDigits() {
return digits;
}
public void setDigits( int[] value ) {
digits = value;
}
public int[] getRemoveSpecialCharacters() {
return remove_special_characters;
}
public void setRemoveSpecialCharacters( int[] value ) {
remove_special_characters = value;
}
public int[] getPaddingType() {
return padding_type;
}
public void setPaddingType( int[] value ) {
padding_type = value;
}
@Override
public void loadXML( Node stepnode, List databases, IMetaStore metaStore ) throws KettleXMLException {
readData( stepnode );
}
public void allocate( int nrkeys ) {
fieldInStream = new String[nrkeys];
fieldOutStream = new String[nrkeys];
trimType = new int[nrkeys];
lowerUpper = new int[nrkeys];
padding_type = new int[nrkeys];
padChar = new String[nrkeys];
padLen = new String[nrkeys];
initCap = new int[nrkeys];
maskXML = new int[nrkeys];
digits = new int[nrkeys];
remove_special_characters = new int[nrkeys];
}
@Override
public Object clone() {
StringOperationsMeta retval = (StringOperationsMeta) super.clone();
int nrkeys = fieldInStream.length;
retval.allocate( nrkeys );
System.arraycopy( fieldInStream, 0, retval.fieldInStream, 0, nrkeys );
System.arraycopy( fieldOutStream, 0, retval.fieldOutStream, 0, nrkeys );
System.arraycopy( trimType, 0, retval.trimType, 0, nrkeys );
System.arraycopy( lowerUpper, 0, retval.lowerUpper, 0, nrkeys );
System.arraycopy( padding_type, 0, retval.padding_type, 0, nrkeys );
System.arraycopy( padChar, 0, retval.padChar, 0, nrkeys );
System.arraycopy( padLen, 0, retval.padLen, 0, nrkeys );
System.arraycopy( initCap, 0, retval.initCap, 0, nrkeys );
System.arraycopy( maskXML, 0, retval.maskXML, 0, nrkeys );
System.arraycopy( digits, 0, retval.digits, 0, nrkeys );
System.arraycopy( remove_special_characters, 0, retval.remove_special_characters, 0, nrkeys );
return retval;
}
private void readData( Node stepnode ) throws KettleXMLException {
try {
int nrkeys;
Node lookup = XMLHandler.getSubNode( stepnode, "fields" );
nrkeys = XMLHandler.countNodes( lookup, "field" );
allocate( nrkeys );
for ( int i = 0; i < nrkeys; i++ ) {
Node fnode = XMLHandler.getSubNodeByNr( lookup, "field", i );
fieldInStream[i] = Const.NVL( XMLHandler.getTagValue( fnode, "in_stream_name" ), "" );
fieldOutStream[i] = Const.NVL( XMLHandler.getTagValue( fnode, "out_stream_name" ), "" );
trimType[i] = getTrimTypeByCode( Const.NVL( XMLHandler.getTagValue( fnode, "trim_type" ), "" ) );
lowerUpper[i] = getLowerUpperByCode( Const.NVL( XMLHandler.getTagValue( fnode, "lower_upper" ), "" ) );
padding_type[i] = getPaddingByCode( Const.NVL( XMLHandler.getTagValue( fnode, "padding_type" ), "" ) );
padChar[i] = Const.NVL( XMLHandler.getTagValue( fnode, "pad_char" ), "" );
padLen[i] = Const.NVL( XMLHandler.getTagValue( fnode, "pad_len" ), "" );
initCap[i] = getInitCapByCode( Const.NVL( XMLHandler.getTagValue( fnode, "init_cap" ), "" ) );
maskXML[i] = getMaskXMLByCode( Const.NVL( XMLHandler.getTagValue( fnode, "mask_xml" ), "" ) );
digits[i] = getDigitsByCode( Const.NVL( XMLHandler.getTagValue( fnode, "digits" ), "" ) );
remove_special_characters[i] =
getRemoveSpecialCharactersByCode( Const.NVL( XMLHandler.getTagValue(
fnode, "remove_special_characters" ), "" ) );
}
} catch ( Exception e ) {
throw new KettleXMLException( BaseMessages.getString(
PKG, "StringOperationsMeta.Exception.UnableToReadStepInfoFromXML" ), e );
}
}
@Override
public void setDefault() {
fieldInStream = null;
fieldOutStream = null;
int nrkeys = 0;
allocate( nrkeys );
}
@Override
public String getXML() {
StringBuilder retval = new StringBuilder( 500 );
retval.append( " " ).append( Const.CR );
for ( int i = 0; i < fieldInStream.length; i++ ) {
retval.append( " " ).append( Const.CR );
retval.append( " " ).append( XMLHandler.addTagValue( "in_stream_name", fieldInStream[i] ) );
retval.append( " " ).append( XMLHandler.addTagValue( "out_stream_name", fieldOutStream[i] ) );
retval.append( " " ).append( XMLHandler.addTagValue( "trim_type", getTrimTypeCode( trimType[i] ) ) );
retval.append( " " ).append(
XMLHandler.addTagValue( "lower_upper", getLowerUpperCode( lowerUpper[i] ) ) );
retval.append( " " ).append(
XMLHandler.addTagValue( "padding_type", getPaddingCode( padding_type[i] ) ) );
retval.append( " " ).append( XMLHandler.addTagValue( "pad_char", padChar[i] ) );
retval.append( " " ).append( XMLHandler.addTagValue( "pad_len", padLen[i] ) );
retval.append( " " ).append( XMLHandler.addTagValue( "init_cap", getInitCapCode( initCap[i] ) ) );
retval.append( " " ).append( XMLHandler.addTagValue( "mask_xml", getMaskXMLCode( maskXML[i] ) ) );
retval.append( " " ).append( XMLHandler.addTagValue( "digits", getDigitsCode( digits[i] ) ) );
retval.append( " " ).append(
XMLHandler.addTagValue(
"remove_special_characters", getRemoveSpecialCharactersCode( remove_special_characters[i] ) ) );
retval.append( " " ).append( Const.CR );
}
retval.append( " " ).append( Const.CR );
return retval.toString();
}
@Override
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List databases ) throws KettleException {
try {
int nrkeys = rep.countNrStepAttributes( id_step, "in_stream_name" );
allocate( nrkeys );
for ( int i = 0; i < nrkeys; i++ ) {
fieldInStream[i] = Const.NVL( rep.getStepAttributeString( id_step, i, "in_stream_name" ), "" );
fieldOutStream[i] = Const.NVL( rep.getStepAttributeString( id_step, i, "out_stream_name" ), "" );
trimType[i] = getTrimTypeByCode( Const.NVL( rep.getStepAttributeString( id_step, i, "trim_type" ), "" ) );
lowerUpper[i] =
getLowerUpperByCode( Const.NVL( rep.getStepAttributeString( id_step, i, "lower_upper" ), "" ) );
padding_type[i] =
getPaddingByCode( Const.NVL( rep.getStepAttributeString( id_step, i, "padding_type" ), "" ) );
padChar[i] = Const.NVL( rep.getStepAttributeString( id_step, i, "pad_char" ), "" );
padLen[i] = Const.NVL( rep.getStepAttributeString( id_step, i, "pad_len" ), "" );
initCap[i] = getInitCapByCode( Const.NVL( rep.getStepAttributeString( id_step, i, "init_cap" ), "" ) );
maskXML[i] = getMaskXMLByCode( Const.NVL( rep.getStepAttributeString( id_step, i, "mask_xml" ), "" ) );
digits[i] = getDigitsByCode( Const.NVL( rep.getStepAttributeString( id_step, i, "digits" ), "" ) );
remove_special_characters[i] =
getRemoveSpecialCharactersByCode( Const.NVL( rep.getStepAttributeString(
id_step, i, "remove_special_characters" ), "" ) );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "StringOperationsMeta.Exception.UnexpectedErrorInReadingStepInfo" ), e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
for ( int i = 0; i < fieldInStream.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "in_stream_name", fieldInStream[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "out_stream_name", fieldOutStream[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "trim_type", getTrimTypeCode( trimType[i] ) );
rep.saveStepAttribute( id_transformation, id_step, i, "lower_upper", getLowerUpperCode( lowerUpper[i] ) );
rep.saveStepAttribute( id_transformation, id_step, i, "padding_type", getPaddingCode( padding_type[i] ) );
rep.saveStepAttribute( id_transformation, id_step, i, "pad_char", padChar[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "pad_len", padLen[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "init_cap", getInitCapCode( initCap[i] ) );
rep.saveStepAttribute( id_transformation, id_step, i, "mask_xml", getMaskXMLCode( maskXML[i] ) );
rep.saveStepAttribute( id_transformation, id_step, i, "digits", getDigitsCode( digits[i] ) );
rep.saveStepAttribute(
id_transformation, id_step, i, "remove_special_characters",
getRemoveSpecialCharactersCode( remove_special_characters[i] ) );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "StringOperationsMeta.Exception.UnableToSaveStepInfo" )
+ id_step, e );
}
}
@Override
public void getFields( RowMetaInterface inputRowMeta, String name, RowMetaInterface[] info, StepMeta nextStep,
VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {
// Add new field?
for ( int i = 0; i < fieldOutStream.length; i++ ) {
ValueMetaInterface v;
String outputField = space.environmentSubstitute( fieldOutStream[i] );
if ( !Utils.isEmpty( outputField ) ) {
// Add a new field
v = new ValueMetaString( outputField );
v.setLength( 100, -1 );
v.setOrigin( name );
inputRowMeta.addValueMeta( v );
} else {
v = inputRowMeta.searchValueMeta( fieldInStream[i] );
if ( v == null ) {
continue;
}
v.setStorageType( ValueMetaInterface.STORAGE_TYPE_NORMAL );
int paddingType = getPaddingType()[i];
if ( paddingType == PADDING_LEFT || paddingType == PADDING_RIGHT ) {
int padLen = Const.toInt( space.environmentSubstitute( getPadLen()[i] ), 0 );
if ( padLen > v.getLength() ) {
// alter meta data
v.setLength( padLen );
}
}
}
}
}
@Override
public void check( List remarks, TransMeta transMeta, StepMeta stepinfo,
RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,
Repository repository, IMetaStore metaStore ) {
CheckResult cr;
String error_message = "";
boolean first = true;
boolean error_found = false;
if ( prev == null ) {
error_message +=
BaseMessages.getString( PKG, "StringOperationsMeta.CheckResult.NoInputReceived" ) + Const.CR;
cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepinfo );
remarks.add( cr );
} else {
for ( int i = 0; i < fieldInStream.length; i++ ) {
String field = fieldInStream[i];
ValueMetaInterface v = prev.searchValueMeta( field );
if ( v == null ) {
if ( first ) {
first = false;
error_message +=
BaseMessages.getString( PKG, "StringOperationsMeta.CheckResult.MissingInStreamFields" ) + Const.CR;
}
error_found = true;
error_message += "\t\t" + field + Const.CR;
}
}
if ( error_found ) {
cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepinfo );
} else {
cr =
new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(
PKG, "StringOperationsMeta.CheckResult.FoundInStreamFields" ), stepinfo );
}
remarks.add( cr );
// Check whether all are strings
first = true;
error_found = false;
for ( int i = 0; i < fieldInStream.length; i++ ) {
String field = fieldInStream[i];
ValueMetaInterface v = prev.searchValueMeta( field );
if ( v != null ) {
if ( v.getType() != ValueMetaInterface.TYPE_STRING ) {
if ( first ) {
first = false;
error_message +=
BaseMessages.getString( PKG, "StringOperationsMeta.CheckResult.OperationOnNonStringFields" )
+ Const.CR;
}
error_found = true;
error_message += "\t\t" + field + Const.CR;
}
}
}
if ( error_found ) {
cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepinfo );
} else {
cr =
new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(
PKG, "StringOperationsMeta.CheckResult.AllOperationsOnStringFields" ), stepinfo );
}
remarks.add( cr );
if ( fieldInStream.length > 0 ) {
for ( int idx = 0; idx < fieldInStream.length; idx++ ) {
if ( Utils.isEmpty( fieldInStream[idx] ) ) {
cr =
new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString(
PKG, "StringOperationsMeta.CheckResult.InStreamFieldMissing", new Integer( idx + 1 )
.toString() ), stepinfo );
remarks.add( cr );
}
}
}
// Check if all input fields are distinct.
for ( int idx = 0; idx < fieldInStream.length; idx++ ) {
for ( int jdx = 0; jdx < fieldInStream.length; jdx++ ) {
if ( fieldInStream[idx].equals( fieldInStream[jdx] ) && idx != jdx && idx < jdx ) {
error_message =
BaseMessages.getString(
PKG, "StringOperationsMeta.CheckResult.FieldInputError", fieldInStream[idx] );
cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepinfo );
remarks.add( cr );
}
}
}
}
}
@Override
public StepInterface getStep( StepMeta stepMeta, StepDataInterface stepDataInterface, int cnr,
TransMeta transMeta, Trans trans ) {
return new StringOperations( stepMeta, stepDataInterface, cnr, transMeta, trans );
}
@Override
public StepDataInterface getStepData() {
return new StringOperationsData();
}
@Override
public boolean supportsErrorHandling() {
return true;
}
private static String getTrimTypeCode( int i ) {
if ( i < 0 || i >= trimTypeCode.length ) {
return trimTypeCode[0];
}
return trimTypeCode[i];
}
private static String getLowerUpperCode( int i ) {
if ( i < 0 || i >= lowerUpperCode.length ) {
return lowerUpperCode[0];
}
return lowerUpperCode[i];
}
private static String getInitCapCode( int i ) {
if ( i < 0 || i >= initCapCode.length ) {
return initCapCode[0];
}
return initCapCode[i];
}
private static String getMaskXMLCode( int i ) {
if ( i < 0 || i >= maskXMLCode.length ) {
return maskXMLCode[0];
}
return maskXMLCode[i];
}
private static String getDigitsCode( int i ) {
if ( i < 0 || i >= digitsCode.length ) {
return digitsCode[0];
}
return digitsCode[i];
}
private static String getRemoveSpecialCharactersCode( int i ) {
if ( i < 0 || i >= removeSpecialCharactersCode.length ) {
return removeSpecialCharactersCode[0];
}
return removeSpecialCharactersCode[i];
}
private static String getPaddingCode( int i ) {
if ( i < 0 || i >= paddingCode.length ) {
return paddingCode[0];
}
return paddingCode[i];
}
public static String getTrimTypeDesc( int i ) {
if ( i < 0 || i >= trimTypeDesc.length ) {
return trimTypeDesc[0];
}
return trimTypeDesc[i];
}
public static String getLowerUpperDesc( int i ) {
if ( i < 0 || i >= lowerUpperDesc.length ) {
return lowerUpperDesc[0];
}
return lowerUpperDesc[i];
}
public static String getInitCapDesc( int i ) {
if ( i < 0 || i >= initCapDesc.length ) {
return initCapDesc[0];
}
return initCapDesc[i];
}
public static String getMaskXMLDesc( int i ) {
if ( i < 0 || i >= maskXMLDesc.length ) {
return maskXMLDesc[0];
}
return maskXMLDesc[i];
}
public static String getDigitsDesc( int i ) {
if ( i < 0 || i >= digitsDesc.length ) {
return digitsDesc[0];
}
return digitsDesc[i];
}
public static String getRemoveSpecialCharactersDesc( int i ) {
if ( i < 0 || i >= removeSpecialCharactersDesc.length ) {
return removeSpecialCharactersDesc[0];
}
return removeSpecialCharactersDesc[i];
}
public static String getPaddingDesc( int i ) {
if ( i < 0 || i >= paddingDesc.length ) {
return paddingDesc[0];
}
return paddingDesc[i];
}
private static int getTrimTypeByCode( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < trimTypeCode.length; i++ ) {
if ( trimTypeCode[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
return 0;
}
private static int getLowerUpperByCode( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < lowerUpperCode.length; i++ ) {
if ( lowerUpperCode[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
return 0;
}
private static int getInitCapByCode( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < initCapCode.length; i++ ) {
if ( initCapCode[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
return 0;
}
private static int getMaskXMLByCode( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < maskXMLCode.length; i++ ) {
if ( maskXMLCode[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
return 0;
}
private static int getDigitsByCode( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < digitsCode.length; i++ ) {
if ( digitsCode[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
return 0;
}
private static int getRemoveSpecialCharactersByCode( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < removeSpecialCharactersCode.length; i++ ) {
if ( removeSpecialCharactersCode[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
return 0;
}
private static int getPaddingByCode( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < paddingCode.length; i++ ) {
if ( paddingCode[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
return 0;
}
public static int getTrimTypeByDesc( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < trimTypeDesc.length; i++ ) {
if ( trimTypeDesc[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
// If this fails, try to match using the code.
return getTrimTypeByCode( tt );
}
public static int getLowerUpperByDesc( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < lowerUpperDesc.length; i++ ) {
if ( lowerUpperDesc[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
// If this fails, try to match using the code.
return getLowerUpperByCode( tt );
}
public static int getInitCapByDesc( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < initCapDesc.length; i++ ) {
if ( initCapDesc[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
// If this fails, try to match using the code.
return getInitCapByCode( tt );
}
public static int getMaskXMLByDesc( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < maskXMLDesc.length; i++ ) {
if ( maskXMLDesc[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
// If this fails, try to match using the code.
return getMaskXMLByCode( tt );
}
public static int getDigitsByDesc( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < digitsDesc.length; i++ ) {
if ( digitsDesc[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
// If this fails, try to match using the code.
return getDigitsByCode( tt );
}
public static int getRemoveSpecialCharactersByDesc( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < removeSpecialCharactersDesc.length; i++ ) {
if ( removeSpecialCharactersDesc[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
// If this fails, try to match using the code.
return getRemoveSpecialCharactersByCode( tt );
}
public static int getPaddingByDesc( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < paddingDesc.length; i++ ) {
if ( paddingDesc[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
// If this fails, try to match using the code.
return getPaddingByCode( tt );
}
}