1 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 ; 42 import java.util.HashMap ; 43 import java.util.Locale ; 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 { 53 Request request = appleRequest.getCocoonRequest(); 54 SiteConf siteConf = WikiHelper.getSiteConf(request); 55 Locale 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) { endProcessing = form.process(new FormContext(request, locale)); 62 } else { 63 DocumentCollection collection = repository.getCollectionManager().getCollection(siteConf.getCollectionId(), false); 65 String branch = repository.getVariantManager().getBranch(siteConf.getBranchId(), false).getName(); 66 String 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 viewData = new HashMap (); 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 )form.getChild("addToDocumentBasket").getValue()).booleanValue(); 76 77 if (endProcessing) { 78 QueryManager queryManager = repository.getQueryManager(); 79 SearchResultDocument searchResultDocument = queryManager.performQuery((String )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 branch = variantManager.getBranch(rows[i].getBranchId(), false).getName(); 88 String 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 |