KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > opencms > setup > xml > CmsXmlAddXmlContentWidgets


1 /*
2  * File : $Source: /usr/local/cvs/opencms/src/org/opencms/setup/xml/CmsXmlAddXmlContentWidgets.java,v $
3  * Date : $Date: 2006/03/27 14:52:44 $
4  * Version: $Revision: 1.2 $
5  *
6  * This library is part of OpenCms -
7  * the Open Source Content Mananagement System
8  *
9  * Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2.1 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  * Lesser General Public License for more details.
20  *
21  * For further information about Alkacon Software GmbH, please see the
22  * company website: http://www.alkacon.com
23  *
24  * For further information about OpenCms, please see the
25  * project website: http://www.opencms.org
26  *
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */

31
32 package org.opencms.setup.xml;
33
34 import org.opencms.configuration.CmsConfigurationManager;
35 import org.opencms.configuration.CmsVfsConfiguration;
36 import org.opencms.configuration.I_CmsXmlConfiguration;
37 import org.opencms.widgets.CmsDisplayWidget;
38 import org.opencms.widgets.CmsGroupWidget;
39 import org.opencms.widgets.CmsMultiSelectWidget;
40 import org.opencms.widgets.CmsUserWidget;
41
42 import java.util.ArrayList JavaDoc;
43 import java.util.List JavaDoc;
44
45 import org.dom4j.Document;
46 import org.dom4j.Node;
47
48 /**
49  * Adds the new xml content widgets.<p>
50  *
51  * @author Michael Moossen
52  *
53  * @version $Revision: 1.2 $
54  *
55  * @since 6.1.8
56  */

57 public class CmsXmlAddXmlContentWidgets extends A_CmsSetupXmlUpdate {
58
59     /** List of xpaths to update. */
60     private List JavaDoc m_xpaths;
61
62     /**
63      * @see org.opencms.setup.xml.I_CmsSetupXmlUpdate#getName()
64      */

65     public String JavaDoc getName() {
66
67         return "Add new Xml Content widgets";
68     }
69
70     /**
71      * @see org.opencms.setup.xml.I_CmsSetupXmlUpdate#getXmlFilename()
72      */

73     public String JavaDoc getXmlFilename() {
74
75         return CmsVfsConfiguration.DEFAULT_XML_FILE_NAME;
76     }
77
78     /**
79      * @see org.opencms.setup.xml.A_CmsSetupXmlUpdate#executeUpdate(org.dom4j.Document, java.lang.String)
80      */

81     protected boolean executeUpdate(Document document, String JavaDoc xpath) {
82
83         Node node = document.selectSingleNode(xpath);
84         if (node == null) {
85             if (getXPathsToUpdate().contains(xpath)) {
86                 if (xpath.indexOf("DisplayWidget") > 0) {
87                     CmsSetupXmlHelper.setValue(document, xpath + "/@" + I_CmsXmlConfiguration.A_ALIAS, "DisplayWidget");
88                     CmsSetupXmlHelper.setValue(
89                         document,
90                         xpath + "/@" + I_CmsXmlConfiguration.A_CLASS,
91                         CmsDisplayWidget.class.getName());
92                 } else if (xpath.indexOf("MultiSelectWidget") > 0) {
93                     CmsSetupXmlHelper.setValue(
94                         document,
95                         xpath + "/@" + I_CmsXmlConfiguration.A_ALIAS,
96                         "MultiSelectWidget");
97                     CmsSetupXmlHelper.setValue(
98                         document,
99                         xpath + "/@" + I_CmsXmlConfiguration.A_CLASS,
100                         CmsMultiSelectWidget.class.getName());
101                 } else if (xpath.indexOf("UserWidget") > 0) {
102                     CmsSetupXmlHelper.setValue(document, xpath + "/@" + I_CmsXmlConfiguration.A_ALIAS, "UserWidget");
103                     CmsSetupXmlHelper.setValue(
104                         document,
105                         xpath + "/@" + I_CmsXmlConfiguration.A_CLASS,
106                         CmsUserWidget.class.getName());
107                 } else if (xpath.indexOf("GroupWidget") > 0) {
108                     CmsSetupXmlHelper.setValue(document, xpath + "/@" + I_CmsXmlConfiguration.A_ALIAS, "GroupWidget");
109                     CmsSetupXmlHelper.setValue(
110                         document,
111                         xpath + "/@" + I_CmsXmlConfiguration.A_CLASS,
112                         CmsGroupWidget.class.getName());
113                 }
114                 return true;
115             }
116         }
117         return false;
118     }
119
120     /**
121      * @see org.opencms.setup.xml.A_CmsSetupXmlUpdate#getCommonPath()
122      */

123     protected String JavaDoc getCommonPath() {
124
125         // /opencms/vfs/xmlcontent/widgets
126
StringBuffer JavaDoc xp = new StringBuffer JavaDoc(256);
127         xp.append("/").append(CmsConfigurationManager.N_ROOT);
128         xp.append("/").append(CmsVfsConfiguration.N_VFS);
129         xp.append("/").append(CmsVfsConfiguration.N_XMLCONTENT);
130         xp.append("/").append(CmsVfsConfiguration.N_WIDGETS);
131         return xp.toString();
132     }
133
134     /**
135      * @see org.opencms.setup.xml.A_CmsSetupXmlUpdate#getXPathsToUpdate()
136      */

137     protected List JavaDoc getXPathsToUpdate() {
138
139         if (m_xpaths == null) {
140             // "/opencms/vfs/xmlcontent/widgets/widget[@alias='widget']";
141
StringBuffer JavaDoc xp = new StringBuffer JavaDoc(256);
142             xp.append("/").append(CmsConfigurationManager.N_ROOT);
143             xp.append("/").append(CmsVfsConfiguration.N_VFS);
144             xp.append("/").append(CmsVfsConfiguration.N_XMLCONTENT);
145             xp.append("/").append(CmsVfsConfiguration.N_WIDGETS);
146             xp.append("/").append(CmsVfsConfiguration.N_WIDGET);
147             xp.append("[@").append(I_CmsXmlConfiguration.A_ALIAS);
148             xp.append("='");
149             m_xpaths = new ArrayList JavaDoc();
150             m_xpaths.add(xp.toString() + "DisplayWidget']");
151             m_xpaths.add(xp.toString() + "MultiSelectWidget']");
152             m_xpaths.add(xp.toString() + "UserWidget']");
153             m_xpaths.add(xp.toString() + "GroupWidget']");
154         }
155         return m_xpaths;
156     }
157
158 }
Popular Tags