<div dir="ltr">Hi,<div><br></div><div>sorry for the newbi question, i&#39;m just starting to find my way in Drools.</div><div><br></div><div>i want to  write a rule that filters URLs with a certain suffix (e.g. jpg, gif, css, etc...).</div>

<div><br></div><div>i read about global vars and other variables and i&#39;m not sure what to do.</div><div><br></div><div>i need to create a List with all the suffixes i want to filter, should i create it inside FileType? </div>

<div><br></div><div>can you help?</div><div><br></div><div>Eyal.</div><div>-------------------------------------------</div><div><br></div><div>here&#39;s why i had so far:</div><div><br></div><div><br></div><div>the .drl file:</div>

<div><br></div><div><div><font class="Apple-style-span" color="#990000"><b>package com.test.drools</b></font></div><div><font class="Apple-style-span" color="#990000"><b> </b></font></div><div><font class="Apple-style-span" color="#990000"><b>import com.test.drools.Facts.FileType;</b></font></div>

<div><font class="Apple-style-span" color="#990000"><b><br></b></font></div><div><font class="Apple-style-span" color="#990000"><b> </b></font></div><div><font class="Apple-style-span" color="#990000"><b>rule &quot;Filter File Types&quot;</b></font></div>

<div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#990000"><b>        </b></font></span></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#990000"><b>        </b></font></span><font class="Apple-style-span" color="#990000"><b>when</b></font></div>

<div><font class="Apple-style-span" color="#990000"><b>               <span class="Apple-style-span" style="background-color: rgb(255, 255, 0);"> $fileTypes : ??? </span></b></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#990000"><b>                </b></font></span><font class="Apple-style-span" color="#990000"><b>FileType( type memberOf $fileTypes )</b></font></div>

<div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#990000"><b>        </b></font></span><font class="Apple-style-span" color="#990000"><b>then</b></font></div><div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#990000"><b>                </b></font></span><font class="Apple-style-span" color="#990000"><b>System.out.println(&quot;ALLOW&quot;);</b></font></div>

<div><font class="Apple-style-span" color="#990000"><b>end</b></font></div><div><br></div><div>here&#39;s FileType:</div><div><br></div><div><div><span class="Apple-style-span" style="font-size: x-small;">package com.commtouch.drools;</span></div>

<div><span class="Apple-style-span" style="font-size: x-small;"><br></span></div><div><span class="Apple-style-span" style="font-size: x-small;">import java.net.*;</span></div><div><span class="Apple-style-span" style="font-size: x-small;">import java.util.regex.Matcher;</span></div>

<div><span class="Apple-style-span" style="font-size: x-small;">import java.util.regex.Pattern;</span></div><div><span class="Apple-style-span" style="font-size: x-small;"><br></span></div><div><span class="Apple-style-span" style="font-size: x-small;">public class Facts {</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">// return a file type of a url</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">public static class FileType {</span></div>

<div><span class="Apple-style-span" style="font-size: x-small;"><br></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">private String type = &quot;html&quot;;</span></div>

<div><span class="Apple-style-span" style="font-size: x-small;"><br></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">public FileType (URL url) {</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span><span class="Apple-style-span" style="font-size: x-small;">// get the path from the url</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span><span class="Apple-style-span" style="font-size: x-small;">//TODO: use parser to do it?</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span><span class="Apple-style-span" style="font-size: x-small;">String path = url.getPath();</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span><span class="Apple-style-span" style="font-size: x-small;">if (path != null) {</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                </span></span><span class="Apple-style-span" style="font-size: x-small;">// define regex to extract file from path</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                </span></span><span class="Apple-style-span" style="font-size: x-small;">Pattern fileRegex = Pattern.compile(&quot;([^/]+)$&quot;);</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                </span></span><span class="Apple-style-span" style="font-size: x-small;">Matcher fileMatcher = fileRegex.matcher(path);</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">// get regex capure $1 (filename)</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                </span></span><span class="Apple-style-span" style="font-size: x-small;">String file = null;</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">while (fileMatcher.find()) </span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;"> file = fileMatcher.group(1);</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">String suffix = null;</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">if (file != null)</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">{</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">//try to extract suffix from file</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">Pattern suffixRegex = Pattern.compile(&quot;\\.([^\\.]+)$&quot;);</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                        </span></span><span class="Apple-style-span" style="font-size: x-small;">Matcher suffixMatcher = suffixRegex.matcher(file);</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                        </span></span><span class="Apple-style-span" style="font-size: x-small;">while (suffixMatcher.find()) </span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;"> suffix = suffixMatcher.group(1);</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                        </span></span><span class="Apple-style-span" style="font-size: x-small;">//verify that the suffix is a valid suffix </span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                        </span></span><span class="Apple-style-span" style="font-size: x-small;">if (suffix != null &amp;&amp; (suffix.length()&gt; 1 &amp;&amp; suffix.length() &lt; 6))</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                                                        </span></span><span class="Apple-style-span" style="font-size: x-small;">setType(suffix);</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">    </span><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">}</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span><span class="Apple-style-span" style="font-size: x-small;">}</span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">}</span></div><div><span class="Apple-style-span" style="font-size: x-small;"><br>

</span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">public void setType(String type) {</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span><span class="Apple-style-span" style="font-size: x-small;">this.type = type;</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">}</span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">public String getType() {</span></div>

<div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                        </span></span><span class="Apple-style-span" style="font-size: x-small;">return type;</span></div><div>

<span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">                </span></span><span class="Apple-style-span" style="font-size: x-small;">}</span></div><div><span class="Apple-tab-span" style="white-space:pre"><span class="Apple-style-span" style="font-size: x-small;">        </span></span><span class="Apple-style-span" style="font-size: x-small;">}</span></div>

<div><span class="Apple-style-span" style="font-size: x-small;">}</span></div></div><div><br></div><div><br>-- <br>Eyal Edri<br>
</div></div></div>