KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > frontend > admin > AdminApple


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.admin;
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.ResourceNotFoundException;
22 import org.apache.cocoon.environment.Request;
23 import org.apache.avalon.framework.service.Serviceable;
24 import org.apache.avalon.framework.service.ServiceManager;
25 import org.apache.avalon.framework.service.ServiceException;
26 import org.apache.xmlbeans.XmlObject;
27 import org.outerj.daisy.frontend.util.XmlObjectXMLizable;
28 import org.outerj.daisy.frontend.util.AbstractDaisyApple;
29 import org.outerj.daisy.frontend.PageContext;
30 import org.outerj.daisy.frontend.SkinConfHelper;
31 import org.outerj.daisy.frontend.WikiHelper;
32 import org.outerj.daisy.repository.Repository;
33
34 import java.util.Map JavaDoc;
35 import java.util.HashMap JavaDoc;
36
37 public class AdminApple extends AbstractDaisyApple implements StatelessAppleController, Serviceable {
38     private ServiceManager serviceManager;
39     private Repository repository;
40     private static Map JavaDoc ENTITY_HANDLERS;
41     static {
42         ENTITY_HANDLERS = new HashMap JavaDoc();
43         ENTITY_HANDLERS.put(DocumentTypeHandler.NAME, new DocumentTypeHandler());
44         ENTITY_HANDLERS.put(FieldTypeHandler.NAME, new FieldTypeHandler());
45         ENTITY_HANDLERS.put(PartTypeHandler.NAME, new PartTypeHandler());
46         ENTITY_HANDLERS.put(UserHandler.NAME, new UserHandler());
47         ENTITY_HANDLERS.put(RoleHandler.NAME, new RoleHandler());
48         ENTITY_HANDLERS.put(BranchHandler.NAME, new BranchHandler());
49         ENTITY_HANDLERS.put(LanguageHandler.NAME, new LanguageHandler());
50         ENTITY_HANDLERS.put(CollectionHandler.NAME, new CollectionHandler());
51     }
52
53     public void service(ServiceManager serviceManager) throws ServiceException {
54         this.serviceManager = serviceManager;
55     }
56
57     protected void processInternal(AppleRequest appleRequest, final AppleResponse appleResponse) throws Exception JavaDoc {
58         repository = WikiHelper.getRepository(appleRequest.getCocoonRequest(), serviceManager);
59
60         String JavaDoc resource = appleRequest.getSitemapParameter("resource");
61         EntityHandler entityHandler = (EntityHandler)ENTITY_HANDLERS.get(resource);
62         if (entityHandler == null)
63             throw new ResourceNotFoundException("Unknown admin resource: " + resource);
64
65         Request request = appleRequest.getCocoonRequest();
66         String JavaDoc method = request.getMethod();
67         if (method.equals("POST")) {
68             String JavaDoc action = request.getParameter("action");
69             String JavaDoc idParam = request.getParameter("id");
70
71             if (action == null || action.equals("") || idParam == null || idParam.equals(""))
72                 throw new Exception JavaDoc("Invalid request: missing request parameters.");
73
74             if (action.equals("delete")) {
75                 long id = Long.parseLong(idParam);
76                 entityHandler.deleteEntity(id, repository);
77             } else {
78                 throw new Exception JavaDoc("Unsupported action: " + action);
79             }
80         }
81
82         // show list of the entities
83
Map JavaDoc viewData = new HashMap JavaDoc();
84         viewData.put("pageXml", new XmlObjectXMLizable(entityHandler.getEntityList(repository)));
85         viewData.put("pageContext", new PageContext(getMountPoint(), repository, getLayoutType(), getSkin(), SkinConfHelper.getGlobalSkinConf(serviceManager), getContext()));
86         viewData.put("entityName", entityHandler.getEntityName().toLowerCase());
87         appleResponse.sendPage("EntitiesPipe", viewData);
88     }
89
90     interface EntityHandler {
91         String JavaDoc getEntityName();
92
93         void deleteEntity(long id, Repository repository) throws Exception JavaDoc;
94
95         XmlObject getEntityList(Repository repository) throws Exception JavaDoc;
96     }
97
98     public static class DocumentTypeHandler implements EntityHandler {
99         public static final String JavaDoc NAME = "documentType";
100
101         public String JavaDoc getEntityName() {
102             return NAME;
103         }
104
105         public void deleteEntity(long id, Repository repository) throws Exception JavaDoc {
106             repository.getRepositorySchema().deleteDocumentType(id);
107         }
108
109         public XmlObject getEntityList(Repository repository) throws Exception JavaDoc {
110             return repository.getRepositorySchema().getAllDocumentTypes(false).getXml();
111         }
112     }
113
114     public static class PartTypeHandler implements EntityHandler {
115         public static final String JavaDoc NAME = "partType";
116
117         public String JavaDoc getEntityName() {
118             return NAME;
119         }
120
121         public void deleteEntity(long id, Repository repository) throws Exception JavaDoc {
122             repository.getRepositorySchema().deletePartType(id);
123         }
124
125         public XmlObject getEntityList(Repository repository) throws Exception JavaDoc {
126             return repository.getRepositorySchema().getAllPartTypes(false).getXml();
127         }
128     }
129
130     public static class FieldTypeHandler implements EntityHandler {
131         public static final String JavaDoc NAME = "fieldType";
132
133         public String JavaDoc getEntityName() {
134             return NAME;
135         }
136
137         public void deleteEntity(long id, Repository repository) throws Exception JavaDoc {
138             repository.getRepositorySchema().deleteFieldType(id);
139         }
140
141         public XmlObject getEntityList(Repository repository) throws Exception JavaDoc {
142             return repository.getRepositorySchema().getAllFieldTypes(false).getXml();
143         }
144     }
145
146     public static class CollectionHandler implements EntityHandler {
147         public static final String JavaDoc NAME = "collection";
148
149         public String JavaDoc getEntityName() {
150             return NAME;
151         }
152
153         public void deleteEntity(long id, Repository repository) throws Exception JavaDoc {
154             repository.getCollectionManager().deleteCollection(id);
155         }
156
157         public XmlObject getEntityList(Repository repository) throws Exception JavaDoc {
158             return repository.getCollectionManager().getCollections(false).getXml();
159         }
160     }
161
162     public static class RoleHandler implements EntityHandler {
163         public static final String JavaDoc NAME = "role";
164
165         public String JavaDoc getEntityName() {
166             return NAME;
167         }
168
169         public void deleteEntity(long id, Repository repository) throws Exception JavaDoc {
170             repository.getUserManager().deleteRole(id);
171         }
172
173         public XmlObject getEntityList(Repository repository) throws Exception JavaDoc {
174             return repository.getUserManager().getRoles().getXml();
175         }
176     }
177
178     public static class UserHandler implements EntityHandler {
179         public static final String JavaDoc NAME = "user";
180
181         public String JavaDoc getEntityName() {
182             return NAME;
183         }
184
185         public void deleteEntity(long id, Repository repository) throws Exception JavaDoc {
186             repository.getUserManager().deleteUser(id);
187         }
188
189         public XmlObject getEntityList(Repository repository) throws Exception JavaDoc {
190             return repository.getUserManager().getUsers().getXml();
191         }
192     }
193
194     public static class BranchHandler implements EntityHandler {
195         public static final String JavaDoc NAME = "branch";
196
197         public String JavaDoc getEntityName() {
198             return NAME;
199         }
200
201         public void deleteEntity(long id, Repository repository) throws Exception JavaDoc {
202             repository.getVariantManager().deleteBranch(id);
203         }
204
205         public XmlObject getEntityList(Repository repository) throws Exception JavaDoc {
206             return repository.getVariantManager().getAllBranches(false).getXml();
207         }
208     }
209
210     public static class LanguageHandler implements EntityHandler {
211         public static final String JavaDoc NAME = "language";
212
213         public String JavaDoc getEntityName() {
214             return NAME;
215         }
216
217         public void deleteEntity(long id, Repository repository) throws Exception JavaDoc {
218             repository.getVariantManager().deleteLanguage(id);
219         }
220
221         public XmlObject getEntityList(Repository repository) throws Exception JavaDoc {
222             return repository.getVariantManager().getAllLanguages(false).getXml();
223         }
224     }
225 }
226
Popular Tags