1 32 33 package com.jeantessier.dependency; 34 35 import java.util.*; 36 37 public class SelectiveTraversalStrategy implements TraversalStrategy { 38 private SelectionCriteria scopeCriteria; 39 private SelectionCriteria filterCriteria; 40 41 private boolean preOutboundTraversal = true; 42 private boolean preInboundTraversal = true; 43 private boolean postOutboundTraversal = false; 44 private boolean postInboundTraversal = false; 45 46 public SelectiveTraversalStrategy() { 47 this(new ComprehensiveSelectionCriteria(), new ComprehensiveSelectionCriteria()); 48 } 49 50 public SelectiveTraversalStrategy(SelectionCriteria scopeCriteria, SelectionCriteria filterCriteria) { 51 this.scopeCriteria = scopeCriteria; 52 this.filterCriteria = filterCriteria; 53 } 54 55 public boolean doPreOutboundTraversal() { 56 return preOutboundTraversal; 57 } 58 59 public void setPreOutboundTraversal(boolean preOutboundTraversal) { 60 this.preOutboundTraversal = preOutboundTraversal; 61 } 62 63 public boolean doPreInboundTraversal() { 64 return preInboundTraversal; 65 } 66 67 public void setPreInboundTraversal(boolean preInboundTraversal) { 68 this.preInboundTraversal = preInboundTraversal; 69 } 70 71 public boolean doPostOutboundTraversal() { 72 return postOutboundTraversal; 73 } 74 75 public void setPostOutboundTraversal(boolean postOutboundTraversal) { 76 this.postOutboundTraversal = postOutboundTraversal; 77 } 78 79 public boolean doPostInboundTraversal() { 80 return postInboundTraversal; 81 } 82 83 public void setPostInboundTraversal(boolean postInboundTraversal) { 84 this.postInboundTraversal = postInboundTraversal; 85 } 86 87 public boolean isInScope(PackageNode node) { 88 return scopeCriteria.matches(node); 89 } 90 91 public boolean isInScope(ClassNode node) { 92 return scopeCriteria.matches(node); 93 } 94 95 public boolean isInScope(FeatureNode node) { 96 return scopeCriteria.matches(node); 97 } 98 99 public boolean isInFilter(PackageNode node) { 100 return filterCriteria.matches(node); 101 } 102 103 public boolean isInFilter(ClassNode node) { 104 return filterCriteria.matches(node); 105 } 106 107 public boolean isInFilter(FeatureNode node) { 108 return filterCriteria.matches(node); 109 } 110 111 public Collection order(Collection collection) { 112 return new ArrayList(collection); 113 } 114 } 115 | Popular Tags |