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.Monadics.mlist;
26
27 import org.opencastproject.serviceregistry.api.IncidentServiceException;
28 import org.opencastproject.util.NotFoundException;
29 import org.opencastproject.util.data.Function;
30
31 import java.util.List;
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 = mlist(tree.getIncidents()).map(JaxbIncident.mkFn).value();
56 this.descendants = mlist(tree.getDescendants()).map(mkFn).value();
57 }
58
59 public static final Function<IncidentTree, JaxbIncidentTree> mkFn = new Function.X<IncidentTree, JaxbIncidentTree>() {
60 @Override public JaxbIncidentTree xapply(IncidentTree tree) throws Exception {
61 return new JaxbIncidentTree(tree);
62 }
63 };
64
65 public IncidentTree toIncidentTree() {
66 return new IncidentTreeImpl(
67 mlist(nullToNil(incidents)).map(JaxbIncident.toIncidentFn).value(),
68 mlist(nullToNil(descendants)).map(toIncidentTreeFn).value());
69 }
70
71 public static final Function<JaxbIncidentTree, IncidentTree> toIncidentTreeFn = new Function<JaxbIncidentTree, IncidentTree>() {
72 @Override public IncidentTree apply(JaxbIncidentTree dto) {
73 return dto.toIncidentTree();
74 }
75 };
76 }