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 }