AI prompts
base on Pentaho Data Integration ( ETL ) a.k.a Kettle # 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:](plugins/README.md)**
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](https://raw.githubusercontent.com/pentaho/maven-parent-poms/master/maven-support-files/settings.xml) in your <user-home>/.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](https://jira.pentaho.com/secure/Dashboard.jspa)
2. Attach a Git patch file to the relevant [Jira case](https://jira.pentaho.com/secure/Dashboard.jspa)
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](core/src/test/java/org/pentaho/di/junit/rules/RestorePDIEnvironment.java)
and [RestorePDIEngineEnvironment](engine/src/test/java/org/pentaho/di/junit/rules/RestorePDIEngineEnvironment.java)
for core and engine tests respectively.
pex.:
```java
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.
", Assign "at most 3 tags" to the expected json: {"id":"1531","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"