KickJava   Java API By Example, From Geeks To Geeks.

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


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.repository.query.QueryHelper;
23 import org.outerj.daisy.repository.Repository;
24 import org.outerj.daisy.repository.RepositoryException;
25 import org.apache.cocoon.components.flow.apples.StatelessAppleController;
26 import org.apache.cocoon.components.flow.apples.AppleRequest;
27 import org.apache.cocoon.components.flow.apples.AppleResponse;
28 import org.apache.cocoon.environment.Request;
29 import org.apache.cocoon.forms.formmodel.Form;
30 import org.apache.cocoon.forms.FormContext;
31 import org.apache.avalon.framework.service.Serviceable;
32 import org.apache.avalon.framework.service.ServiceManager;
33 import org.apache.avalon.framework.service.ServiceException;
34 import org.outerx.daisy.x10.SearchResultDocument;
35
36 import java.util.Locale JavaDoc;
37 import java.util.Date JavaDoc;
38 import java.util.Map JavaDoc;
39 import java.util.HashMap JavaDoc;
40
41 public class RecentChangesApple extends AbstractDaisyApple implements StatelessAppleController, Serviceable {
42     private static final int DEFAULT_PERIOD = 7; // TODO get these values from the siteconf
43
private static final int DEFAULT_LIMIT = 50;
44     private ServiceManager serviceManager;
45     private SiteConf siteConf;
46     private Repository repository;
47     private Form form;
48
49     public void service(ServiceManager serviceManager) throws ServiceException {
50         this.serviceManager = serviceManager;
51     }
52
53     protected void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception JavaDoc {
54         Request request = appleRequest.getCocoonRequest();
55         Locale JavaDoc locale = WikiHelper.getLocale(request);
56         siteConf = WikiHelper.getSiteConf(request);
57         repository = WikiHelper.getRepository(request, serviceManager);
58
59         form = FormHelper.createForm(serviceManager, "resources/form/recentchanges_definition.xml");
60         boolean endProcessing = true;
61         if (request.getParameter("period") != null) { // check if form submission by testing presence of one of the fields
62
endProcessing = form.process(new FormContext(request, locale));
63         } else {
64             // set default values
65
form.getChild("period").setValue(new Integer JavaDoc(DEFAULT_PERIOD));
66             form.getChild("limit").setValue(new Integer JavaDoc(DEFAULT_LIMIT));
67             form.getChild("scope").setValue("currentSiteCollection");
68         }
69
70         Map JavaDoc viewData = new HashMap JavaDoc();
71         viewData.put("CocoonFormsInstance", form);
72         viewData.put("pageContext", new PageContext(getMountPoint(), siteConf, repository, getLayoutType(), getSkin(), getContext()));
73         viewData.put("locale", locale);
74
75         if (endProcessing) {
76             String JavaDoc query = getQuery(form);
77             SearchResultDocument searchResultDocument = repository.getQueryManager().performQuery(query, locale);
78             viewData.put("pageXml", new XmlObjectXMLizable(searchResultDocument));
79         }
80
81         appleResponse.sendPage("Form-recentchanges-Pipe", viewData);
82     }
83
84     private String JavaDoc getQuery(Form form) throws Exception JavaDoc {
85         int period = ((Integer JavaDoc)form.getChild("period").getValue()).intValue();
86         int limit = ((Integer JavaDoc)form.getChild("limit").getValue()).intValue();
87         String JavaDoc scope = (String JavaDoc)form.getChild("scope").getValue();
88
89         Date JavaDoc fromDate = new Date JavaDoc(System.currentTimeMillis() - (((long)period) * 24L * 60L * 60L * 1000L));
90
91         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select id, branch, language, name, versionCreationTime, versionCreatorName, versionState where versionCreationTime > ");
92         query.append(QueryHelper.formatDateTime(fromDate));
93
94         if (scope.equals("currentSiteCollection")) {
95             query.append(" and InCollection(").append(QueryHelper.formatString(getCollectionName())).append(")");
96         }
97
98         query.append(" order by versionCreationTime desc limit ");
99         query.append(String.valueOf(limit));
100         query.append(" option search_last_version='true'");
101
102         return query.toString();
103     }
104
105     private String JavaDoc getCollectionName() throws RepositoryException {
106         return repository.getCollectionManager().getCollection(siteConf.getCollectionId(), false).getName();
107     }
108 }
109
Popular Tags