Overview
JavaScript in Etlworks is tightly integrated with the Java Virtual Machine.
This means your scripts can directly access all classes from:
-
The Etlworks Java API
-
Core Java packages (java.util, java.io, etc.)
-
Any custom Java libraries you install
There are multiple ways to reference Java classes in JavaScript.
This article explains each method, when to use it, and provides examples and reference tables for the most commonly used Etlworks packages and classes.
Accessing Java Classes
There are four methods available:
Use a fully qualified Java class name
var list = new java.util.ArrayList();
Import packages using importPackage(package)
importPackage(java.util);
var list = new ArrayList();
Import classes using Java.type("class")
var ArrayList = Java.type("java.util.ArrayList");
var list = new ArrayList();
Import packages using JavaImporter
var javaImports = new JavaImporter(
java.util,
com.toolsverse.util
);
with (javaImports) {
var list = new ArrayList();
var ds = new DataSet();
}
Notes about JavaImporter
-
Flexible
-
Helpful when mixing many packages
-
Slower than the other methods
-
Not recommended for performance-critical code
Common Etlworks Packages
Below is a curated list of the most common Etlworks Java API packages and links to Javadoc (where applicable).
|
Purpose |
Package |
|---|---|
|
Utility classes |
|
|
Logging |
|
|
System configuration |
|
|
Common ETL engine classes (DataSet, FieldDef, etc.) |
|
|
ETL engine configuration |
|
|
ETL engine core |
|
|
Common ETL tasks |
|
|
Java collections and utilities |
Commonly Used Classes and Example Usage
Below is a reference for frequently used Etlworks and Java classes you will likely use when writing scripts.
Utility Methods
Check for empty or null:
if (com.toolsverse.util.Utils.isNothing(value)) {
// handle case
}
Working With File Names
com.toolsverse.util.FilenameUtils
var name = com.toolsverse.util.FilenameUtils.getName(path);
Working with Files
com.toolsverse.etl.core.task.common.FileManagerTask
Check if files exist
var found = com.toolsverse.etl.core.task.common.FileManagerTask.filesExist(
etlConfig,
"connectionName",
"*.json"
);
List files
var list = com.toolsverse.etl.core.task.common.FileManagerTask.list(
etlConfig,
"connectionName",
"*.json"
);
if (list != null) {
for each (var file in list) {
etlConfig.log("Name:" + file.getName() +
", Size:" + file.getSize() +
", Path:" + file.getPath() +
", Last modified:" + file.getLastModified());
}
}
Write a file
com.toolsverse.etl.core.task.common.FileManagerTask.write(
etlConfig,
"connectionName",
filename,
payload
);
Read a file
var data = com.toolsverse.etl.core.task.common.FileManagerTask.read(
etlConfig,
"connectionName",
filename
);
Execute HTTP call via a manually created Alias
var alias = new com.toolsverse.etl.common.Alias();
alias.setUrl("http://localhost:8080/health");
alias.setTransport("com.toolsverse.io.HttpProcessor");
alias.setParams("method=GET");
var response = com.toolsverse.etl.core.task.common.FileManagerTask.execute(
alias, payload_or_null, true
);
Execute HTTP call using a named connection
var response = com.toolsverse.etl.core.task.common.FileManagerTask.execute(
etlConfig,
"connection_name",
payload_or_null,
true
);
Logging
com.toolsverse.util.log.Logger
com.toolsverse.util.log.Logger.log(
com.toolsverse.util.log.Logger.SEVERE,
null,
"Error doing something"
);
System Configuration
com.toolsverse.config.SystemConfig
var props = com.toolsverse.config.SystemConfig.instance().getProperties();
Working with Data Sets
com.toolsverse.etl.common.DataSet
var fldValue = dataSet.getFieldValue(currentRow, "InvoiceNo");
com.toolsverse.etl.common.FieldDef
var fldName = dataSet.getFieldDef("InvoiceNo").getNameToUse();
com.toolsverse.etl.common.DataSetRecord
var record = dataSet.getRecord(0);
High-level Transformations
com.toolsverse.etl.common.CommonEtlUtils
var newDs = com.toolsverse.etl.common.CommonEtlUtils.intersect(
dataSet,
with,
"id"
);
Connection Information
com.toolsverse.etl.common.Alias
var alias = etlConfig.getAliasesMap().get("Connection name");
ETL Engine Configuration
com.toolsverse.etl.core.config.EtlConfig
var alias = etlConfig.getAliasesMap().get("Connection name");
ETL Scenario
com.toolsverse.etl.core.engine.Scenario
var name = scenario.getName();
Summary
-
You can access any Java class directly from JavaScript in Etlworks.
-
The recommended method is to use fully qualified class names.
-
JavaType("class"), importPackage and JavaImporter are available when you need shorter names or many imports.
-
This guide provides a reference list of the most commonly used Etlworks packages and classes with examples.