KickJava   Java API By Example, From Geeks To Geeks.

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


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.util.FormHelper;
20 import org.outerj.daisy.frontend.util.XmlObjectXMLizable;
21 import org.outerj.daisy.frontend.components.siteconf.SiteConf;
22 import org.outerj.daisy.frontend.components.docbasket.DocumentBasketEntry;
23 import org.outerj.daisy.frontend.components.docbasket.DocumentBasketHelper;
24 import org.outerj.daisy.repository.Repository;
25 import org.outerj.daisy.repository.DocumentCollection;
26 import org.outerj.daisy.repository.variant.VariantManager;
27 import org.outerj.daisy.repository.query.QueryManager;
28 import org.outerj.daisy.repository.query.QueryHelper;
29 import org.apache.cocoon.components.flow.apples.AppleRequest;
30 import org.apache.cocoon.components.flow.apples.AppleResponse;
31 import org.apache.cocoon.components.flow.apples.StatelessAppleController;
32 import org.apache.cocoon.environment.Request;
33 import org.apache.cocoon.forms.formmodel.Form;
34 import org.apache.cocoon.forms.FormContext;
35 import org.apache.avalon.framework.service.Serviceable;
36 import org.apache.avalon.framework.service.ServiceManager;
37 import org.apache.avalon.framework.service.ServiceException;
38 import org.apache.avalon.framework.context.Contextualizable;
39 import org.outerx.daisy.x10.SearchResultDocument;
40
41 import java.util.Map JavaDoc;
42 import java.util.HashMap JavaDoc;
43 import java.util.Locale JavaDoc;
44
45 public class QuerySearchApple extends AbstractDaisyApple implements StatelessAppleController, Serviceable, Contextualizable {
46     private ServiceManager serviceManager;
47
48     public void service(ServiceManager serviceManager) throws ServiceException {
49         this.serviceManager = serviceManager;
50     }
51
52     protected void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception JavaDoc {
53         Request request = appleRequest.getCocoonRequest();
54         SiteConf siteConf = WikiHelper.getSiteConf(request);
55         Locale JavaDoc locale = WikiHelper.getLocale(request);
56         Repository repository = WikiHelper.getRepository(request, serviceManager);
57
58         Form form = FormHelper.createForm(serviceManager, "resources/form/querysearch_definition.xml");
59         boolean endProcessing = false;
60         if (request.getParameter("daisyquery") != null) { // if form is present on request
61
endProcessing = form.process(new FormContext(request, locale));
62         } else {
63             // set a default query in the form
64
DocumentCollection collection = repository.getCollectionManager().getCollection(siteConf.getCollectionId(), false);
65             String JavaDoc branch = repository.getVariantManager().getBranch(siteConf.getBranchId(), false).getName();
66             String JavaDoc language = repository.getVariantManager().getLanguage(siteConf.getLanguageId(), false).getName();
67             form.getChild("daisyquery").setValue("select id, name where InCollection('" + collection.getName() + "') and documentType = 'SimpleDocument' and branch = " + QueryHelper.formatString(branch) + " and language = " + QueryHelper.formatString(language));
68         }
69
70         Map JavaDoc viewData = new HashMap JavaDoc();
71         viewData.put("locale", locale);
72         viewData.put("pageContext", new PageContext(getMountPoint(), siteConf, repository, getLayoutType(), getSkin(), getContext()));
73         viewData.put("CocoonFormsInstance", form);
74
75         boolean addToDocumentBasket = ((Boolean JavaDoc)form.getChild("addToDocumentBasket").getValue()).booleanValue();
76
77         if (endProcessing) {
78             QueryManager queryManager = repository.getQueryManager();
79             SearchResultDocument searchResultDocument = queryManager.performQuery((String JavaDoc)form.getChild("daisyquery").getValue(), locale);
80             viewData.put("pageXml", new XmlObjectXMLizable(searchResultDocument));
81
82             if (addToDocumentBasket) {
83                 VariantManager variantManager = repository.getVariantManager();
84                 SearchResultDocument.SearchResult.Rows.Row[] rows = searchResultDocument.getSearchResult().getRows().getRowArray();
85                 DocumentBasketEntry[] entries = new DocumentBasketEntry[rows.length];
86                 for (int i = 0; i < rows.length; i++) {
87                     String JavaDoc branch = variantManager.getBranch(rows[i].getBranchId(), false).getName();
88                     String JavaDoc language = variantManager.getLanguage(rows[i].getLanguageId(), false).getName();
89                     entries[i] = new DocumentBasketEntry(rows[i].getDocumentId(), branch, language, -3, "");
90                 }
91                 DocumentBasketHelper.updateDocumentNames(entries, request, repository);
92                 DocumentBasketHelper.getDocumentBasket(request, true).appendEntries(entries);
93             }
94         }
95
96         if (addToDocumentBasket)
97             appleResponse.redirectTo(getMountPoint() + "/" + siteConf.getName() + "/documentBasket");
98         else
99             appleResponse.sendPage("Form-querysearch-Pipe", viewData);
100     }
101 }
102
Popular Tags