View Javadoc
1   /**************************************************************************
2    *
3    * Copyright (c) 2016-2020 Yawg project contributors.
4    *
5    **************************************************************************/
6   
7   package com.varmateo.yawg.breadcrumbs;
8   
9   import io.vavr.collection.List;
10  
11  
12  /**
13   *
14   */
15  public final class Breadcrumbs {
16  
17  
18      // We really need to use a j.u.List because this POJO is used as
19      // part of a Freemarker model.
20      private final java.util.List<BreadcrumbItem> _items;
21  
22  
23      /**
24       *
25       */
26      /* default */ Breadcrumbs(final Builder builder) {
27  
28          _items = builder._items.toJavaList();
29      }
30  
31  
32      /**
33       *
34       */
35      public static Breadcrumbs empty() {
36  
37          return builder().build();
38      }
39  
40  
41      /**
42       * Creates a new builder with no initializations.
43       *
44       * @return A newly created <code>Builder</code> instance.
45       */
46      public static Builder builder() {
47  
48          return new Builder();
49      }
50  
51  
52      /**
53       * Creates a new builder initialized with the data from the given
54       * <code>Breadcrumbs</code>.
55       *
56       * @param data Used for initializing the builder state.
57       *
58       * @return A newly created <code>Builder</code> instance.
59       */
60      public static Builder builder(final Breadcrumbs data) {
61  
62          return new Builder(data);
63      }
64  
65  
66      /**
67       *
68       */
69      public java.util.List<BreadcrumbItem> getItems() {
70  
71          return _items;
72      }
73  
74  
75      /**
76       *
77       */
78      public static final class Builder {
79  
80  
81          private List<BreadcrumbItem> _items;
82  
83  
84          /**
85           *
86           */
87          /* default */ Builder() {
88  
89              _items = List.of();
90          }
91  
92  
93          /**
94           *
95           */
96          /* default */ Builder(final Breadcrumbs data) {
97  
98              _items = List.ofAll(data._items);
99          }
100 
101 
102         /**
103          *
104          */
105         public Builder addBreadcrumbItem(final BreadcrumbItem item) {
106 
107             _items = _items.append(item);
108 
109             return this;
110         }
111 
112 
113         /**
114          *
115          */
116         public Breadcrumbs build() {
117 
118             return new Breadcrumbs(this);
119         }
120 
121 
122     }
123 
124 
125 }