KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > console > car > ExportConfigHandler


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.geronimo.console.car;
18
19 import java.io.IOException JavaDoc;
20 import java.io.BufferedReader JavaDoc;
21 import java.io.StringReader JavaDoc;
22 import java.util.List JavaDoc;
23 import java.util.ArrayList JavaDoc;
24 import java.net.URL JavaDoc;
25 import java.net.MalformedURLException JavaDoc;
26 import javax.portlet.ActionRequest;
27 import javax.portlet.ActionResponse;
28 import javax.portlet.PortletException;
29 import javax.portlet.RenderRequest;
30 import javax.portlet.RenderResponse;
31 import org.apache.commons.logging.Log;
32 import org.apache.commons.logging.LogFactory;
33 import org.apache.geronimo.console.MultiPageModel;
34 import org.apache.geronimo.console.util.PortletManager;
35 import org.apache.geronimo.kernel.repository.Artifact;
36 import org.apache.geronimo.system.plugin.PluginMetadata;
37
38 /**
39  * Handler for the screen where you configure plugin data before exporting
40  *
41  * @version $Rev: 476061 $ $Date: 2006-11-17 01:36:50 -0500 (Fri, 17 Nov 2006) $
42  */

43 public class ExportConfigHandler extends BaseImportExportHandler {
44     private final static Log log = LogFactory.getLog(ExportConfigHandler.class);
45
46     public ExportConfigHandler() {
47         super(CONFIGURE_EXPORT_MODE, "/WEB-INF/view/car/pluginParams.jsp");
48     }
49
50     public String JavaDoc actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException JavaDoc {
51         String JavaDoc configId = request.getParameter("configId");
52         if(configId != null) {
53             response.setRenderParameter("configId", configId);
54         }
55         return getMode();
56     }
57
58     public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException JavaDoc {
59         String JavaDoc configId = request.getParameter("configId");
60         PluginMetadata data = PortletManager.getCurrentServer(request).getPluginInstaller().getPluginMetadata(Artifact.create(configId));
61         request.setAttribute("configId", data.getModuleId());
62         request.setAttribute("name", data.getName());
63         request.setAttribute("repository", combine(data.getRepositories()));
64         request.setAttribute("category", data.getCategory());
65         request.setAttribute("url", data.getPluginURL());
66         request.setAttribute("author", data.getAuthor());
67         request.setAttribute("description", data.getDescription());
68         PluginMetadata.License[] licenses = data.getLicenses();
69         if(licenses != null && licenses.length > 0) {
70             request.setAttribute("license", licenses[0].getName());
71             if(licenses[0].isOsiApproved()) {
72                 request.setAttribute("licenseOSI", "true");
73             }
74             if(licenses.length > 1) {
75                 log.warn("Unable to edit plugin metadata containing more than one license! Additional license data will not be editable.");
76             }
77         }
78         request.setAttribute("gerVersions", combine(data.getGeronimoVersions()));
79         request.setAttribute("jvmVersions", combine(data.getJvmVersions()));
80         request.setAttribute("dependencies", combine(data.getDependencies()));
81         request.setAttribute("obsoletes", combine(data.getObsoletes()));
82         PluginMetadata.Prerequisite[] reqs = data.getPrerequisites();
83         if(reqs != null && reqs.length > 0) {
84             for (int i = 0; i < reqs.length; i++) {
85                 PluginMetadata.Prerequisite req = reqs[i];
86                 String JavaDoc prefix = "prereq" + (i+1);
87                 request.setAttribute(prefix, req.getModuleId().toString());
88                 request.setAttribute(prefix +"type", req.getResourceType());
89                 request.setAttribute(prefix +"desc", req.getDescription());
90             }
91             if(reqs.length > 3) {
92                 log.warn("Unable to edit plugin metadata containing more than three prerequisites! Additional prereqs will not be editable.");
93             }
94         }
95     }
96
97     public String JavaDoc actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException JavaDoc {
98         String JavaDoc configId = request.getParameter("configId");
99         String JavaDoc name = request.getParameter("name");
100         String JavaDoc repo = request.getParameter("repository");
101         String JavaDoc category = request.getParameter("category");
102         String JavaDoc url = request.getParameter("url");
103         String JavaDoc author = request.getParameter("author");
104         String JavaDoc description = request.getParameter("description");
105         String JavaDoc license = request.getParameter("license");
106         String JavaDoc osi = request.getParameter("licenseOSI");
107         String JavaDoc gers = request.getParameter("gerVersions");
108         String JavaDoc jvms = request.getParameter("jvmVersions");
109         String JavaDoc deps = request.getParameter("dependencies");
110         String JavaDoc obsoletes = request.getParameter("obsoletes");
111         PluginMetadata data = PortletManager.getCurrentServer(request).getPluginInstaller().getPluginMetadata(Artifact.create(configId));
112         PluginMetadata metadata = new PluginMetadata(name, data.getModuleId(),
113                 category, description, url, author, null, true, false);
114         metadata.setDependencies(split(deps));
115         metadata.setGeronimoVersions(split(gers));
116         metadata.setJvmVersions(split(jvms));
117         metadata.setObsoletes(split(obsoletes));
118         List JavaDoc licenses = new ArrayList JavaDoc();
119         if(license != null && !license.trim().equals("")) {
120             licenses.add(new PluginMetadata.License(license.trim(), osi != null && !osi.equals("")));
121         }
122         for (int i = 1; i < data.getLicenses().length; i++) {
123             licenses.add(data.getLicenses()[i]);
124         }
125         metadata.setLicenses((PluginMetadata.License[]) licenses.toArray(new PluginMetadata.License[licenses.size()]));
126         List JavaDoc prereqs = new ArrayList JavaDoc();
127         int counter = 1;
128         while(true) {
129             String JavaDoc prefix = "prereq" + counter;
130             ++counter;
131             String JavaDoc id = request.getParameter(prefix);
132             if(id == null || id.trim().equals("")) {
133                 break;
134             }
135             String JavaDoc type = request.getParameter(prefix+"type");
136             String JavaDoc desc = request.getParameter(prefix+"desc");
137             if(type != null && type.trim().equals("")) {
138                 type = null;
139             }
140             if(desc != null && desc.trim().equals("")) {
141                 desc = null;
142             }
143             prereqs.add(new PluginMetadata.Prerequisite(Artifact.create(id), false, type, desc));
144         }
145         for (int i = 3; i < data.getPrerequisites().length; i++) {
146             PluginMetadata.Prerequisite req = data.getPrerequisites()[i];
147             prereqs.add(req);
148         }
149         metadata.setPrerequisites((PluginMetadata.Prerequisite[]) prereqs.toArray(new PluginMetadata.Prerequisite[prereqs.size()]));
150         URL JavaDoc[] backupURLs = splitURLs(repo);
151         metadata.setRepositories(backupURLs);
152
153         // TODO: Fields not yet handled by the UI
154
metadata.setForceStart(data.getForceStart());
155         metadata.setFilesToCopy(data.getFilesToCopy());
156         metadata.setConfigXmls(data.getConfigXmls());
157         // Save updated metadata
158
PortletManager.getCurrentServer(request).getPluginInstaller().updatePluginMetadata(metadata);
159
160         response.setRenderParameter("configId", configId);
161         response.setRenderParameter("name", name);
162
163         return CONFIRM_EXPORT_MODE+BEFORE_ACTION;
164     }
165
166     private URL JavaDoc[] splitURLs(String JavaDoc backups) throws MalformedURLException JavaDoc {
167         String JavaDoc[] strings = split(backups);
168         URL JavaDoc[] result = new URL JavaDoc[strings.length];
169         for (int i = 0; i < result.length; i++) {
170             result[i] = new URL JavaDoc(strings[i]);
171         }
172         return result;
173     }
174
175
176     private String JavaDoc[] split(String JavaDoc deps) {
177         if(deps == null || deps.equals("")) {
178             return new String JavaDoc[0];
179         }
180         List JavaDoc list = new ArrayList JavaDoc();
181         BufferedReader JavaDoc in = new BufferedReader JavaDoc(new StringReader JavaDoc(deps));
182         String JavaDoc line;
183         try {
184             while((line = in.readLine()) != null) {
185                 line = line.trim();
186                 if(!line.equals("")) {
187                     list.add(line);
188                 }
189             }
190             in.close();
191         } catch (IOException JavaDoc e) {
192             log.error("Unable to parse request arguments", e);
193         }
194         return (String JavaDoc[]) list.toArray(new String JavaDoc[list.size()]);
195     }
196
197     private String JavaDoc combine(String JavaDoc[] strings) {
198         if(strings == null || strings.length == 0) {
199             return null;
200         }
201         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
202         for (int i = 0; i < strings.length; i++) {
203             String JavaDoc string = strings[i];
204             if(i > 0) {
205                 buf.append("\n");
206             }
207             buf.append(string);
208         }
209         return buf.toString();
210     }
211
212     private String JavaDoc combine(URL JavaDoc[] urls) {
213         if(urls == null || urls.length == 0) {
214             return null;
215         }
216         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
217         for (int i = 0; i < urls.length; i++) {
218             URL JavaDoc url = urls[i];
219             if(i > 0) {
220                 buf.append("\n");
221             }
222             buf.append(url.toString());
223         }
224         return buf.toString();
225     }
226 }
227
Popular Tags