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