/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2016 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.trans.steps.salesforce;
import java.util.List;
import org.pentaho.di.core.CheckResult;
import org.pentaho.di.core.CheckResultInterface;
import org.pentaho.di.core.util.Utils;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.encryption.Encr;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettleXMLException;
import org.pentaho.di.core.row.RowMetaInterface;
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.TransMeta;
import org.pentaho.di.trans.step.BaseStepMeta;
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;
public abstract class SalesforceStepMeta extends BaseStepMeta implements StepMetaInterface {
private static Class<?> PKG = SalesforceStepMeta.class;
/** The Salesforce Target URL */
private String targetURL;
/** The userName */
private String username;
/** The password */
private String password;
/** The time out */
private String timeout;
/** The connection compression */
private boolean compression;
/** The Salesforce module */
private String module;
public String getXML() {
StringBuilder retval = new StringBuilder();
retval.append( " " ).append( XMLHandler.addTagValue( "targeturl", getTargetURL() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "username", getUsername() ) );
retval.append( " " ).append(
XMLHandler.addTagValue( "password", Encr.encryptPasswordIfNotUsingVariables( getPassword() ) ) );
retval.append( " " ).append( XMLHandler.addTagValue( "timeout", getTimeout() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "useCompression", isCompression() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "module", getModule() ) );
return retval.toString();
}
public void loadXML( Node stepnode, List<DatabaseMeta> databases, IMetaStore metaStore ) throws KettleXMLException {
setTargetURL( XMLHandler.getTagValue( stepnode, "targeturl" ) );
setUsername( XMLHandler.getTagValue( stepnode, "username" ) );
setPassword( Encr.decryptPasswordOptionallyEncrypted( XMLHandler.getTagValue( stepnode, "password" ) ) );
setTimeout( XMLHandler.getTagValue( stepnode, "timeout" ) );
setCompression( "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "useCompression" ) ) );
setModule( XMLHandler.getTagValue( stepnode, "module" ) );
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
rep.saveStepAttribute( id_transformation, id_step, "targeturl", getTargetURL() );
rep.saveStepAttribute( id_transformation, id_step, "username", getUsername() );
rep.saveStepAttribute( id_transformation, id_step, "password",
Encr.encryptPasswordIfNotUsingVariables( getPassword() ) );
rep.saveStepAttribute( id_transformation, id_step, "timeout", getTimeout() );
rep.saveStepAttribute( id_transformation, id_step, "useCompression", isCompression() );
rep.saveStepAttribute( id_transformation, id_step, "module", getModule() );
}
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
setTargetURL( rep.getStepAttributeString( id_step, "targeturl" ) );
setUsername( rep.getStepAttributeString( id_step, "username" ) );
setPassword( Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( id_step, "password" ) ) );
setTimeout( rep.getStepAttributeString( id_step, "timeout" ) );
setCompression( rep.getStepAttributeBoolean( id_step, "useCompression" ) );
setModule( rep.getStepAttributeString( id_step, "module" ) );
}
public Object clone() {
SalesforceStepMeta retval = (SalesforceStepMeta) super.clone();
return retval;
}
public void setDefault() {
setTargetURL( SalesforceConnectionUtils.TARGET_DEFAULT_URL );
setUsername( "" );
setPassword( "" );
setTimeout( "60000" );
setCompression( false );
setModule( "Account" );
}
public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,
RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,
Repository repository, IMetaStore metaStore ) {
CheckResult cr;
// check URL
if ( Utils.isEmpty( getTargetURL() ) ) {
cr =
new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString(
PKG, "SalesforceMeta.CheckResult.NoURL" ), stepMeta );
} else {
cr =
new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(
PKG, "SalesforceMeta.CheckResult.URLOk" ), stepMeta );
}
remarks.add( cr );
// check user name
if ( Utils.isEmpty( getUsername() ) ) {
cr =
new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString(
PKG, "SalesforceMeta.CheckResult.NoUsername" ), stepMeta );
} else {
cr =
new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(
PKG, "SalesforceMeta.CheckResult.UsernameOk" ), stepMeta );
}
remarks.add( cr );
// check module
if ( Utils.isEmpty( getModule() ) ) {
cr =
new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString(
PKG, "SalesforceMeta.CheckResult.NoModule" ), stepMeta );
} else {
cr =
new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(
PKG, "SalesforceMeta.CheckResult.ModuleOk" ), stepMeta );
}
remarks.add( cr );
}
/**
* @return Returns the Target URL.
*/
public String getTargetURL() {
return targetURL;
}
/**
* @param targetURL
* The Target URL to set.
*/
public void setTargetURL( String targetURL ) {
this.targetURL = targetURL;
}
/**
* @return Returns the UserName.
*/
public String getUsername() {
return username;
}
/**
* @param username
* The Username to set.
*/
public void setUsername( String username ) {
this.username = username;
}
@Deprecated
public String getUserName() {
return getUsername();
}
@Deprecated
public void setUserName( String username ) {
setUsername( username );
}
/**
* @return Returns the Password.
*/
public String getPassword() {
return password;
}
/**
* @param password
* The password to set.
*/
public void setPassword( String password ) {
this.password = password;
}
/**
* @return Returns the connection timeout.
*/
public String getTimeout() {
return timeout;
}
/**
* @param timeOut
* The connection timeout to set.
*/
public void setTimeout( String timeout ) {
this.timeout = timeout;
}
@Deprecated
public String getTimeOut() {
return getTimeout();
}
@Deprecated
public void setTimeOut( String timeOut ) {
setTimeout( timeOut );
}
public boolean isCompression() {
return compression;
}
public void setCompression( boolean compression ) {
this.compression = compression;
}
/**
* @return Returns the useCompression.
*/
@Deprecated
public boolean isUsingCompression() {
return isCompression();
}
/**
* @param useCompression
* The useCompression to set.
*/
@Deprecated
public void setUseCompression( boolean useCompression ) {
setCompression( useCompression );
}
public String getModule() {
return module;
}
public void setModule( String module ) {
this.module = module;
}
}