KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > portal > core > deployment > jboss > PortalDeployment


1 /*****************************************
2  * *
3  * JBoss Portal: The OpenSource Portal *
4  * *
5  * Distributable under LGPL license. *
6  * See terms of license at gnu.org. *
7  * *
8  *****************************************/

9 package org.jboss.portal.core.deployment.jboss;
10
11 import org.jboss.deployment.DeploymentException;
12 import org.jboss.portal.common.util.XML;
13 import org.jboss.portal.core.metadata.PageMetaData;
14 import org.jboss.portal.core.metadata.PageSetMetaData;
15 import org.jboss.portal.core.metadata.WindowLocationMetaData;
16 import org.jboss.portal.server.ServerManager;
17 import org.jboss.portal.server.ServerObjectID;
18 import org.jboss.portal.server.metadata.PortalMetaData;
19 import org.jboss.portal.server.metadata.WindowMetaData;
20 import org.jboss.portal.server.util.ServerObjectIDEditor;
21 import org.w3c.dom.Element JavaDoc;
22
23 import java.net.URL JavaDoc;
24 import java.util.List JavaDoc;
25
26 /**
27  * @author <a HREF="mailto:julien@jboss.org">Julien Viet</a>
28  * @version $Revision: 1.5 $
29  */

30 public class PortalDeployment extends org.jboss.portal.server.deployment.jboss.PortalDeployment
31 {
32
33    private PageMetaData[] pageMDs;
34    private WindowMetaData[] windowMDs;
35
36    public PortalDeployment(ServerManager serverManager, URL JavaDoc url)
37    {
38       super(serverManager, url);
39    }
40
41    protected PortalMetaData buildPortalMetaData(Element JavaDoc portalElt) throws Exception JavaDoc
42    {
43       PortalMetaData portalMD = super.buildPortalMetaData(portalElt);
44       Element JavaDoc pagesElt = XML.getUniqueChild(portalElt, "pages", true);
45       PageSetMetaData pageSetMetaData = new PageSetMetaData();
46       String JavaDoc defaultPageName = XML.asString(XML.getUniqueChild(pagesElt, "default-page", true));
47       pageSetMetaData.setDefaultPageName(defaultPageName);
48       portalMD.addPlugin("PAGES", pageSetMetaData);
49
50       List JavaDoc pageElts = XML.getChildren(pagesElt, "page");
51       pageMDs = new PageMetaData[pageElts.size()];
52
53       int nWindows = 0;
54       for (int i = 0; i < pageElts.size(); i++)
55       {
56          Element JavaDoc pageElt = (Element JavaDoc)pageElts.get(i);
57          List JavaDoc windowElts = XML.getChildren(pageElt, "window");
58          nWindows += windowElts.size();
59       }
60       windowMDs = new WindowMetaData[nWindows];
61
62       int idx = 0;
63       for (int i = 0; i < pageElts.size(); i++)
64       {
65          Element JavaDoc pageElt = (Element JavaDoc)pageElts.get(i);
66          PageMetaData pageMD = buildPageMetaData(pageElt, portalMD.getName());
67          pageMDs[i] = pageMD;
68
69          List JavaDoc windowElts = XML.getChildren(pageElt, "window");
70          for (int j = 0; j < windowElts.size(); j++)
71          {
72             Element JavaDoc windowElt = (Element JavaDoc)windowElts.get(j);
73             WindowMetaData windowMD = buildWindowMetaData(portalMD.getName(), windowElt);
74             windowMDs[idx++] = windowMD;
75          }
76       }
77
78       for (int i = 0; i < pageMDs.length; i++)
79       {
80          PageMetaData pageMD = pageMDs[i];
81          getServerManager().deploy(pageMD);
82       }
83
84       for (int i = 0; i < windowMDs.length; i++)
85       {
86          WindowMetaData windowMD = windowMDs[i];
87          getServerManager().deploy(windowMD);
88       }
89
90       return portalMD;
91    }
92
93    public void destroy() throws DeploymentException
94    {
95       for (int i = 0; i < windowMDs.length; i++)
96       {
97          WindowMetaData windowMD = windowMDs[i];
98          getServerManager().undeploy(windowMD.getID());
99       }
100       for (int i = 0; i < pageMDs.length; i++)
101       {
102          PageMetaData pageMD = pageMDs[i];
103          getServerManager().undeploy(pageMD.getID());
104       }
105       super.destroy();
106    }
107
108    public static WindowMetaData buildWindowMetaData(String JavaDoc portalName, Element JavaDoc windowElt)
109    {
110       ServerObjectIDEditor editor = new ServerObjectIDEditor();
111       String JavaDoc windowName = XML.asString(XML.getUniqueChild(windowElt, "window-name", true));
112       String JavaDoc instanceRef = XML.asString(XML.getUniqueChild(windowElt, "instance-ref", true));
113       ServerObjectID serverID = ServerObjectID.createPortalID(portalName);
114       editor.setAsText("instance." + instanceRef);
115       ServerObjectID instanceID = (ServerObjectID)editor.getValue();
116       WindowMetaData windowMD = new WindowMetaData(windowName, serverID, instanceID);
117       return windowMD;
118    }
119
120    public static PageMetaData buildPageMetaData(Element JavaDoc pageElt, String JavaDoc portalName)
121    {
122       String JavaDoc pageName = XML.asString(XML.getUniqueChild(pageElt, "page-name", true));
123       PageMetaData pageMetaData = new PageMetaData(portalName, pageName);
124       Element JavaDoc layout = XML.getUniqueChild(pageElt, "layout-name", false);
125       if (layout != null)
126       {
127          pageMetaData.setLayoutName(XML.asString(layout));
128       }
129       List JavaDoc windowElts = XML.getChildren(pageElt, "window");
130       for (int j = 0; j < windowElts.size(); j++)
131       {
132          Element JavaDoc windowElt = (Element JavaDoc)windowElts.get(j);
133          try
134          {
135             buildWindowLocationMetaData(portalName, pageMetaData, windowElt);
136          }
137          catch (Exception JavaDoc e)
138          {
139             e.printStackTrace();
140          }
141       }
142       return pageMetaData;
143    }
144
145    public static void buildWindowLocationMetaData(String JavaDoc portalName, PageMetaData pageMD, Element JavaDoc windowElt) throws Exception JavaDoc
146    {
147       //
148
String JavaDoc windowName = XML.asString(XML.getUniqueChild(windowElt, "window-name", true));
149
150       // Is it the default window ?
151
// Element defaultElt = XML.getUniqueChild(windowElt, "default", false);
152
// boolean isDefault = defaultElt != null && "true".equals(XML.asString(defaultElt));
153

154       // Get coordinates
155
String JavaDoc region = XML.asString(XML.getUniqueChild(windowElt, "region", true));
156       int height = Integer.parseInt(XML.asString(XML.getUniqueChild(windowElt, "height", true)));
157
158       // Get ids
159
ServerObjectID windowID = ServerObjectID.createWindowID(portalName, windowName);
160
161       // Place the window on the page
162
WindowLocationMetaData pwmd = new WindowLocationMetaData(windowID, region, height);
163       pageMD.addWindow(pwmd);
164 /*
165       if (isDefault)
166       {
167          pageMD.setDefaultWindow(pwmd);
168       }
169       else
170       {
171       }
172 */

173    }
174 }
175
Popular Tags