MCPcopy Index your code
hub / github.com/pentaho/pentaho-kettle

github.com/pentaho/pentaho-kettle @CUST-288-9.3.0.10-R-R

repository ↗ · DeepWiki ↗ · release CUST-288-9.3.0.10-R-R ↗ · + Follow
61,152 symbols 290,421 edges 4,853 files 15,668 documented · 26%
README

Pentaho Data Integration #

Pentaho Data Integration ( ETL ) a.k.a Kettle

Project Structure

  • assemblies: Project distribution archive is produced under this module
  • core: Core implementation
  • dbdialog: Database dialog
  • ui: User interface
  • engine: PDI engine
  • engine-ext: PDI engine extensions
  • plugins: PDI core plugins
  • integration: Integration tests

How to build

Pentaho Data Integration uses the Maven framework.

Pre-requisites for building the project:

  • Maven, version 3+
  • Java JDK 11
  • This settings.xml in your /.m2 directory

Building it

This is a Maven project, and to build it use the following command:

$ mvn clean install

Optionally you can specify -Drelease to trigger obfuscation and/or uglification (as needed)

Optionally you can specify -Dmaven.test.skip=true to skip the tests (even though you shouldn't as you know)

The build result will be a Pentaho package located in target.

Packaging / Distributing it

Packages can be built by using the following command:

$ mvn clean package

The packaged results will be in the target/ sub-folders of assemblies/*.

For example, a distribution of the Desktop Client (CE) can then be found in: assemblies/client/target/pdi-ce-*-SNAPSHOT.zip.

Running the tests

Unit tests

This will run all unit tests in the project (and sub-modules). To run integration tests as well, see Integration Tests below.

$ mvn test

If you want to remote debug a single Java unit test (default port is 5005):

$ cd core
$ mvn test -Dtest=<<YourTest>> -Dmaven.surefire.debug

Integration tests

In addition to the unit tests, there are integration tests that test cross-module operation. This will run the integration tests.

$ mvn verify -DrunITs

To run a single integration test:

$ mvn verify -DrunITs -Dit.test=<<YourIT>>

To run a single integration test in debug mode (for remote debugging in an IDE) on the default port of 5005:

$ mvn verify -DrunITs -Dit.test=<<YourIT>> -Dmaven.failsafe.debug

To skip test

$ mvn clean install -DskipTests

To get log as text file

$ mvn clean install test >log.txt

IntelliJ

  • Don't use IntelliJ's built-in maven. Make it use the same one you use from the commandline.
  • Project Preferences -> Build, Execution, Deployment -> Build Tools -> Maven ==> Maven home directory

Contributing

  1. Submit a pull request, referencing the relevant Jira case
  2. Attach a Git patch file to the relevant Jira case

Use of the Pentaho checkstyle format (via mvn checkstyle:check and reviewing the report) and developing working Unit Tests helps to ensure that pull requests for bugs and improvements are processed quickly.

When writing unit tests, you have at your disposal a couple of ClassRules that can be used to maintain a healthy test environment. Use RestorePDIEnvironment and RestorePDIEngineEnvironment for core and engine tests respectively.

pex.:

public class MyTest {
  @ClassRule public static RestorePDIEnvironment env = new RestorePDIEnvironment();
  #setUp()...
  @Test public void testSomething() { 
    assertTrue( myMethod() ); 
  }
}

Asking for help

Please go to https://community.hitachivantara.com/community/products-and-solutions/pentaho/ to ask questions and get help.

Extension points exported contracts — how you extend this code

VFSConnectionDetails (Interface)
Created by bmorrise on 2/13/19. [7 implementers]
core/src/main/java/org/pentaho/di/connections/vfs/VFSConnectionDetails.java
ProvidesDatabaseConnectionInformation (Interface)
An interface for transformation steps that connect to a database table. For example a table output step or a bulk loader [19 …
engine/src/main/java/org/pentaho/di/core/ProvidesDatabaseConnectionInformation.java
ModelElement (Interface)
Created by nbaker on 1/19/17. [41 implementers]
engine-ext/api/src/main/java/org/pentaho/di/engine/api/model/ModelElement.java
SpoonLifecycleListener (Interface)
Registered implementations will be notified of Spoon startup and shutdown. This class will most likely be registered as [7 …
ui/src/main/java/org/pentaho/di/ui/spoon/SpoonLifecycleListener.java
Providerable (Interface)
Created by bmorrise on 2/22/19. [17 implementers]
plugins/file-open-save-new/api/src/main/java/org/pentaho/di/plugins/fileopensave/api/providers/Providerable.java
RunConfigurationExecutor (Interface)
Created by bmorrise on 3/16/17. [120 implementers]
plugins/engine-configuration/api/src/main/java/org/pentaho/di/engine/configuration/api/RunConfigurationExecutor.java
CloseableIterator (Interface)
An Iterator that may hold some resources and, as so, should be given the opportunity to release them when it's no lon [84 …
plugins/json/core/src/main/java/org/pentaho/di/trans/steps/jsoninput/reader/CloseableIterator.java
IRepositoryFactory (Interface)
Implementations can be used to obtain a PDI Repository instance in the platform. Created by nbaker on 11/5/15. [4 implementers]
plugins/pur/core/src/main/java/org/pentaho/di/repository/utils/IRepositoryFactory.java

Core symbols most depended-on inside this repo

getString
called by 21167
core/src/main/java/org/pentaho/di/i18n/BaseMessages.java
append
called by 12006
core/src/main/java/org/pentaho/di/core/logging/LoggingPrintStream.java
setText
called by 11095
core/src/main/java/org/pentaho/di/core/CheckResultInterface.java
setLook
called by 8049
ui/src/main/java/org/pentaho/di/ui/core/PropsUI.java
getText
called by 5664
core/src/main/java/org/pentaho/di/core/CheckResultInterface.java
add
called by 4039
engine/src/main/java/org/pentaho/di/trans/steps/textfileoutput/TextFileOutputData.java
toString
called by 3968
core/src/main/java/org/pentaho/di/core/CheckResultInterface.java
getTagValue
called by 3966
core/src/main/java/org/pentaho/di/core/xml/XMLHandler.java

Shape

Method 54,839
Class 4,721
Function 1,064
Interface 391
Enum 137

Languages

Java98%
TypeScript2%

Modules by API surface

ui/src/main/java/org/pentaho/di/ui/spoon/Spoon.java392 symbols
ui/src/main/java/org/pentaho/di/ui/core/gui/GUIResource.java250 symbols
core/src/main/java/org/pentaho/di/core/database/DatabaseMeta.java238 symbols
ui/src/main/java/org/pentaho/di/ui/spoon/trans/TransGraph.java234 symbols
engine/src/main/java/org/pentaho/di/trans/TransMeta.java234 symbols
engine/src/main/java/org/pentaho/di/trans/Trans.java229 symbols
engine/src/main/java/org/pentaho/di/trans/step/BaseStep.java214 symbols
core/src/main/java/org/pentaho/di/core/row/value/ValueMetaBase.java208 symbols
engine/src/main/java/org/pentaho/di/trans/steps/userdefinedjavaclass/UserDefinedJavaClass.java199 symbols
core/src/main/java/org/pentaho/di/core/database/DatabaseInterface.java187 symbols
core/src/main/java/org/pentaho/di/core/database/BaseDatabaseMeta.java185 symbols
core/src/main/java/org/pentaho/di/core/database/Database.java182 symbols

Dependencies from manifests, versioned

ascsapjco3wrp:ascsapjco3wrp
asm:asm
ca.uhn.hapi:hapi-base1.1 · 1×
ca.uhn.hapi:hapi-examples1.1 · 1×
ca.uhn.hapi:hapi-structures-v211.1 · 1×
ca.uhn.hapi:hapi-structures-v221.1 · 1×
ca.uhn.hapi:hapi-structures-v231.1 · 1×
ca.uhn.hapi:hapi-structures-v2311.1 · 1×
ca.uhn.hapi:hapi-structures-v241.1 · 1×
ca.uhn.hapi:hapi-structures-v251.1 · 1×
ca.uhn.hapi:hapi-structures-v2511.1 · 1×
ca.uhn.hapi:hapi-structures-v261.1 · 1×

Datastores touched

(mysql)Database · 1 repos
WIBBLEDatabase · 1 repos
foodmartDatabase · 1 repos
FM3Database · 1 repos
foodmartDatabase · 1 repos
hibernateDatabase · 1 repos
WIBBLEDatabase · 1 repos

For agents

$ claude mcp add pentaho-kettle \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact