Thanks!
I've found another way by using 'matches'. though i don't know which one
is preferable (performance speaking..).
rule "Filter File Types"
salience 100 // priority
when
FileType( type matches "(ico|gif|jpg|mov|wmv|jpeg|css|bmp|avi|swf|png)" )
then
//TODO: change to actual action
System.out.println("ALLOW");
end
2010/5/10 Esteban Aliverti <esteban.aliverti(a)gmail.com>
Maybe you can define a global List so you would not need to add it as
a
Fact:
*package com.test.drools*
* *
*import com.test.drools.Facts.FileType;*
*
*
*global java.util.List allowedExtensions;*
* *
*rule "Filter File Types"*
* *
* **when** *
* **FileType( type memberOf allowedExtensions )*
* **then*
* **System.out.println("ALLOW");*
*end*
You will need to set the global list before inserting any Fact:
ksession.setGlobal("allowedExtensions",somePrePopulatedList);
Best,
2010/5/9 eyal edri <eyal.edri(a)gmail.com>
> Hi,
>
> sorry for the newbi question, i'm just starting to find my way in Drools.
>
> i want to write a rule that filters URLs with a certain suffix (e.g. jpg,
> gif, css, etc...).
>
> i read about global vars and other variables and i'm not sure what to do.
>
> i need to create a List with all the suffixes i want to filter, should i
> create it inside FileType?
>
> can you help?
>
> Eyal.
> -------------------------------------------
>
> here's why i had so far:
>
>
> the .drl file:
>
> *package com.test.drools*
> * *
> *import com.test.drools.Facts.FileType;*
> *
> *
> * *
> *rule "Filter File Types"*
> * *
> * **when*
> * $fileTypes : ??? *
> * **FileType( type memberOf $fileTypes )*
> * **then*
> * **System.out.println("ALLOW");*
> *end*
>
> here's FileType:
>
> package com.commtouch.drools;
>
> import java.net.*;
> import java.util.regex.Matcher;
> import java.util.regex.Pattern;
>
> public class Facts {
> // return a file type of a url
> public static class FileType {
>
> private String type = "html";
>
> public FileType (URL url) {
> // get the path from the url
> //TODO: use parser to do it?
> String path = url.getPath();
> if (path != null) {
> // define regex to extract file from path
> Pattern fileRegex = Pattern.compile("([^/]+)$");
> Matcher fileMatcher = fileRegex.matcher(path);
> // get regex capure $1 (filename)
> String file = null;
> while (fileMatcher.find())
> file = fileMatcher.group(1);
>
> String suffix = null;
> if (file != null)
> {
> //try to extract suffix from file
> Pattern suffixRegex = Pattern.compile("\\.([^\\.]+)$");
> Matcher suffixMatcher = suffixRegex.matcher(file);
> while (suffixMatcher.find())
> suffix = suffixMatcher.group(1);
> //verify that the suffix is a valid suffix
> if (suffix != null && (suffix.length()> 1 && suffix.length() <
6))
> setType(suffix);
> }
> }
> }
>
> public void setType(String type) {
> this.type = type;
> }
> public String getType() {
> return type;
> }
> }
> }
>
>
> --
> Eyal Edri
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Esteban Aliverti
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users