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 info.magnolia.cms.beans.config.URI2RepositoryManager;
37 import info.magnolia.cms.i18n.I18nContentSupportFactory;
38 import info.magnolia.context.MgnlContext;
39
40 import org.apache.commons.lang.StringUtils;
41
42
43
44
45
46
47
48
49 public class AbsolutePathTransformer implements LinkTransformer {
50
51 boolean addContextPath = true;
52
53 boolean useURI2RepositoryMapping = true;
54
55 boolean useI18N = true;
56
57
58
59
60
61
62
63 public AbsolutePathTransformer(boolean addContextPath, boolean useURI2RepositoryMapping, boolean useI18N) {
64 this.addContextPath = addContextPath;
65 this.useURI2RepositoryMapping = useURI2RepositoryMapping;
66 this.useI18N = useI18N;
67 }
68
69
70
71
72 public String transform(Link uuidLink) {
73 String linkStr;
74 if(useURI2RepositoryMapping){
75 linkStr = getURI2RepositoryManager().getURI(uuidLink);
76 }
77 else{
78 linkStr = getURI2RepositoryManager().getDefaultMapping().getURI(uuidLink);
79 }
80 linkStr += getURISuffix(uuidLink);
81 if(useI18N){
82 linkStr = I18nContentSupportFactory.getI18nSupport().toI18NURI(linkStr);
83 }
84 linkStr = prefixLink(linkStr);
85 return linkStr;
86 }
87
88 protected URI2RepositoryManager getURI2RepositoryManager() {
89 return URI2RepositoryManager.getInstance();
90 }
91
92 protected String prefixLink(String linkStr) {
93 if(addContextPath){
94 return MgnlContext.getContextPath() + linkStr;
95 }
96 return linkStr;
97 }
98
99
100
101
102 public String getURISuffix(Link uuidLink) {
103 String anchor = uuidLink.getAnchor();
104 String parameters = uuidLink.getParameters();
105
106 return "" + (StringUtils.isNotEmpty(anchor)? "#" + anchor : "") +
107 (StringUtils.isNotEmpty(parameters)? "?" + parameters : "");
108
109 }
110
111 public boolean isAddContextPath() {
112 return this.addContextPath;
113 }
114
115
116 public void setAddContextPath(boolean addContextPath) {
117 this.addContextPath = addContextPath;
118 }
119
120
121 public boolean isUseI18N() {
122 return this.useI18N;
123 }
124
125
126 public void setUseI18N(boolean useI18N) {
127 this.useI18N = useI18N;
128 }
129
130
131 public boolean isUseURI2RepositoryMapping() {
132 return this.useURI2RepositoryMapping;
133 }
134
135
136 public void setUseURI2RepositoryMapping(boolean useURI2RepositoryMapping) {
137 this.useURI2RepositoryMapping = useURI2RepositoryMapping;
138 }
139
140 }
141