1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package org.jdiagnose.library.web.breadcrumb;
17  
18  import java.util.ArrayList;
19  import java.util.Iterator;
20  import java.util.List;
21  
22  import javax.servlet.http.HttpServletRequest;
23  
24  /***
25   * @author jamie
26   */
27  public class DefaultTrail implements Trail {
28      
29      private static final org.apache.log4j.Category log = org.apache.log4j.Category
30              .getInstance(DefaultTrail.class);
31      
32      private CrumbStrategy crumbStrategy = null;
33      private CrumbFactory crumbFactory = null;
34      
35      public DefaultTrail() {
36          
37      }
38  
39      /***
40       * @param crumbStrategy
41       * @param crumbFactory
42       */
43      public DefaultTrail(CrumbStrategy crumbStrategy, CrumbFactory crumbFactory) {
44          super();
45          this.crumbStrategy = crumbStrategy;
46          this.crumbFactory = crumbFactory;
47      }
48  
49      
50  
51  
52      public List getBreadcrumb(HttpServletRequest request) {
53          List urls = crumbStrategy.getUrls(request);
54          List result = new ArrayList(urls.size());
55          for (Iterator urlIterator = urls.iterator(); urlIterator.hasNext();) {
56              final String url = (String) urlIterator.next();
57              Crumb crumb = crumbFactory.getCrumb(request, url);
58              if(crumb != null) {
59                  result.add(crumb);
60              } else {
61                  log.warn("no crumb found for url " + url);
62              }
63          }
64          return result;
65      }
66      
67      public void setCrumbStrategy(CrumbStrategy crumbStrategy) {
68          this.crumbStrategy = crumbStrategy;
69      }
70      public void setCrumbFactory(CrumbFactory crumbFactory) {
71          this.crumbFactory = crumbFactory;
72      }
73  }