1
2
3
4
5 package com.jcabi.xml;
6
7 import java.util.ArrayList;
8 import java.util.Arrays;
9 import java.util.Collection;
10 import lombok.EqualsAndHashCode;
11
12
13
14
15
16
17
18 @EqualsAndHashCode(of = "sheets")
19 public final class XSLChain implements XSL {
20
21
22
23
24 private final transient XSL[] sheets;
25
26
27
28
29
30
31 public XSLChain(final XSL... shts) {
32 this(Arrays.asList(shts));
33 }
34
35
36
37
38
39 public XSLChain(final Collection<XSL> shts) {
40 this.sheets = shts.toArray(new XSL[0]);
41 }
42
43 @Override
44 public XML transform(final XML xml) {
45 XML output = xml;
46 for (final XSL sheet : this.sheets) {
47 output = sheet.transform(output);
48 }
49 return output;
50 }
51
52 @Override
53 public String applyTo(final XML xml) {
54 throw new UnsupportedOperationException("#applyTo()");
55 }
56
57 @Override
58 public XSL with(final Sources src) {
59 final Collection<XSL> list = new ArrayList<>(this.sheets.length);
60 for (final XSL sheet : this.sheets) {
61 list.add(sheet.with(src));
62 }
63 return new XSLChain(list);
64 }
65
66 @Override
67 public XSL with(final String name, final Object value) {
68 final Collection<XSL> list = new ArrayList<>(this.sheets.length);
69 for (final XSL sheet : this.sheets) {
70 list.add(sheet.with(name, value));
71 }
72 return new XSLChain(list);
73 }
74 }