1 32 33 package websphinx.workbench; 34 35 import websphinx.*; 36 37 public class DualPredicate implements LinkPredicate, PagePredicate { 38 Object positive, negative; 39 40 public DualPredicate (Object positive, Object negative) { 41 this.positive = positive; 42 this.negative = negative; 43 } 44 public boolean equals (Object object) { 45 if (! (object instanceof DualPredicate)) 46 return false; 47 DualPredicate p = (DualPredicate)object; 48 return p.positive.equals (positive) && p.negative.equals (negative); 49 } 50 51 public Object getPositivePredicate () { 52 return positive; 53 } 54 55 public Object getNegativePredicate () { 56 return negative; 57 } 58 59 public void connected (Crawler crawler) { 60 if (positive instanceof LinkPredicate) 61 ((LinkPredicate)positive).connected (crawler); 62 else if (positive instanceof PagePredicate) 63 ((LinkPredicate)positive).connected (crawler); 64 65 if (negative instanceof LinkPredicate) 66 ((LinkPredicate)negative).connected (crawler); 67 else if (negative instanceof PagePredicate) 68 ((LinkPredicate)negative).connected (crawler); 69 } 70 71 public void disconnected (Crawler crawler) { 72 if (positive instanceof LinkPredicate) 73 ((LinkPredicate)positive).disconnected (crawler); 74 else if (positive instanceof PagePredicate) 75 ((LinkPredicate)positive).disconnected (crawler); 76 77 if (negative instanceof LinkPredicate) 78 ((LinkPredicate)negative).disconnected (crawler); 79 else if (negative instanceof PagePredicate) 80 ((LinkPredicate)negative).disconnected (crawler); 81 } 82 83 public boolean shouldVisit (Link link) { 84 return ((LinkPredicate)positive).shouldVisit (link) 85 && !((LinkPredicate)negative).shouldVisit (link); 86 } 87 public boolean shouldActOn (Page page) { 88 return ((PagePredicate)positive).shouldActOn (page) 89 && !((PagePredicate)negative).shouldActOn (page); 90 } 91 } 92 | Popular Tags |