jnotify - fileCreated

One Star

jnotify - fileCreated

Hallo all,
I finally managed to get jnotify working within TOS.
Now my problem is how to trigger a job that does the processing of the created file as tJava runs in an endless loop.
I do not want to stop tJava/jnotify as I would probabely loose one file.
Is there a posibility to call another TOS job from within tJava?
Any help very much appreciated.
kind regards
Hannes
----- Code within tJava (Test only) ---------------------------------------------------------------------------
// to add a watch :
String path = context.WatchPath;
int mask = JNotify.FILE_CREATED |
JNotify.FILE_DELETED |
JNotify.FILE_MODIFIED|
JNotify.FILE_RENAMED;
boolean watchSubtree = false;
int watchID = JNotify.addWatch(path, mask, watchSubtree, new JNotifyListener()
{
public void fileRenamed(int wd, String rootPath, String oldName, String newName)
{
System.out.println("JNotifyTest.fileRenamed() : wd #" + wd + " root = " + rootPath + ", " + oldName + " -> " + newName);
}
public void fileModified(int wd, String rootPath, String name)
{
System.out.println("JNotifyTest.fileModified() : wd #" + wd + " root = " + rootPath + ", " + name);
}
public void fileDeleted(int wd, String rootPath, String name)
{
System.out.println("JNotifyTest.fileDeleted() : wd #" + wd + " root = " + rootPath
+ ", " + name);
}
public void fileCreated(int wd, String rootPath, String name)
{
System.out.println("JNotifyTest.fileCreated() : wd #" + wd + " root = " + rootPath
+ ", " + name);
}
});

Thread.sleep(1000000);
// to remove watch:
boolean res = JNotify.removeWatch(watchID);
if (!res)
{
// invalid watch ID specified.
}
----end of Code -----------------------
Community Manager

Re: jnotify - fileCreated

Hello
Did you try to use tLoop or tInfiniteLoop to trigger the tJava ?
Best regards
Shong
----------------------------------------------------------
Talend | Data Agility for Modern Business
One Star

Re: jnotify - fileCreated

Hi Shong,
yes, a thought about this but thats not doing the job.
jnotify creats a listner which fires up when a new file is created in a specific directory and runs "public void fileCreated(int wd, String rootPath, String name)".
I am looking for a way to start the processing job of the newly created file without leaving tJava or more precise without interrupting the listener. - Kind of writing the filepath of the created file into a pipe which another asyncronously running job reads in.
Any idea how I can achive this?
Thanks in advance and kind regards
Hannes
One Star

Re: jnotify - fileCreated

Hi Shong,
if you look at the code above, you can see that tJava runs in a very long Thread.sleep (in order not to waste processing power by polling the directory) while waiting for jnotify to signal the creation of a new file which happens to be in "public void fileCreated(int wd, String rootPath, String name)".
How can I interrupt the Thread.sleep from within "public void fileCreated" so that tJava ends normaly and continues with the next TOS module tFileInput?
Many thanks in advance for your support
Hannes

2019 GARNER MAGIC QUADRANT FOR DATA INTEGRATION TOOL

Talend named a Leader.

Get your copy

OPEN STUDIO FOR DATA INTEGRATION

Kickstart your first data integration and ETL projects.

Download now

What’s New for Talend Summer ’19

Watch the recorded webinar!

Watch Now

Best Practices for Using Context Variables with Talend – Part 2

Part 2 of a series on Context Variables

Blog

Best Practices for Using Context Variables with Talend – Part 1

Learn how to do cool things with Context Variables

Blog

Migrate Data from one Database to another with one Job using the Dynamic Schema

Find out how to migrate from one database to another using the Dynamic schema

Blog