KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > services > jcr > impl > core > itemfilters > NamePatternFilter


1 /***************************************************************************
2  * Copyright 2001-2003 The eXo Platform SARL All rights reserved. *
3  * Please look at license.txt in info directory for more license detail. *
4  **************************************************************************/

5
6 package org.exoplatform.services.jcr.impl.core.itemfilters;
7
8 import org.apache.commons.lang.StringUtils;
9
10 import javax.jcr.Item;
11 import java.util.ArrayList JavaDoc;
12 import java.util.StringTokenizer JavaDoc;
13 import java.util.regex.Pattern JavaDoc;
14 import java.util.regex.Matcher JavaDoc;
15
16 /**
17  * Created by The eXo Platform SARL .
18  *
19  * @author <a HREF="mailto:geaz@users.sourceforge.net">Gennady Azarenkov</a>
20  * @version $Id: NamePatternFilter.java,v 1.6 2004/08/06 18:51:24 benjmestrallet Exp $
21  */

22
23 public class NamePatternFilter implements ItemFilter {
24
25   private ArrayList JavaDoc expressions;
26
27   public NamePatternFilter(String JavaDoc namePattern) {
28     expressions = new ArrayList JavaDoc();
29     StringTokenizer JavaDoc parser = new StringTokenizer JavaDoc(namePattern, "|");
30     while (parser.hasMoreTokens()) {
31       String JavaDoc token = parser.nextToken();
32       expressions.add(token.trim());
33     }
34   }
35
36   public boolean accept(Item item) {
37     String JavaDoc name = item.getName();
38     boolean result = false;
39     for (int i = 0; i < expressions.size(); i++) {
40       String JavaDoc expr = (String JavaDoc) expressions.get(i);
41       if(estimate(name, expr))
42         return true;
43     }
44     return false;
45   }
46
47   private boolean estimate(String JavaDoc name, String JavaDoc expr) {
48     if (expr.indexOf("*") == -1)
49       return name.equals(expr);
50     else {
51       String JavaDoc regexp = StringUtils.replace(expr,"*", ".*");
52       Matcher JavaDoc matcher = Pattern.compile(regexp).matcher(name);
53       return matcher.matches();
54     }
55   }
56
57 }
58
Popular Tags