1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.opencastproject.job.api;
23
24 import static org.opencastproject.util.data.Collections.nullToNil;
25 import static org.opencastproject.util.data.functions.Misc.chuck;
26
27 import org.opencastproject.serviceregistry.api.IncidentServiceException;
28 import org.opencastproject.util.NotFoundException;
29
30 import java.util.List;
31 import java.util.stream.Collectors;
32
33 import javax.xml.bind.annotation.XmlAccessType;
34 import javax.xml.bind.annotation.XmlAccessorType;
35 import javax.xml.bind.annotation.XmlElement;
36 import javax.xml.bind.annotation.XmlRootElement;
37 import javax.xml.bind.annotation.XmlType;
38
39
40 @XmlAccessorType(XmlAccessType.NONE)
41 @XmlType(name = "incidentTree", namespace = "http://job.opencastproject.org")
42 @XmlRootElement(name = "incidentTree", namespace = "http://job.opencastproject.org")
43 public final class JaxbIncidentTree {
44 @XmlElement(name = JaxbIncidentUtil.ELEM_NESTED_INCIDENT)
45 private List<JaxbIncident> incidents;
46
47 @XmlElement(name = JaxbIncidentUtil.ELEM_NESTED_TREE)
48 private List<JaxbIncidentTree> descendants;
49
50
51 public JaxbIncidentTree() {
52 }
53
54 public JaxbIncidentTree(IncidentTree tree) throws IncidentServiceException, NotFoundException {
55 this.incidents = tree.getIncidents().stream()
56 .map(JaxbIncident::new)
57 .collect(Collectors.toList());
58
59 this.descendants = tree.getDescendants().stream()
60 .map(t -> {
61 try {
62 return new JaxbIncidentTree(t);
63 } catch (Exception e) {
64 return chuck(e);
65 }
66 })
67 .collect(Collectors.toList());
68 }
69
70 public IncidentTree toIncidentTree() {
71 List<Incident> mappedIncidents = nullToNil(incidents).stream()
72 .map(JaxbIncident::toIncident)
73 .collect(Collectors.toList());
74
75 List<IncidentTree> mappedDescendants = nullToNil(descendants).stream()
76 .map(JaxbIncidentTree::toIncidentTree)
77 .collect(Collectors.toList());
78
79 return new IncidentTreeImpl(mappedIncidents, mappedDescendants);
80 }
81 }