KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > frontend > BrowseImagesApple


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.outerj.daisy.frontend;
17
18 import org.outerj.daisy.frontend.util.AbstractDaisyApple;
19 import org.outerj.daisy.frontend.components.siteconf.SiteConf;
20 import org.outerj.daisy.repository.Repository;
21 import org.outerj.daisy.repository.DocumentCollection;
22 import org.outerj.daisy.repository.query.QueryHelper;
23 import org.apache.cocoon.components.flow.apples.StatelessAppleController;
24 import org.apache.cocoon.components.flow.apples.AppleRequest;
25 import org.apache.cocoon.components.flow.apples.AppleResponse;
26 import org.apache.cocoon.environment.Request;
27 import org.apache.cocoon.ResourceNotFoundException;
28 import org.apache.avalon.framework.service.Serviceable;
29 import org.apache.avalon.framework.service.ServiceManager;
30 import org.apache.avalon.framework.service.ServiceException;
31 import org.apache.xmlbeans.XmlObject;
32 import org.outerx.daisy.x10.SearchResultDocument;
33
34 import java.util.Arrays JavaDoc;
35 import java.util.Locale JavaDoc;
36 import java.util.Map JavaDoc;
37 import java.util.HashMap JavaDoc;
38
39
40
41 public class BrowseImagesApple extends AbstractDaisyApple implements StatelessAppleController, Serviceable {
42     private ServiceManager serviceManager;
43
44     public void service(ServiceManager serviceManager) throws ServiceException {
45         this.serviceManager = serviceManager;
46     }
47
48     protected void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception JavaDoc {
49         Request request = appleRequest.getCocoonRequest();
50         Locale JavaDoc locale = WikiHelper.getLocale(request);
51         SiteConf siteConf = WikiHelper.getSiteConf(request);
52         Repository repository = WikiHelper.getRepository(request, serviceManager);
53
54         String JavaDoc resource = appleRequest.getSitemapParameter("resource");
55         if (resource == null) {
56             long branchId = RequestUtil.getBranchId(request, siteConf.getBranchId(), repository);
57             long languageId = RequestUtil.getLanguageId(request, siteConf.getLanguageId(), repository);
58
59             DocumentCollection[] collections = repository.getCollectionManager().getCollections(false).getArray();
60             Arrays.sort(collections);
61
62             Map JavaDoc viewData = new HashMap JavaDoc();
63             viewData.put("branchId", String.valueOf(branchId));
64             viewData.put("languageId", String.valueOf(languageId));
65             viewData.put("collectionId", String.valueOf(siteConf.getCollectionId()));
66             viewData.put("branches", repository.getVariantManager().getAllBranches(false).getArray());
67             viewData.put("languages", repository.getVariantManager().getAllLanguages(false).getArray());
68             viewData.put("versionMode", WikiHelper.getVersionMode(request));
69             viewData.put("collections", collections);
70             viewData.put("siteConf", siteConf);
71             viewData.put("mountPoint", getMountPoint());
72             appleResponse.sendPage("Template-imagebrowser-Pipe", viewData);
73         } else if (resource.equals("imagesByCollection")) {
74             String JavaDoc collectionIdParam = appleRequest.getSitemapParameter("collectionId");
75             long collectionId = -1;
76             if (!collectionIdParam.equals("all")) {
77                 try {
78                     collectionId = Long.parseLong(collectionIdParam);
79                 } catch (NumberFormatException JavaDoc e) {
80                     throw new Exception JavaDoc("Invalid collectionId request parameter: " + collectionIdParam);
81                 }
82             }
83
84             long branchId = RequestUtil.getBranchId(request, siteConf.getBranchId(), repository);
85             long languageId = RequestUtil.getLanguageId(request, siteConf.getLanguageId(), repository);
86             WikiVersionMode versionMode = WikiVersionMode.fromString(RequestUtil.getStringParameter(request, "versionMode"));
87
88             StringBuffer JavaDoc query = new StringBuffer JavaDoc(400);
89             query.append("select name where HasPart('ImageData')");
90             if (collectionId != -1)
91                 query.append(" and InCollection(").append(collectionId).append(")");
92             query.append(" and branchId = ").append(branchId);
93             query.append(" and languageId = ").append(languageId);
94             query.append(" order by name");
95
96             if (versionMode == WikiVersionMode.LAST)
97                 query.append(" option search_last_version = 'true'");
98
99             XmlObject queryResult = repository.getQueryManager().performQuery(query.toString(), locale);
100
101             Map JavaDoc viewData = new HashMap JavaDoc();
102             viewData.put("branchId", String.valueOf(branchId));
103             viewData.put("languageId", String.valueOf(languageId));
104             viewData.put("versionMode", versionMode);
105             viewData.put("images", ((SearchResultDocument)queryResult).getSearchResult().getRows().getRowArray());
106
107             appleResponse.sendPage("Template-imagebrowser_images-Pipe", viewData);
108         } else {
109             throw new ResourceNotFoundException("Unsupported resource: " + resource);
110         }
111     }
112 }
113
Popular Tags