KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fr > jayasoft > ivy > version > ChainVersionMatcher


1 /*
2  * This file is subject to the licence found in LICENCE.TXT in the root directory of the project.
3  * Copyright Jayasoft 2005 - All rights reserved
4  *
5  * #SNAPSHOT#
6  */

7 package fr.jayasoft.ivy.version;
8
9 import java.util.Collections JavaDoc;
10 import java.util.Iterator JavaDoc;
11 import java.util.LinkedList JavaDoc;
12 import java.util.List JavaDoc;
13
14 import fr.jayasoft.ivy.Ivy;
15 import fr.jayasoft.ivy.IvyAware;
16 import fr.jayasoft.ivy.ModuleDescriptor;
17 import fr.jayasoft.ivy.ModuleRevisionId;
18
19 public class ChainVersionMatcher extends AbstractVersionMatcher {
20     private List JavaDoc _matchers = new LinkedList JavaDoc();
21     
22     public ChainVersionMatcher() {
23         super("chain");
24     }
25     
26     public void add(VersionMatcher matcher) {
27         _matchers.add(0, matcher);
28         if (getIvy() != null && matcher instanceof IvyAware) {
29             ((IvyAware) matcher).setIvy(getIvy());
30         }
31     }
32     
33     public void setIvy(Ivy ivy) {
34         super.setIvy(ivy);
35         for (Iterator JavaDoc iter = _matchers.iterator(); iter.hasNext();) {
36             VersionMatcher matcher = (VersionMatcher) iter.next();
37             if (matcher instanceof IvyAware) {
38                 ((IvyAware) matcher).setIvy(ivy);
39             }
40         }
41     }
42     
43     public List JavaDoc getMatchers() {
44         return Collections.unmodifiableList(_matchers);
45     }
46     
47
48     public boolean isDynamic(ModuleRevisionId askedMrid) {
49         for (Iterator JavaDoc iter = _matchers.iterator(); iter.hasNext();) {
50             VersionMatcher matcher = (VersionMatcher)iter.next();
51             if (matcher.isDynamic(askedMrid)) {
52                 return true;
53             }
54         }
55         return false;
56     }
57
58     public boolean accept(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid) {
59         for (Iterator JavaDoc iter = _matchers.iterator(); iter.hasNext();) {
60             VersionMatcher matcher = (VersionMatcher)iter.next();
61             if (!iter.hasNext() || matcher.isDynamic(askedMrid)) {
62                 return matcher.accept(askedMrid, foundMrid);
63             }
64         }
65         return false;
66     }
67
68     public boolean needModuleDescriptor(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid) {
69         for (Iterator JavaDoc iter = _matchers.iterator(); iter.hasNext();) {
70             VersionMatcher matcher = (VersionMatcher)iter.next();
71             if (!iter.hasNext() || matcher.isDynamic(askedMrid)) {
72                 return matcher.needModuleDescriptor(askedMrid, foundMrid);
73             }
74         }
75         return false;
76     }
77
78     public boolean accept(ModuleRevisionId askedMrid, ModuleDescriptor foundMD) {
79         for (Iterator JavaDoc iter = _matchers.iterator(); iter.hasNext();) {
80             VersionMatcher matcher = (VersionMatcher)iter.next();
81             if (!iter.hasNext() || matcher.isDynamic(askedMrid)) {
82                 return matcher.accept(askedMrid, foundMD);
83             }
84         }
85         return false;
86     }
87
88 }
89
Popular Tags