OSDN Git Service

srcディレクトリとdocディレクトリを作成
[xdf/git-repos.git] / src / xdf / src / main / java / jp / ac / aiit / xdf / core / selector / Selector.java
1 package jp.ac.aiit.xdf.core.selector;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import jp.ac.aiit.xdf.core.model.ObjectModel;
7
8 /**
9  * @author Shunichi Takagi
10  * セレクター定義(ユーザガイドへ参照)
11  */
12 public class Selector {
13         private List<RuleSequence> ruleSequences;
14         
15         /**
16          * コンストラクター
17          * @param selector
18          */
19         public Selector(String selector) {
20                 this( extractRuleSequences(selector) );
21         }
22         
23         /**
24          * コンストラクター
25          * @param ruleSequences
26          */
27         public Selector(List<RuleSequence> ruleSequences) {
28                 this.ruleSequences = ruleSequences;
29         }
30         
31         private static List<RuleSequence> extractRuleSequences(String selector) {
32                 List<RuleSequence> ruleSequences = new ArrayList<RuleSequence>();
33                 String[] ruleSeqStrings = selector.split(",");
34                 
35                 for(String ruleSeqString : ruleSeqStrings) {
36                         ruleSequences.add( new RuleSequence(ruleSeqString.trim()) );
37                 }
38                 
39                 return ruleSequences;
40         }
41         
42         /**
43          * オブジェクトモデルをマッチングする
44          * @param findRoot
45          * @return オブジェクトモデルリスト
46          */
47         public List<ObjectModel> find(ObjectModel findRoot) {
48                 List<ObjectModel> result = new ArrayList<ObjectModel>();
49                 for(RuleSequence ruleSequence : ruleSequences) {
50                         result.addAll( ruleSequence.find(findRoot) );
51                 }
52                 
53                 return result;
54         }
55         
56         /**
57          * オブジェクトモデルをマッチングする
58          * @param selector
59          * @param findRoot
60          * @return オブジェクトモデルリスト
61          */
62         public static List<ObjectModel> find(String selector, ObjectModel findRoot) {
63                 return new Selector(selector).find(findRoot);
64         }
65 }