Simple Run from Java Class

Hey,

I have read http://wiki.clovergui.net/doku.php?id=embedding_clover and more sources.

Now i want to run my simple Example in Java.
The example is made with cloverETL Designer gui.
The graph runs without mistakes and give me the right solution.

Libary used: cloveretl.engine.jar
EngineInitializer.initEngine(pluginsRootDirectory, configFileName, logHost);

i need a little bit of code to understand how i can run a cloverETL graph in my java class.

Thank you

Hi aruehmann,

in section “Loading graph definition from XML” is all what you are looking for.

“in” parameter in sample code is path to your graph file.

I hope this helps.

Thanks
that helps me a lot!

now i have the next problem:
pluginsRootDirectory, configFileName, logHost

where can i find values for thie parameters?

My code:


package org.company.components;

import java.io.IOException;
import java.io.InputStream;

import org.jetel.exception.ComponentNotReadyException;
import org.jetel.exception.GraphConfigurationException;
import org.jetel.exception.XMLConfigurationException;
import org.jetel.graph.TransformationGraph;
import org.jetel.graph.TransformationGraphXMLReaderWriter;
import org.jetel.graph.runtime.EngineInitializer;
import org.jetel.graph.runtime.GraphRuntimeContext;
import org.jetel.graph.runtime.IThreadManager;
import org.jetel.graph.runtime.SimpleThreadManager;
import org.jetel.graph.runtime.WatchDog;

import de.schlichtherle.io.FileInputStream;

public class NewComponent {
	public static void main(String[] args) throws IOException
	{
		  // engine customization
		  GraphRuntimeContext runtimeContext = new GraphRuntimeContext();

		   TransformationGraph graph = null;
		   InputStream graphInputStream = null;
		  
		  // engine initialization - should be called only once
		  
		  EngineInitializer.initEngine("C:\\Program Files\\CloverETL Designer Community\\plugins", "C:\\Users\\aruehmann\\workspace\\CSVtoXLSX\\workspace.prm", null);

		  
		  graphInputStream = new FileInputStream("C:\\Users\\aruehmann\\workspace\\CSVtoXLSX\\graph\\CSVtoXLSX.grf");
		  // graph loading
		  try {
			graph = TransformationGraphXMLReaderWriter.loadGraph(graphInputStream, runtimeContext);
		} catch (XMLConfigurationException | GraphConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		  // engine initialization
		  try {
			EngineInitializer.initGraph(graph, runtimeContext);
		} catch (ComponentNotReadyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		  // graph running
		  IThreadManager threadManager = new SimpleThreadManager();
		  WatchDog watchDog = new WatchDog(graph, runtimeContext);
		  threadManager.executeWatchDog(watchDog);


	}
}

Failure message:


org.jetel.exception.XMLConfigurationException: Can't load property definition from workspace.prm
	at org.jetel.graph.TransformationGraphXMLReaderWriter.instantiateProperties(TransformationGraphXMLReaderWriter.java:749)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:356)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:302)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.loadGraph(TransformationGraphXMLReaderWriter.java:231)
	at org.company.components.NewComponent.main(NewComponent.java:52)
Caused by: java.io.FileNotFoundException: workspace.prm (Das System kann die angegebene Datei nicht finden)

Can not find my mistake please help me

Thanks

The signature is:


public static void initEngine(java.lang.String pluginsRootDirectory,
                              java.lang.String defaultPropertiesFile,
                              java.lang.String logHost)

where:
* pluginsRootDirectory you set correctly
* defaultPropertiesFile is not path to .prm file but path to properties file for engine http://doc.cloveretl.com/documentation/ … tings.html
* logHost can be kept empty (“”)

You can also find information in javadoc available at http://sourceforge.net/projects/clovere … rel-3.3.0/

Thanks,
im sorry but i cant solve the problem…

my Code:


package org.company.components;

import java.io.IOException;
import java.io.InputStream;

import org.jetel.exception.ComponentNotReadyException;
import org.jetel.exception.GraphConfigurationException;
import org.jetel.exception.XMLConfigurationException;
import org.jetel.graph.TransformationGraph;
import org.jetel.graph.TransformationGraphXMLReaderWriter;
import org.jetel.graph.runtime.EngineInitializer;
import org.jetel.graph.runtime.GraphRuntimeContext;
import org.jetel.graph.runtime.IThreadManager;
import org.jetel.graph.runtime.SimpleThreadManager;
import org.jetel.graph.runtime.WatchDog;

import de.schlichtherle.io.FileInputStream;

public class NewComponent {
	public static void main(String[] args) throws IOException
	{
		  // engine customization
		  GraphRuntimeContext runtimeContext = new GraphRuntimeContext();

		   TransformationGraph graph = null;
		   InputStream graphInputStream = null;
		  
		  // engine initialization - should be called only once
		  
		  EngineInitializer.initEngine("D:\\eclipse\\plugins\\com.cloveretl.gui_3.3.0.021P\\lib\\plugins", "C:\\Program Files\\CloverETL Designer Community\\plugins\\com.cloveretl.gui_3.3.0.021P\\lib\\plugins\\org.jetel.engine\\plugin.xml", "");

		  
		  graphInputStream = new FileInputStream("C:\\cloverETL\\graph\\runGraph.grf");
		  // graph loading
		  try {
			graph = TransformationGraphXMLReaderWriter.loadGraph(graphInputStream, runtimeContext);
		} catch (XMLConfigurationException | GraphConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		  // engine initialization
		  try {
			EngineInitializer.initGraph(graph, runtimeContext);
		} catch (ComponentNotReadyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		  // graph running
		  IThreadManager threadManager = new SimpleThreadManager();
		  WatchDog watchDog = new WatchDog(graph, runtimeContext);
		  threadManager.executeWatchDog(watchDog);
	}
}

The Problem is TransformationGraphXMLReaderWriter.loadGraph
when i use my graph path i become this:


INFO  [main] - ***  CloverETL framework/transformation graph, (c) 2002-2012 Javlin a.s, released under GNU Lesser General Public License  ***
INFO  [main] - Running with CloverETL library version 3.3.0 build#021 compiled 15/10/2012 15:10:55
INFO  [main] - Running on 4 CPU(s), OS Windows 7, architecture amd64, Java version 1.7.0_09, max available memory for JVM 1223360 KB
INFO  [main] - Loading default properties from: defaultProperties
INFO  [main] - Loading Clover properties from file:C:\Program Files\CloverETL Designer Community\plugins\com.cloveretl.gui_3.3.0.021P\lib\plugins\org.jetel.engine\plugin.xml
DEBUG [main] - Plugin org.jetel.bulkloader loaded.
	id - org.jetel.bulkloader
	version - 3.3.0.
	provider-name - null
		component { className = org.jetel.component.OracleDataWriter; type = ORACLE_DATA_WRITER;  }
		component { className = org.jetel.component.DB2DataWriter; type = DB2_DATA_WRITER;  }
		component { className = org.jetel.component.InformixDataWriter; type = INFORMIX_DATA_WRITER;  }
		component { className = org.jetel.component.MsSqlDataWriter; type = MS_SQL_DATA_WRITER;  }
		component { className = org.jetel.component.MysqlDataWriter; type = MYSQL_DATA_WRITER;  }
		component { className = org.jetel.component.PostgreSqlDataWriter; type = POSTGRESQL_DATA_WRITER;  }
		component { className = org.jetel.component.InfobrightDataWriter; type = INFOBRIGHT_DATA_WRITER;  }

DEBUG [main] - Plugin org.jetel.component loaded.
	id - org.jetel.component
	version - 3.3.0.
	provider-name - Javlin a.s.
		component { className = org.jetel.component.DataReader; type = DATA_READER;  }
		component { className = org.jetel.component.DataWriter; type = DATA_WRITER;  }
		component { className = org.jetel.component.DelimitedDataReader; type = DELIMITED_DATA_READER;  }
		component { className = org.jetel.component.DelimitedDataWriter; type = DELIMITED_DATA_WRITER;  }
		component { className = org.jetel.component.SimpleCopy; type = SIMPLE_COPY;  }
		component { className = org.jetel.component.Concatenate; type = CONCATENATE;  }
		component { className = org.jetel.component.SimpleGather; type = SIMPLE_GATHER;  }
		component { className = org.jetel.component.Reformat; type = REFORMAT;  }
		component { className = org.jetel.component.DBInputTable; type = DB_INPUT_TABLE;  }
		component { className = org.jetel.component.Sort; type = SORT;  }
		component { className = org.jetel.component.DBOutputTable; type = DB_OUTPUT_TABLE;  }
		component { className = org.jetel.component.FixLenDataWriter; type = FIXLEN_DATA_WRITER;  }
		component { className = org.jetel.component.Dedup; type = DEDUP;  }
		component { className = org.jetel.component.FixLenDataReader; type = FIXLEN_DATA_READER;  }
		component { className = org.jetel.component.Merge; type = MERGE;  }
		component { className = org.jetel.component.MergeJoin; type = MERGE_JOIN;  }
		component { className = org.jetel.component.MergeJoin; type = EXT_MERGE_JOIN;  }
		component { className = org.jetel.component.MergeJoin; type = SORTED_JOIN;  }
		component { className = org.jetel.component.Trash; type = TRASH;  }
		component { className = org.jetel.component.DBExecute; type = DB_EXECUTE;  }
		component { className = org.jetel.component.HashJoin; type = HASH_JOIN;  }
		component { className = org.jetel.component.HashJoin; type = EXT_HASH_JOIN;  }
		component { className = org.jetel.component.CheckForeignKey; type = CHECK_FOREIGN_KEY;  }
		component { className = org.jetel.component.DBFDataReader; type = DBF_DATA_READER;  }
		component { className = org.jetel.component.DBFDataWriter; type = DBF_DATA_WRITER;  }
		component { className = org.jetel.component.ExtFilter; type = EXT_FILTER;  }
		component { className = org.jetel.component.ExtSort; type = EXT_SORT;  }
		component { className = org.jetel.component.SortWithinGroups; type = SORT_WITHIN_GROUPS;  }
		component { className = org.jetel.component.Partition; type = PARTITION;  }
		component { className = org.jetel.component.DataIntersection; type = DATA_INTERSECTION;  }
		component { className = org.jetel.component.Aggregate; type = AGGREGATE;  }
		component { className = org.jetel.component.SystemExecute; type = SYS_EXECUTE;  }
		component { className = org.jetel.component.RunGraph; type = RUN_GRAPH;  }
		component { className = org.jetel.component.HttpConnector; type = HTTP_CONNECTOR;  }
		component { className = org.jetel.component.KeyGenerator; type = KEY_GEN;  }
		component { className = org.jetel.component.AproxMergeJoin; type = APROX_MERGE_JOIN;  }
		component { className = org.jetel.component.DBJoin; type = DBJOIN;  }
		component { className = org.jetel.component.XLSReader; type = XLS_READER;  }
		component { className = org.jetel.component.XLSWriter; type = XLS_WRITER;  }
		component { className = org.jetel.component.CloverDataWriter; type = CLOVER_WRITER;  }
		component { className = org.jetel.component.CloverDataReader; type = CLOVER_READER;  }
		component { className = org.jetel.component.StructureWriter; type = STRUCTURE_WRITER;  }
		component { className = org.jetel.component.Normalizer; type = NORMALIZER;  }
		component { className = org.jetel.component.Denormalizer; type = DENORMALIZER;  }
		component { className = org.jetel.component.Rollup; type = ROLLUP;  }
		component { className = org.jetel.component.JmsReader; type = JMS_READER;  }
		component { className = org.jetel.component.JmsWriter; type = JMS_WRITER;  }
		component { className = org.jetel.component.LookupJoin; type = LOOKUP_JOIN;  }
		component { className = org.jetel.component.LookupTableReaderWriter; type = LOOKUP_TABLE_READER_WRITER;  }
		component { className = org.jetel.component.DataGenerator; type = DATA_GENERATOR;  }
		component { className = org.jetel.component.SequenceChecker; type = SEQUENCE_CHECKER;  }
		component { className = org.jetel.component.TextTableWriter; type = TEXT_TABLE_WRITER;  }
		component { className = org.jetel.component.XmlXPathReader; type = XML_XPATH_READER;  }
		component { className = org.jetel.component.XMLExtract; type = XML_EXTRACT;  }
		component { className = org.jetel.component.XmlReader; type = XML_READER;  }
		component { className = org.jetel.component.SpeedLimiter; type = SPEED_LIMITER;  }
		component { className = org.jetel.component.JavaExecute; type = JAVA_EXECUTE;  }
		component { className = org.jetel.component.XmlWriter; type = XML_WRITER;  }
		component { className = org.jetel.component.ExtXmlWriter; type = EXT_XML_WRITER;  }
		component { className = org.jetel.component.XSLDataTransformer; type = XSL_TRANSFORMER;  }

DEBUG [main] - Plugin org.jetel.connection loaded.
	id - org.jetel.connection
	version - 3.3.0.
	provider-name - Javlin a.s.
		connection { className = org.jetel.connection.jdbc.DBConnection; type = JDBC;  }
		connection { className = org.jetel.connection.jms.JmsConnection; type = JMS;  }

DEBUG [main] - Plugin org.jetel.ctlfunction loaded.
	id - org.jetel.ctlfunction
	version - 3.3.0.
	provider-name - Javlin a.s.
		ctlfunction { libraryName = math; className = org.jetel.ctl.extensions.MathLib;  }
		ctlfunction { libraryName = date; className = org.jetel.ctl.extensions.DateLib;  }
		ctlfunction { libraryName = string; className = org.jetel.ctl.extensions.StringLib;  }
		ctlfunction { libraryName = convert; className = org.jetel.ctl.extensions.ConvertLib;  }
		ctlfunction { libraryName = container; className = org.jetel.ctl.extensions.ContainerLib;  }
		ctlfunction { libraryName = random; className = org.jetel.ctl.extensions.RandomLib;  }
		ctlfunction { libraryName = util; className = org.jetel.ctl.extensions.UtilLib;  }
		ctlfunction { libraryName = dynamic; className = org.jetel.ctl.extensions.DynamicLib;  }

DEBUG [main] - Plugin org.jetel.engine loaded.
	id - org.jetel.engine
	version - 3.3.0.
	provider-name - Javlin a.s.
		dictionaryType { className = org.jetel.graph.dictionary.StringDictionaryType; type = string;  }
		dictionaryType { className = org.jetel.graph.dictionary.ObjectDictionaryType; type = object;  }
		dictionaryType { className = org.jetel.graph.dictionary.ReadableChannelDictionaryType; type = readable.channel;  }
		dictionaryType { className = org.jetel.graph.dictionary.WritableChannelDictionaryType; type = writable.channel;  }
		dictionaryType { className = org.jetel.graph.dictionary.IntegerDictionaryType; type = integer;  }
		dictionaryType { className = org.jetel.graph.dictionary.LongDictionaryType; type = long;  }
		dictionaryType { className = org.jetel.graph.dictionary.DecimalDictionaryType; type = decimal;  }
		dictionaryType { className = org.jetel.graph.dictionary.NumberDictionaryType; type = number;  }
		dictionaryType { className = org.jetel.graph.dictionary.DateDictionaryType; type = date;  }
		dictionaryType { className = org.jetel.graph.dictionary.BooleanDictionaryType; type = boolean;  }
		dictionaryType { className = org.jetel.graph.dictionary.ByteDictionaryType; type = byte;  }
		dictionaryType { className = org.jetel.graph.dictionary.ListDictionaryType; type = list;  }
		dictionaryType { className = org.jetel.graph.dictionary.MapDictionaryType; type = map;  }
		tlCompiler { className = org.jetel.ctl.TLCompiler; type = simple.compiler;  }
		ctlfunction { libraryName = integral; className = org.jetel.ctl.extensions.IntegralLib;  }

DEBUG [main] - Plugin org.jetel.jdbc loaded.
	id - org.jetel.jdbc
	version - 3.3.0.
	provider-name - Javlin a.s.
		jdbcSpecific { name = Generic; class = org.jetel.connection.jdbc.specific.impl.DefaultJdbcSpecific; database = GENERIC;  }
		jdbcSpecific { name = DB2; class = org.jetel.connection.jdbc.specific.impl.DB2Specific; database = DB2;  }
		jdbcSpecific { name = Derby; class = org.jetel.connection.jdbc.specific.impl.DerbySpecific; productName = Apache Derby; database = DERBY;  }
		jdbcSpecific { name = Firebird; class = org.jetel.connection.jdbc.specific.impl.FirebirdSpecific; database = FIREBIRD;  }
		jdbcSpecific { name = Generic ODBC; class = org.jetel.connection.jdbc.specific.impl.GenericODBCSpecific; database = GENERICODBC;  }
		jdbcSpecific { name = Informix; class = org.jetel.connection.jdbc.specific.impl.InformixSpecific; database = INFORMIX;  }
		jdbcSpecific { name = Microsoft Access; class = org.jetel.connection.jdbc.specific.impl.MSAccessSpecific; database = MSACCESS;  }
		jdbcSpecific { name = MS SQL Server 2008-2012; class = org.jetel.connection.jdbc.specific.impl.MSSQLSpecific; productName = Microsoft SQL Server; database = MSSQL;  }
		jdbcSpecific { name = MS SQL Server 2000-2005; class = org.jetel.connection.jdbc.specific.impl.MSSQLSpecific2005; database = MSSQL2005;  }
		jdbcSpecific { name = MySQL; class = org.jetel.connection.jdbc.specific.impl.MySQLSpecific; productName = MySQL; database = MYSQL;  }
		jdbcSpecific { name = Oracle; class = org.jetel.connection.jdbc.specific.impl.OracleSpecific; productName = Oracle; database = ORACLE;  }
		jdbcSpecific { name = Pervasive; class = org.jetel.connection.jdbc.specific.impl.PervasiveSpecific; database = PERVASIVE;  }
		jdbcSpecific { name = PostgreSQL; class = org.jetel.connection.jdbc.specific.impl.PostgreSpecific; database = POSTGRE;  }
		jdbcSpecific { name = Sybase; class = org.jetel.connection.jdbc.specific.impl.SybaseSpecific; database = SYBASE;  }
		jdbcSpecific { name = SQLite; class = org.jetel.connection.jdbc.specific.impl.SQLiteSpecific; database = SQLITE;  }
		jdbcDriver { driverLibrary = lib/mysql/mysql-connector-java-5.1.15-bin.jar; jdbcSpecific = MYSQL; name = MySQL; dbDriver = org.gjt.mm.mysql.Driver; jdbc.zeroDateTimeBehavior = convertToNull; urlHint = jdbc:mysql://hostname:3306/database; database = MYSQL;  }
		jdbcDriver { driverLibrary = lib/oracle/ojdbc6.jar; jdbcSpecific = ORACLE; name = Oracle; dbDriver = oracle.jdbc.OracleDriver; urlHint = jdbc:oracle:thin:@host:1521:SID,jdbc:oracle:thin:@cluster-alias:1521/service_name,jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=service_name))),jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=service_name))),jdbc:oracle:thin:@host:1521/service_name; database = ORACLE;  }
		jdbcDriver { driverLibrary = lib/postgre/postgresql-8.3-603.jdbc3.jar; jdbcSpecific = POSTGRE; name = PostgreSQL; dbDriver = org.postgresql.Driver; urlHint = jdbc:postgresql://hostname/database; database = POSTGRE;  }
		jdbcDriver { driverLibrary = lib/jtds/jtds-1.2.4.jar; jdbcSpecific = MSSQL; name = Microsoft SQL Server; dbDriver = net.sourceforge.jtds.jdbc.Driver; urlHint = jdbc:jtds:sqlserver://hostname:1433/database; database = MSSQL;  }
		jdbcDriver { driverLibrary = sun.jdbc.odbc.JdbcOdbcDriver; jdbcSpecific = GENERICODBC; name = Generic ODBC; dbDriver = sun.jdbc.odbc.JdbcOdbcDriver; urlHint = jdbc:odbc:dsn_source;; database = GENERICODBC;  }
		jdbcDriver { driverLibrary = sun.jdbc.odbc.JdbcOdbcDriver; jdbcSpecific = MSACCESS; name = Microsoft Access; dbDriver = sun.jdbc.odbc.JdbcOdbcDriver; urlHint = jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=database_file,jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=database_file,jdbc:odbc:odbc_source_name; database = MSACCESS;  }
		jdbcDriver { driverLibrary = lib/jtds/jtds-1.2.4.jar; jdbcSpecific = SYBASE; name = Sybase; dbDriver = net.sourceforge.jtds.jdbc.Driver; urlHint = jdbc:jtds:sybase://hostname:7100/database; database = SYBASE;  }
		jdbcDriver { driverLibrary = lib/sqlite/sqlite-jdbc-3.6.20.1.jar; jdbcSpecific = SQLITE; name = SQLite; dbDriver = org.sqlite.JDBC; urlHint = jdbc:sqlite:C:/database; database = SQLITE;  }
		jdbcDriver { driverLibrary = lib/derby/derbyclient.jar; jdbcSpecific = DERBY; name = Derby; dbDriver = org.apache.derby.jdbc.ClientDriver; urlHint = jdbc:derby://hostname:1527/derby.db; database = DERBY;  }
		jdbcDriver { driverLibrary = lib/firebird/jaybird-full-2.1.6.jar; jdbcSpecific = FIREBIRD; name = Firebird; dbDriver = org.firebirdsql.jdbc.FBDriver; urlHint = jdbc:firebirdsql:localhost/3050:/firebird/test.gdb; database = FIREBIRD;  }

DEBUG [main] - Plugin org.jetel.license loaded.
	id - org.jetel.license
	version - 3.3.0.
	provider-name - Javlin a.s.

DEBUG [main] - Plugin org.jetel.lookup loaded.
	id - org.jetel.lookup
	version - 3.3.0.
	provider-name - Javlin a.s.
		lookup { className = org.jetel.lookup.SimpleLookupTable; type = simpleLookup;  }
		lookup { className = org.jetel.lookup.DBLookupTable; type = dbLookup;  }
		lookup { className = org.jetel.lookup.RangeLookupTable; type = rangeLookup;  }

DEBUG [main] - Plugin org.jetel.sequence loaded.
	id - org.jetel.sequence
	version - 3.3.0.
	provider-name - Javlin a.s.
		sequence { className = org.jetel.sequence.SimpleSequence; type = SIMPLE_SEQUENCE;  }
		sequence { className = org.jetel.sequence.PrimitiveSequence; type = PRIMITIVE_SEQUENCE;  }

DEBUG [main] - Plugin org.jetel.thirdparty loaded.
	id - org.jetel.thirdparty
	version - 3.3.0.
	provider-name - Javlin a.s.
		component { className = org.jetel.component.Filter; type = FILTER;  }
		component { className = com.linagora.component.LdapReader; type = LDAP_READER;  }
		component { className = com.linagora.component.LdapWriter; type = LDAP_WRITER;  }

DEBUG [main] - Plugin org.jetel.tlfunction loaded.
	id - org.jetel.tlfunction
	version - 3.3.0.
	provider-name - Javlin a.s.
		tlfunction { libraryName = math; className = org.jetel.interpreter.extensions.MathLib; function = sqrt,log,log10,exp,round,pow,pi,e,random,random_gaussian,random_boolean,random_int,random_long,abs,bit_and,bit_or,bit_xor,bit_set,bit_invert,bit_is_set,bit_lshift,bit_rshift;  }
		tlfunction { libraryName = date; className = org.jetel.interpreter.extensions.DateLib; function = today,dateadd,datediff,trunc,trunc_date,random_date;  }
		tlfunction { libraryName = string; className = org.jetel.interpreter.extensions.StringLib; function = concat,uppercase,lowercase,substring,left,right,trim,length,replace,split,char_at,is_blank,is_ascii,is_number,is_integer,is_long,is_date,remove_diacritic,remove_blank_space,get_alphanumeric_chars,translate,join,index_of,count_char,chop,remove_nonprintable,remove_nonascii,find,cut,random_string;  }
		tlfunction { libraryName = convert; className = org.jetel.interpreter.extensions.ConvertLib; function = num2str,date2str,str2date,date2num,str2num,try_convert,base64byte,byte2base64,bits2str,str2bits,hex2byte,byte2hex,num2num,num2bool,bool2num,str2bool,long2date,date2long,to_string,md5,sha,long2pacdecimal,pacdecimal2long,get_field_name,get_field_type;  }
		tlfunction { libraryName = container; className = org.jetel.interpreter.extensions.ContainerLib; function = remove_all,push,pop,poll,remove,insert,sort,copy,reverse,dict_put_str,dict_get_str;  }

org.jetel.exception.XMLConfigurationException: Can't load property definition from workspace.prm
	at org.jetel.graph.TransformationGraphXMLReaderWriter.instantiateProperties(TransformationGraphXMLReaderWriter.java:749)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:356)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:302)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.loadGraph(TransformationGraphXMLReaderWriter.java:231)
	at org.company.components.NewComponent.main(NewComponent.java:36)
Caused by: java.io.FileNotFoundException: workspace.prm (Das System kann die angegebene Datei nicht finden)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at org.jetel.util.file.FileUtils.getInputStream(FileUtils.java:527)
	at org.jetel.util.file.FileUtils.getReadableChannel(FileUtils.java:437)
	at org.jetel.graph.TransformationGraph.loadGraphPropertiesSafe(TransformationGraph.java:925)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.instantiateProperties(TransformationGraphXMLReaderWriter.java:747)
	... 4 more
Exception in thread "main" java.lang.NullPointerException
	at org.jetel.graph.runtime.EngineInitializer.initGraph(EngineInitializer.java:248)
	at org.company.components.NewComponent.main(NewComponent.java:44)

if i use the workspace for graphInputStream = new FileInputStream(“C:\\cloverETL\\workspace.prm”); i become this:


INFO  [main] - ***  CloverETL framework/transformation graph, (c) 2002-2012 Javlin a.s, released under GNU Lesser General Public License  ***
INFO  [main] - Running with CloverETL library version 3.3.0 build#021 compiled 15/10/2012 15:10:55
INFO  [main] - Running on 4 CPU(s), OS Windows 7, architecture amd64, Java version 1.7.0_09, max available memory for JVM 1223360 KB
INFO  [main] - Loading default properties from: defaultProperties
INFO  [main] - Loading Clover properties from file:C:\Program Files\CloverETL Designer Community\plugins\com.cloveretl.gui_3.3.0.021P\lib\plugins\org.jetel.engine\plugin.xml
DEBUG [main] - Plugin org.jetel.bulkloader loaded.
	id - org.jetel.bulkloader
	version - 3.3.0.
	provider-name - null
		component { className = org.jetel.component.OracleDataWriter; type = ORACLE_DATA_WRITER;  }
		component { className = org.jetel.component.DB2DataWriter; type = DB2_DATA_WRITER;  }
		component { className = org.jetel.component.InformixDataWriter; type = INFORMIX_DATA_WRITER;  }
		component { className = org.jetel.component.MsSqlDataWriter; type = MS_SQL_DATA_WRITER;  }
		component { className = org.jetel.component.MysqlDataWriter; type = MYSQL_DATA_WRITER;  }
		component { className = org.jetel.component.PostgreSqlDataWriter; type = POSTGRESQL_DATA_WRITER;  }
		component { className = org.jetel.component.InfobrightDataWriter; type = INFOBRIGHT_DATA_WRITER;  }

DEBUG [main] - Plugin org.jetel.component loaded.
	id - org.jetel.component
	version - 3.3.0.
	provider-name - Javlin a.s.
		component { className = org.jetel.component.DataReader; type = DATA_READER;  }
		component { className = org.jetel.component.DataWriter; type = DATA_WRITER;  }
		component { className = org.jetel.component.DelimitedDataReader; type = DELIMITED_DATA_READER;  }
		component { className = org.jetel.component.DelimitedDataWriter; type = DELIMITED_DATA_WRITER;  }
		component { className = org.jetel.component.SimpleCopy; type = SIMPLE_COPY;  }
		component { className = org.jetel.component.Concatenate; type = CONCATENATE;  }
		component { className = org.jetel.component.SimpleGather; type = SIMPLE_GATHER;  }
		component { className = org.jetel.component.Reformat; type = REFORMAT;  }
		component { className = org.jetel.component.DBInputTable; type = DB_INPUT_TABLE;  }
		component { className = org.jetel.component.Sort; type = SORT;  }
		component { className = org.jetel.component.DBOutputTable; type = DB_OUTPUT_TABLE;  }
		component { className = org.jetel.component.FixLenDataWriter; type = FIXLEN_DATA_WRITER;  }
		component { className = org.jetel.component.Dedup; type = DEDUP;  }
		component { className = org.jetel.component.FixLenDataReader; type = FIXLEN_DATA_READER;  }
		component { className = org.jetel.component.Merge; type = MERGE;  }
		component { className = org.jetel.component.MergeJoin; type = MERGE_JOIN;  }
		component { className = org.jetel.component.MergeJoin; type = EXT_MERGE_JOIN;  }
		component { className = org.jetel.component.MergeJoin; type = SORTED_JOIN;  }
		component { className = org.jetel.component.Trash; type = TRASH;  }
		component { className = org.jetel.component.DBExecute; type = DB_EXECUTE;  }
		component { className = org.jetel.component.HashJoin; type = HASH_JOIN;  }
		component { className = org.jetel.component.HashJoin; type = EXT_HASH_JOIN;  }
		component { className = org.jetel.component.CheckForeignKey; type = CHECK_FOREIGN_KEY;  }
		component { className = org.jetel.component.DBFDataReader; type = DBF_DATA_READER;  }
		component { className = org.jetel.component.DBFDataWriter; type = DBF_DATA_WRITER;  }
		component { className = org.jetel.component.ExtFilter; type = EXT_FILTER;  }
		component { className = org.jetel.component.ExtSort; type = EXT_SORT;  }
		component { className = org.jetel.component.SortWithinGroups; type = SORT_WITHIN_GROUPS;  }
		component { className = org.jetel.component.Partition; type = PARTITION;  }
		component { className = org.jetel.component.DataIntersection; type = DATA_INTERSECTION;  }
		component { className = org.jetel.component.Aggregate; type = AGGREGATE;  }
		component { className = org.jetel.component.SystemExecute; type = SYS_EXECUTE;  }
		component { className = org.jetel.component.RunGraph; type = RUN_GRAPH;  }
		component { className = org.jetel.component.HttpConnector; type = HTTP_CONNECTOR;  }
		component { className = org.jetel.component.KeyGenerator; type = KEY_GEN;  }
		component { className = org.jetel.component.AproxMergeJoin; type = APROX_MERGE_JOIN;  }
		component { className = org.jetel.component.DBJoin; type = DBJOIN;  }
		component { className = org.jetel.component.XLSReader; type = XLS_READER;  }
		component { className = org.jetel.component.XLSWriter; type = XLS_WRITER;  }
		component { className = org.jetel.component.CloverDataWriter; type = CLOVER_WRITER;  }
		component { className = org.jetel.component.CloverDataReader; type = CLOVER_READER;  }
		component { className = org.jetel.component.StructureWriter; type = STRUCTURE_WRITER;  }
		component { className = org.jetel.component.Normalizer; type = NORMALIZER;  }
		component { className = org.jetel.component.Denormalizer; type = DENORMALIZER;  }
		component { className = org.jetel.component.Rollup; type = ROLLUP;  }
		component { className = org.jetel.component.JmsReader; type = JMS_READER;  }
		component { className = org.jetel.component.JmsWriter; type = JMS_WRITER;  }
		component { className = org.jetel.component.LookupJoin; type = LOOKUP_JOIN;  }
		component { className = org.jetel.component.LookupTableReaderWriter; type = LOOKUP_TABLE_READER_WRITER;  }
		component { className = org.jetel.component.DataGenerator; type = DATA_GENERATOR;  }
		component { className = org.jetel.component.SequenceChecker; type = SEQUENCE_CHECKER;  }
		component { className = org.jetel.component.TextTableWriter; type = TEXT_TABLE_WRITER;  }
		component { className = org.jetel.component.XmlXPathReader; type = XML_XPATH_READER;  }
		component { className = org.jetel.component.XMLExtract; type = XML_EXTRACT;  }
		component { className = org.jetel.component.XmlReader; type = XML_READER;  }
		component { className = org.jetel.component.SpeedLimiter; type = SPEED_LIMITER;  }
		component { className = org.jetel.component.JavaExecute; type = JAVA_EXECUTE;  }
		component { className = org.jetel.component.XmlWriter; type = XML_WRITER;  }
		component { className = org.jetel.component.ExtXmlWriter; type = EXT_XML_WRITER;  }
		component { className = org.jetel.component.XSLDataTransformer; type = XSL_TRANSFORMER;  }

DEBUG [main] - Plugin org.jetel.connection loaded.
	id - org.jetel.connection
	version - 3.3.0.
	provider-name - Javlin a.s.
		connection { className = org.jetel.connection.jdbc.DBConnection; type = JDBC;  }
		connection { className = org.jetel.connection.jms.JmsConnection; type = JMS;  }

DEBUG [main] - Plugin org.jetel.ctlfunction loaded.
	id - org.jetel.ctlfunction
	version - 3.3.0.
	provider-name - Javlin a.s.
		ctlfunction { libraryName = math; className = org.jetel.ctl.extensions.MathLib;  }
		ctlfunction { libraryName = date; className = org.jetel.ctl.extensions.DateLib;  }
		ctlfunction { libraryName = string; className = org.jetel.ctl.extensions.StringLib;  }
		ctlfunction { libraryName = convert; className = org.jetel.ctl.extensions.ConvertLib;  }
		ctlfunction { libraryName = container; className = org.jetel.ctl.extensions.ContainerLib;  }
		ctlfunction { libraryName = random; className = org.jetel.ctl.extensions.RandomLib;  }
		ctlfunction { libraryName = util; className = org.jetel.ctl.extensions.UtilLib;  }
		ctlfunction { libraryName = dynamic; className = org.jetel.ctl.extensions.DynamicLib;  }

DEBUG [main] - Plugin org.jetel.engine loaded.
	id - org.jetel.engine
	version - 3.3.0.
	provider-name - Javlin a.s.
		dictionaryType { className = org.jetel.graph.dictionary.StringDictionaryType; type = string;  }
		dictionaryType { className = org.jetel.graph.dictionary.ObjectDictionaryType; type = object;  }
		dictionaryType { className = org.jetel.graph.dictionary.ReadableChannelDictionaryType; type = readable.channel;  }
		dictionaryType { className = org.jetel.graph.dictionary.WritableChannelDictionaryType; type = writable.channel;  }
		dictionaryType { className = org.jetel.graph.dictionary.IntegerDictionaryType; type = integer;  }
		dictionaryType { className = org.jetel.graph.dictionary.LongDictionaryType; type = long;  }
		dictionaryType { className = org.jetel.graph.dictionary.DecimalDictionaryType; type = decimal;  }
		dictionaryType { className = org.jetel.graph.dictionary.NumberDictionaryType; type = number;  }
		dictionaryType { className = org.jetel.graph.dictionary.DateDictionaryType; type = date;  }
		dictionaryType { className = org.jetel.graph.dictionary.BooleanDictionaryType; type = boolean;  }
		dictionaryType { className = org.jetel.graph.dictionary.ByteDictionaryType; type = byte;  }
		dictionaryType { className = org.jetel.graph.dictionary.ListDictionaryType; type = list;  }
		dictionaryType { className = org.jetel.graph.dictionary.MapDictionaryType; type = map;  }
		tlCompiler { className = org.jetel.ctl.TLCompiler; type = simple.compiler;  }
		ctlfunction { libraryName = integral; className = org.jetel.ctl.extensions.IntegralLib;  }

DEBUG [main] - Plugin org.jetel.jdbc loaded.
	id - org.jetel.jdbc
	version - 3.3.0.
	provider-name - Javlin a.s.
		jdbcSpecific { name = Generic; class = org.jetel.connection.jdbc.specific.impl.DefaultJdbcSpecific; database = GENERIC;  }
		jdbcSpecific { name = DB2; class = org.jetel.connection.jdbc.specific.impl.DB2Specific; database = DB2;  }
		jdbcSpecific { name = Derby; class = org.jetel.connection.jdbc.specific.impl.DerbySpecific; productName = Apache Derby; database = DERBY;  }
		jdbcSpecific { name = Firebird; class = org.jetel.connection.jdbc.specific.impl.FirebirdSpecific; database = FIREBIRD;  }
		jdbcSpecific { name = Generic ODBC; class = org.jetel.connection.jdbc.specific.impl.GenericODBCSpecific; database = GENERICODBC;  }
		jdbcSpecific { name = Informix; class = org.jetel.connection.jdbc.specific.impl.InformixSpecific; database = INFORMIX;  }
		jdbcSpecific { name = Microsoft Access; class = org.jetel.connection.jdbc.specific.impl.MSAccessSpecific; database = MSACCESS;  }
		jdbcSpecific { name = MS SQL Server 2008-2012; class = org.jetel.connection.jdbc.specific.impl.MSSQLSpecific; productName = Microsoft SQL Server; database = MSSQL;  }
		jdbcSpecific { name = MS SQL Server 2000-2005; class = org.jetel.connection.jdbc.specific.impl.MSSQLSpecific2005; database = MSSQL2005;  }
		jdbcSpecific { name = MySQL; class = org.jetel.connection.jdbc.specific.impl.MySQLSpecific; productName = MySQL; database = MYSQL;  }
		jdbcSpecific { name = Oracle; class = org.jetel.connection.jdbc.specific.impl.OracleSpecific; productName = Oracle; database = ORACLE;  }
		jdbcSpecific { name = Pervasive; class = org.jetel.connection.jdbc.specific.impl.PervasiveSpecific; database = PERVASIVE;  }
		jdbcSpecific { name = PostgreSQL; class = org.jetel.connection.jdbc.specific.impl.PostgreSpecific; database = POSTGRE;  }
		jdbcSpecific { name = Sybase; class = org.jetel.connection.jdbc.specific.impl.SybaseSpecific; database = SYBASE;  }
		jdbcSpecific { name = SQLite; class = org.jetel.connection.jdbc.specific.impl.SQLiteSpecific; database = SQLITE;  }
		jdbcDriver { driverLibrary = lib/mysql/mysql-connector-java-5.1.15-bin.jar; jdbcSpecific = MYSQL; name = MySQL; dbDriver = org.gjt.mm.mysql.Driver; jdbc.zeroDateTimeBehavior = convertToNull; urlHint = jdbc:mysql://hostname:3306/database; database = MYSQL;  }
		jdbcDriver { driverLibrary = lib/oracle/ojdbc6.jar; jdbcSpecific = ORACLE; name = Oracle; dbDriver = oracle.jdbc.OracleDriver; urlHint = jdbc:oracle:thin:@host:1521:SID,jdbc:oracle:thin:@cluster-alias:1521/service_name,jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=service_name))),jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=service_name))),jdbc:oracle:thin:@host:1521/service_name; database = ORACLE;  }
		jdbcDriver { driverLibrary = lib/postgre/postgresql-8.3-603.jdbc3.jar; jdbcSpecific = POSTGRE; name = PostgreSQL; dbDriver = org.postgresql.Driver; urlHint = jdbc:postgresql://hostname/database; database = POSTGRE;  }
		jdbcDriver { driverLibrary = lib/jtds/jtds-1.2.4.jar; jdbcSpecific = MSSQL; name = Microsoft SQL Server; dbDriver = net.sourceforge.jtds.jdbc.Driver; urlHint = jdbc:jtds:sqlserver://hostname:1433/database; database = MSSQL;  }
		jdbcDriver { driverLibrary = sun.jdbc.odbc.JdbcOdbcDriver; jdbcSpecific = GENERICODBC; name = Generic ODBC; dbDriver = sun.jdbc.odbc.JdbcOdbcDriver; urlHint = jdbc:odbc:dsn_source;; database = GENERICODBC;  }
		jdbcDriver { driverLibrary = sun.jdbc.odbc.JdbcOdbcDriver; jdbcSpecific = MSACCESS; name = Microsoft Access; dbDriver = sun.jdbc.odbc.JdbcOdbcDriver; urlHint = jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=database_file,jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=database_file,jdbc:odbc:odbc_source_name; database = MSACCESS;  }
		jdbcDriver { driverLibrary = lib/jtds/jtds-1.2.4.jar; jdbcSpecific = SYBASE; name = Sybase; dbDriver = net.sourceforge.jtds.jdbc.Driver; urlHint = jdbc:jtds:sybase://hostname:7100/database; database = SYBASE;  }
		jdbcDriver { driverLibrary = lib/sqlite/sqlite-jdbc-3.6.20.1.jar; jdbcSpecific = SQLITE; name = SQLite; dbDriver = org.sqlite.JDBC; urlHint = jdbc:sqlite:C:/database; database = SQLITE;  }
		jdbcDriver { driverLibrary = lib/derby/derbyclient.jar; jdbcSpecific = DERBY; name = Derby; dbDriver = org.apache.derby.jdbc.ClientDriver; urlHint = jdbc:derby://hostname:1527/derby.db; database = DERBY;  }
		jdbcDriver { driverLibrary = lib/firebird/jaybird-full-2.1.6.jar; jdbcSpecific = FIREBIRD; name = Firebird; dbDriver = org.firebirdsql.jdbc.FBDriver; urlHint = jdbc:firebirdsql:localhost/3050:/firebird/test.gdb; database = FIREBIRD;  }

DEBUG [main] - Plugin org.jetel.license loaded.
	id - org.jetel.license
	version - 3.3.0.
	provider-name - Javlin a.s.

DEBUG [main] - Plugin org.jetel.lookup loaded.
	id - org.jetel.lookup
	version - 3.3.0.
	provider-name - Javlin a.s.
		lookup { className = org.jetel.lookup.SimpleLookupTable; type = simpleLookup;  }
		lookup { className = org.jetel.lookup.DBLookupTable; type = dbLookup;  }
		lookup { className = org.jetel.lookup.RangeLookupTable; type = rangeLookup;  }

DEBUG [main] - Plugin org.jetel.sequence loaded.
	id - org.jetel.sequence
	version - 3.3.0.
	provider-name - Javlin a.s.
		sequence { className = org.jetel.sequence.SimpleSequence; type = SIMPLE_SEQUENCE;  }
		sequence { className = org.jetel.sequence.PrimitiveSequence; type = PRIMITIVE_SEQUENCE;  }

DEBUG [main] - Plugin org.jetel.thirdparty loaded.
	id - org.jetel.thirdparty
	version - 3.3.0.
	provider-name - Javlin a.s.
		component { className = org.jetel.component.Filter; type = FILTER;  }
		component { className = com.linagora.component.LdapReader; type = LDAP_READER;  }
		component { className = com.linagora.component.LdapWriter; type = LDAP_WRITER;  }

DEBUG [main] - Plugin org.jetel.tlfunction loaded.
	id - org.jetel.tlfunction
	version - 3.3.0.
	provider-name - Javlin a.s.
		tlfunction { libraryName = math; className = org.jetel.interpreter.extensions.MathLib; function = sqrt,log,log10,exp,round,pow,pi,e,random,random_gaussian,random_boolean,random_int,random_long,abs,bit_and,bit_or,bit_xor,bit_set,bit_invert,bit_is_set,bit_lshift,bit_rshift;  }
		tlfunction { libraryName = date; className = org.jetel.interpreter.extensions.DateLib; function = today,dateadd,datediff,trunc,trunc_date,random_date;  }
		tlfunction { libraryName = string; className = org.jetel.interpreter.extensions.StringLib; function = concat,uppercase,lowercase,substring,left,right,trim,length,replace,split,char_at,is_blank,is_ascii,is_number,is_integer,is_long,is_date,remove_diacritic,remove_blank_space,get_alphanumeric_chars,translate,join,index_of,count_char,chop,remove_nonprintable,remove_nonascii,find,cut,random_string;  }
		tlfunction { libraryName = convert; className = org.jetel.interpreter.extensions.ConvertLib; function = num2str,date2str,str2date,date2num,str2num,try_convert,base64byte,byte2base64,bits2str,str2bits,hex2byte,byte2hex,num2num,num2bool,bool2num,str2bool,long2date,date2long,to_string,md5,sha,long2pacdecimal,pacdecimal2long,get_field_name,get_field_type;  }
		tlfunction { libraryName = container; className = org.jetel.interpreter.extensions.ContainerLib; function = remove_all,push,pop,poll,remove,insert,sort,copy,reverse,dict_put_str,dict_get_str;  }

[Fatal Error] :1:1: Content ist nicht zulässig in Prolog.
ERROR [main] - Error when parsing graph's XML definition  --> on line 1 row 1
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content ist nicht zulässig in Prolog.
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
	at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.prepareDocument(TransformationGraphXMLReaderWriter.java:260)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:300)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.loadGraph(TransformationGraphXMLReaderWriter.java:231)
	at org.company.components.NewComponent.main(NewComponent.java:36)
org.jetel.exception.XMLConfigurationException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content ist nicht zulässig in Prolog.
	at org.jetel.graph.TransformationGraphXMLReaderWriter.prepareDocument(TransformationGraphXMLReaderWriter.java:268)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:300)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.loadGraph(TransformationGraphXMLReaderWriter.java:231)
	at org.company.components.NewComponent.main(NewComponent.java:36)
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content ist nicht zulässig in Prolog.
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
	at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.prepareDocument(TransformationGraphXMLReaderWriter.java:260)
	... 3 more
Exception in thread "main" java.lang.NullPointerException
	at org.jetel.graph.runtime.EngineInitializer.initGraph(EngineInitializer.java:248)
	at org.company.components.NewComponent.main(NewComponent.java:44)

I dont understand the problem and all javadoc and forum reads cant help me.
Sorry for my maybe stupid posts!

Thanks for your help

Hi,

now there are 2 problems:

1] second parameter EngineInitializer.initEngine should be path to engine properties file, as I mentioned last time. It is plain key=value file, not xml. Please take a look into referred documentation.

2] use runtimeContext.setContextURL(workspace_prm_folder) to define folder where workspace.prm is located

I hope this helps.

Thank you but i cant fix the problem

1] second parameter EngineInitializer.initEngine should be path to engine properties file, as I mentioned last time. It is plain key=value file, not xml. Please take a look into referred documentation.

where is the path to engine? I cant find the “org/jetel/data/” subdirectory!

I was unable to create a local defaultProperties file on my own.

How can i fix the problem this is the last test for my evaluation.
I need for my company a running version next week please help me.

Thank you

Hi,

In http://sourceforge.net/projects/clovere … p/download is file “cloverETL\cloveretl.engine\src\org\jetel\data\defaultProperties”. That is it.

Thanks,

my graph runs perfect with the new defaultPropertie file in clover.

In java i had the same mistake:


package org.company.components;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import org.jetel.exception.ComponentNotReadyException;
import org.jetel.exception.GraphConfigurationException;
import org.jetel.exception.XMLConfigurationException;
import org.jetel.graph.TransformationGraph;
import org.jetel.graph.TransformationGraphXMLReaderWriter;
import org.jetel.graph.runtime.EngineInitializer;
import org.jetel.graph.runtime.GraphRuntimeContext;
import org.jetel.graph.runtime.IThreadManager;
import org.jetel.graph.runtime.SimpleThreadManager;
import org.jetel.graph.runtime.WatchDog;

import de.schlichtherle.io.FileInputStream;

public class NewComponent {
	public static void main(String[] args) throws IOException
	{
		  // engine customization
		  GraphRuntimeContext runtimeContext = new GraphRuntimeContext();

		   TransformationGraph graph = null;
		   InputStream graphInputStream = null;
		   
		   URL workspace = new URL("file:///C:/cloverETL");
		  
		  // engine initialization - should be called only once
		  runtimeContext.setContextURL(workspace); 
		  
		  EngineInitializer.initEngine("D:\\eclipse\\plugins\\com.cloveretl.gui_3.3.0.021P\\lib\\plugins", "C:\\Users\\aruehmann\\Desktop\\cloverETL\\defaultProperties", "");

		  
		  graphInputStream = new FileInputStream("C:\\cloverETL\\workspace.prm");
		  // graph loading
		try {
			graph = TransformationGraphXMLReaderWriter.loadGraph(graphInputStream, runtimeContext);
		} catch (XMLConfigurationException | GraphConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		  // engine initialization
		  try {
			EngineInitializer.initGraph(graph, runtimeContext);
		} catch (ComponentNotReadyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		  // graph running
		  IThreadManager threadManager = new SimpleThreadManager();
		  WatchDog watchDog = new WatchDog(graph, runtimeContext);
		  threadManager.executeWatchDog(watchDog);
	}
}


[Fatal Error] :1:1: Content ist nicht zulässig in Prolog.
ERROR [main] - Error when parsing graph's XML definition  --> on line 1 row 1
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content ist nicht zulässig in Prolog.
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
	at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.prepareDocument(TransformationGraphXMLReaderWriter.java:260)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:300)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.loadGraph(TransformationGraphXMLReaderWriter.java:231)
	at org.company.components.NewComponent.main(NewComponent.java:40)
org.jetel.exception.XMLConfigurationException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content ist nicht zulässig in Prolog.
	at org.jetel.graph.TransformationGraphXMLReaderWriter.prepareDocument(TransformationGraphXMLReaderWriter.java:268)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.read(TransformationGraphXMLReaderWriter.java:300)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.loadGraph(TransformationGraphXMLReaderWriter.java:231)
	at org.company.components.NewComponent.main(NewComponent.java:40)
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content ist nicht zulässig in Prolog.
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
	at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
	at org.jetel.graph.TransformationGraphXMLReaderWriter.prepareDocument(TransformationGraphXMLReaderWriter.java:260)
	... 3 more
Exception in thread "main" java.lang.NullPointerException
	at org.jetel.graph.runtime.EngineInitializer.initGraph(EngineInitializer.java:248)
	at org.company.components.NewComponent.main(NewComponent.java:48)

Whats wrong i use the defaultProperties file and set Conext URL right!
It is a simple graph to transform csv data in xls data.

Is there a easier way to execute my graph from java or can you help me to fix the problems?

Thank you very much for your help and time

Andree

Hi,

Seems to me from your Java code, you are trying to load workspace.prm file (parameters passed to graph) instead of *.grf graph file.


graphInputStream = new FileInputStream("C:\\cloverETL\\workspace.prm");
        // graph loading
      try {
         graph = TransformationGraphXMLReaderWriter.loadGraph(graphInputStream, runtimeContext);
      } catch (XMLConfigurationException | GraphConfigurationException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }

change to something like:


graphInputStream = new FileInputStream("C:\\cloverETL\\graphs\\myGraphName.grf");

Thank you its work fine.

I changed the graphInputStream that was the mistake.

Im very happy thank you for all your help.

Best regards,
Andree