The problem here is even if multiple files are added, there is only one event object created. i want to have like say if 3 new files are added, 3 event objects must be created, and all three event objects must be added to List<Event> listOfEvents.
Thanks. On Mon, Mar 10, 2014 at 11:48 PM, Davide Sottara <[email protected]> wrote: > The "accumulates" should not be in the "then" part of a rule (see my > previous email). > That rule gave you two lists, in the variables $plus and $mins, that you > can use in the consequence. > > If you need to process each file separately, you may want to do something > like this: > > rule "new file" > when > FileData($old : fileOld, $new : fileNew, fileOld != fileNew) > $newFile : String( this not memberOf $old ) from $new > then > // create new event for a new file : new Event(...) > // add to list : Event.listOfEvents.add(...) > end > > You'll need another rule for the files that have been removed. > > Notice that your Event class has no way to distinguish "added" from > "removed" files, you may want to > add a boolean or something there. > Best > Davide > > > On 03/10/2014 07:04 PM, Sandhya Sree wrote: > > hi, > im new to drools..im trying to create a project as follows. i have a class > called Monitor which monitors a folder and creates two lists called > fileOld( which is the list of filenames in that folder at time t1) and > fileNew(which is the list of filenames in that folder at time t2). i have > another class called FileData which contains two members fileOld and > fileNew (list of strings) with getters,setters and constructor. fileOld and > fileNew from Monitor Class are passed to FileData class. > > i also have another class called Event which is as follows: > public class Event { > public static String name; > private File source; > private Date timeStamp; > public static List<Event> listOfEvents = new ArrayList<Event>(); > > public Event(String name, File source, Date timeStamp) { > this.name = name; > this.source = source; > this.timeStamp = timeStamp; > } > public String getName() { > return name; > } > public void setName(String name) { > this.name = name; > } > public File getSource() { > return source; > } > public void setSource(File source) { > this.source = source; > } > public Date getTimeStamp() { > return timeStamp; > } > public void setTimeStamp(Date timeStamp) { > this.timeStamp = timeStamp; > } > > now i have to compare these two lists(fileOld and fileNew) in a rule > file and if they are not equal i have to create an event object for every > file added and deleted and put it in the List<Event> listOfEvents. > > here is my rule file: > > rrule "files are equal" > when > FileData( fileOld == fileNew) > then > System.out.println("files are equal"); > end > > > rule "files not equal" > when > FileData($old : fileOld, $new : fileNew, fileOld != fileNew) > > then > accumulate( $s : String( this not memberOf $old ) from $new, $plus : > collectList( $s ) ) > accumulate( $t : String( this not memberOf $new ) from $old, $mins : > collectList( $t ) ) > System.out.println("files added:" + $plus ); > System.out.println( "files deleted:" + $mins ); > end > > > > how can i loop through each of the file added or deleted and create an > Event Class object for every file added and deleted and finally add all > the created objects to List<Event> listOfEvents.. > > > Thanks. > > > _______________________________________________ > rules-users mailing > [email protected]https://lists.jboss.org/mailman/listinfo/rules-users > > > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users >
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
