KickJava   Java API By Example, From Geeks To Geeks.

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


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.apache.cocoon.components.flow.apples.StatelessAppleController;
19 import org.apache.cocoon.components.flow.apples.AppleRequest;
20 import org.apache.cocoon.components.flow.apples.AppleResponse;
21 import org.apache.cocoon.environment.Request;
22 import org.apache.avalon.framework.service.Serviceable;
23 import org.apache.avalon.framework.service.ServiceManager;
24 import org.apache.avalon.framework.service.ServiceException;
25 import org.apache.xmlbeans.XmlCursor;
26 import org.outerj.daisy.frontend.util.AbstractDaisyApple;
27 import org.outerj.daisy.frontend.util.XmlObjectXMLizable;
28 import org.outerj.daisy.frontend.util.MultiXMLizable;
29 import org.outerj.daisy.repository.Repository;
30 import org.outerj.daisy.repository.RepositoryException;
31 import org.outerj.daisy.repository.variant.VariantManager;
32 import org.outerj.daisy.doctaskrunner.DocumentTaskManager;
33 import org.outerj.daisy.doctaskrunner.TaskDocDetails;
34 import org.outerj.daisy.doctaskrunner.Task;
35 import org.outerx.daisy.x10Doctaskrunner.TaskDocDetailDocument;
36 import org.outerx.daisy.x10Doctaskrunner.TaskDocDetailsDocument;
37
38 import java.util.Map JavaDoc;
39 import java.util.HashMap JavaDoc;
40
41 public class DocumentTaskDetailsApple 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         Repository repository = WikiHelper.getRepository(request, serviceManager);
51
52         if (repository.isInRole("guest") && repository.getActiveRoleIds().length == 1)
53             throw new Exception JavaDoc("Document Task functionality not available for guest users.");
54
55         DocumentTaskManager taskManager = (DocumentTaskManager)repository.getExtension("DocumentTaskManager");
56
57         String JavaDoc idParam = appleRequest.getSitemapParameter("id");
58         long id;
59         try {
60             id = Long.parseLong(idParam);
61         } catch (NumberFormatException JavaDoc e) {
62             throw new Exception JavaDoc("Invalid task ID: " + idParam);
63         }
64         TaskDocDetails taskDocDetails = taskManager.getTaskDocDetails(id);
65         TaskDocDetailsDocument taskDocDetailsDocument = taskDocDetails.getXml();
66         annotateTaskDocDetails(taskDocDetailsDocument.getTaskDocDetails().getTaskDocDetailArray(), repository);
67         Task task = taskManager.getTask(id);
68
69         Map JavaDoc viewData = new HashMap JavaDoc();
70         viewData.put("pageXml", new MultiXMLizable(new XmlObjectXMLizable(taskDocDetailsDocument), new XmlObjectXMLizable(task.getXml())));
71         viewData.put("pageContext", new PageContext(getMountPoint(), repository, getLayoutType(), getSkin(), SkinConfHelper.getGlobalSkinConf(serviceManager), getContext()));
72
73         appleResponse.sendPage("DocumentTaskDetailsPipe", viewData);
74     }
75
76     private void annotateTaskDocDetails(TaskDocDetailDocument.TaskDocDetail[] taskDocDetailsXml, Repository repository) {
77         VariantManager variantManager = repository.getVariantManager();
78         for (int i = 0; i < taskDocDetailsXml.length; i++) {
79             long branchId = taskDocDetailsXml[i].getBranchId();
80             long languageId = taskDocDetailsXml[i].getLanguageId();
81             String JavaDoc branch;
82             String JavaDoc language;
83             try {
84                 branch = variantManager.getBranch(branchId, false).getName();
85             } catch (RepositoryException e) {
86                 branch = String.valueOf(branchId);
87             }
88             try {
89                 language = variantManager.getLanguage(languageId, false).getName();
90             } catch (RepositoryException e) {
91                 language = String.valueOf(languageId);
92             }
93             XmlCursor cursor = taskDocDetailsXml[i].newCursor();
94             cursor.toNextToken();
95             cursor.insertAttributeWithValue("branch", branch);
96             cursor.insertAttributeWithValue("language", language);
97             cursor.dispose();
98         }
99     }
100 }
101
Popular Tags