1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.link;
35
36 import javax.jcr.Node;
37 import javax.jcr.RepositoryException;
38
39 import info.magnolia.cms.core.Content;
40
41
42
43
44
45
46 public class RelativePathTransformer extends AbsolutePathTransformer {
47
48 protected String absolutSourcePath;
49
50 public void setAbsolutSourcePath(Node sourceNode){
51 try {
52 Link link = new Link(sourceNode);
53 link.setRepository(sourceNode.getSession().getWorkspace().getName());
54 link.setExtension("html");
55 absolutSourcePath = super.transform(link);
56 } catch (RepositoryException e) {
57 throw new RuntimeException(e);
58 }
59 }
60
61 public void setAbsolutSourcePath(String absolutSourcePath){
62 this.absolutSourcePath = absolutSourcePath;
63 }
64
65 public RelativePathTransformer(){
66 }
67
68 public RelativePathTransformer(Content sourcePage, boolean useURI2RepositoryMapping, boolean useI18N) {
69 this(sourcePage.getJCRNode(), useURI2RepositoryMapping, useI18N);
70 }
71
72 public RelativePathTransformer(Node sourcePage, boolean useURI2RepositoryMapping, boolean useI18N) {
73 super(false, useURI2RepositoryMapping, useI18N);
74 try {
75 Link link = new Link(sourcePage);
76 link.setRepository(sourcePage.getSession().getWorkspace().getName());
77 link.setExtension("html");
78 absolutSourcePath = super.transform(link);
79 } catch (RepositoryException e) {
80 throw new RuntimeException(e);
81 }
82 }
83
84 public RelativePathTransformer(String absoluteSourcePath, boolean useURI2RepositoryMapping, boolean useI18N) {
85 super(false, useURI2RepositoryMapping, useI18N);
86 this.absolutSourcePath = absoluteSourcePath;
87 }
88
89 @Override
90 public String transform(Link target) {
91 String link = super.transform(target);
92 return LinkUtil.makePathRelative(absolutSourcePath, link);
93 }
94 }