1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package io.wcm.wcm.ui.extjs.provider.impl.util;
21
22 import java.util.Calendar;
23 import java.util.Iterator;
24 import java.util.Locale;
25
26 import org.apache.commons.lang3.StringUtils;
27 import org.apache.jackrabbit.util.Text;
28 import org.apache.sling.api.resource.Resource;
29 import org.apache.sling.api.resource.ValueMap;
30
31 import com.day.cq.commons.Filter;
32 import com.day.cq.tagging.Tag;
33 import com.day.cq.wcm.api.Page;
34 import com.day.cq.wcm.api.PageManager;
35 import com.day.cq.wcm.api.Template;
36 import com.day.cq.wcm.api.WCMException;
37 import com.day.cq.wcm.commons.DeepResourceIterator;
38
39
40
41
42 class SlingFolderVirtualPage implements Page {
43
44 private final Resource resource;
45
46 SlingFolderVirtualPage(Resource resource) {
47 this.resource = resource;
48 }
49
50 @Override
51 public String getDescription() {
52 return null;
53 }
54
55 @SuppressWarnings({ "unchecked", "null" })
56 @Override
57 public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
58 if (type == Resource.class) {
59 return (AdapterType)resource;
60 }
61 else {
62 return resource.adaptTo(type);
63 }
64 }
65
66 @Override
67 public boolean canUnlock() {
68 return false;
69 }
70
71 @Override
72 public Page getAbsoluteParent(int level) {
73 String parentPath = Text.getAbsoluteParent(resource.getPath(), level - 1);
74 Resource parentResource = resource.getResourceResolver().getResource(parentPath);
75 if (parentResource != null) {
76 return parentResource.adaptTo(Page.class);
77 }
78 return null;
79 }
80
81 @Override
82 public Resource getContentResource() {
83 return null;
84 }
85
86 @Override
87 public Resource getContentResource(String path) {
88 return null;
89 }
90
91 @Override
92 public int getDepth() {
93 if (StringUtils.equals("/", this.resource.getPath())) {
94 return 0;
95 }
96 else {
97 return StringUtils.countMatches(this.resource.getPath(), "/");
98 }
99 }
100
101 @Override
102 public Locale getLanguage(boolean ignoreContent) {
103 return null;
104 }
105
106 @Override
107 public Locale getLanguage() {
108 return null;
109 }
110
111 @Override
112 public Calendar getLastModified() {
113 return null;
114 }
115
116 @Override
117 public String getLastModifiedBy() {
118 return null;
119 }
120
121 @Override
122 public String getLockOwner() {
123 return null;
124 }
125
126 @Override
127 public String getName() {
128 return resource.getName();
129 }
130
131 @Override
132 public String getNavigationTitle() {
133 return null;
134 }
135
136 @Override
137 public Calendar getOffTime() {
138 return null;
139 }
140
141 @Override
142 public Calendar getOnTime() {
143 return null;
144 }
145
146 @Override
147 public PageManager getPageManager() {
148 return resource.getResourceResolver().adaptTo(PageManager.class);
149 }
150
151 @Override
152 public String getPageTitle() {
153 return null;
154 }
155
156 @Override
157 public Page getParent() {
158 Resource parentResource = resource.getParent();
159 if (parentResource == null) {
160 return null;
161 }
162 return parentResource.adaptTo(Page.class);
163 }
164
165 @Override
166 public Page getParent(int level) {
167 String parentPath = Text.getRelativeParent(resource.getPath(), level);
168 Resource parentResource = resource.getResourceResolver().getResource(parentPath);
169 if (parentResource != null) {
170 return parentResource.adaptTo(Page.class);
171 }
172 return null;
173 }
174
175 @Override
176 public String getPath() {
177 return resource.getPath();
178 }
179
180 @Override
181 public ValueMap getProperties() {
182 return ValueMap.EMPTY;
183 }
184
185 @Override
186 public ValueMap getProperties(String path) {
187 return null;
188 }
189
190 @Override
191 public Tag[] getTags() {
192 return new Tag[0];
193 }
194
195 @Override
196 public Template getTemplate() {
197 return null;
198 }
199
200 @Override
201 public String getTitle() {
202 return null;
203 }
204
205 @Override
206 public String getVanityUrl() {
207 return null;
208 }
209
210 @Override
211 public boolean hasChild(String name) {
212 return false;
213 }
214
215 @Override
216 public boolean hasContent() {
217 return false;
218 }
219
220 @Override
221 public boolean isHideInNav() {
222 return false;
223 }
224
225 @Override
226 public boolean isLocked() {
227 return false;
228 }
229
230 @Override
231 public boolean isValid() {
232 return false;
233 }
234
235 @Override
236 public Iterator<Page> listChildren() {
237 return listChildren(null);
238 }
239
240 @Override
241 public Iterator<Page> listChildren(final Filter<Page> filter) {
242 return listChildren(filter, false);
243 }
244
245 @Override
246 public Iterator<Page> listChildren(final Filter<Page> filter, final boolean deep) {
247 Iterator<Resource> resources;
248 if (deep) {
249 resources = new DeepResourceIterator(resource);
250 }
251 else {
252 resources = resource.getResourceResolver().listChildren(resource);
253 }
254
255
256 return new PageIterator(resources, filter);
257 }
258
259 @Override
260 public void lock() throws WCMException {
261 throw new UnsupportedOperationException();
262 }
263
264 @Override
265 public long timeUntilValid() {
266 return 0L;
267 }
268
269 @Override
270 public void unlock() throws WCMException {
271 throw new UnsupportedOperationException();
272 }
273
274 @Override
275 public Calendar getDeleted() {
276 throw new UnsupportedOperationException();
277 }
278
279 @Override
280 public String getDeletedBy() {
281 throw new UnsupportedOperationException();
282 }
283
284 }