View Javadoc

1   /**
2    * Copyright (C) 2005-2009 Alfresco Software Limited.
3    *
4    * This file is part of the Spring Surf Extension project.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *  http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.springframework.roo.addon.surf.util;
20  
21  import java.util.List;
22  import java.util.logging.Logger;
23  
24  import org.springframework.roo.support.util.XmlUtils;
25  import org.w3c.dom.Document;
26  import org.w3c.dom.Element;
27  
28  /**
29   * @author Yong Qu
30   */
31  public class ComponentConfigUtils {
32  	static Logger logger = Logger.getLogger(ComponentConfigUtils.class.getName());
33  
34  	public static String componentsToString (Document doc){
35  		List<Element> components = getComponentsElems(doc);
36  		if (components == null) {
37  			return "";
38  		} else {
39  			StringBuffer sb = new StringBuffer();
40  			for (Element component : components) {
41  				sb.append(componentToString(component));
42  				sb.append("\n");
43  			}
44  			return sb.toString().trim();
45  		}
46  
47  	}
48  	public static String componentToString(Element componentElem) {
49  		StringBuffer sb = new StringBuffer();
50  		Element regionIdElem = XmlUtils.findFirstElement("region-id", componentElem);
51  		if (regionIdElem != null){
52  			sb.append("Region: ");
53  			sb.append(regionIdElem.getTextContent());
54  		}
55  		Element urlElem = XmlUtils.findFirstElement("url", componentElem);
56  		if (urlElem != null){
57  			sb.append(" Url: ");
58  			sb.append(urlElem.getTextContent());
59  		} 
60  		//Component Resources?
61  		//Component Properties?
62  		return sb.toString();
63  	}
64  
65  	public static Element getComponentElem(Document doc) {
66  		Element rootElem = (Element) doc.getFirstChild();
67  		if (rootElem.getTagName().equals("component")){
68  			return rootElem;
69  		} else {
70  			return null;
71  		}
72  	}
73  
74  	public static List<Element> getComponentsElems(Document doc) {
75  		Element rootElem = (Element) doc.getFirstChild();
76  		Element componentsElem = XmlUtils.findFirstElementByName("components", rootElem);
77  		if ( componentsElem == null) {
78  			return null;
79  		} else {
80  			return XmlUtils.findElements("component", componentsElem);
81  		}
82  	}
83  
84  	public static Element updateComponentConfig(Document doc,String regionId, String url) {
85  		Element rootElem = (Element) doc.getFirstChild();
86  		Element componentsElem = XmlUtils.findFirstElementByName("components", rootElem);
87  		if ( componentsElem == null ){
88  			componentsElem = doc.createElement("components");
89  			rootElem.appendChild(componentsElem);
90  		}
91  		Element componentElem = XmlUtils.findFirstElement("component[region-id='"+regionId+"']", componentsElem);
92  		if ( componentElem == null ) {
93  			componentElem = doc.createElement("component");
94  			componentsElem.appendChild(componentElem);
95  			Element regionIdElem = doc.createElement("region-id");
96  			regionIdElem.setTextContent(regionId);
97  			Element urlElem = doc.createElement("url");
98  			urlElem.setTextContent(url);
99  			componentElem.appendChild(regionIdElem);
100 			componentElem.appendChild(urlElem);
101 		} else {
102 			XmlUtils.findFirstElement("url", componentElem).setTextContent(url);
103 		}
104 		return componentElem;
105 	}
106 
107 	public static boolean removeComponentConfig(Document doc,String regionId) {
108 		Element rootElem = (Element) doc.getFirstChild();
109 		Element componentElem = XmlUtils.findFirstElement("components/component[region-id='"+regionId+"']", rootElem);
110 		if ( componentElem == null ) {
111 			return false;
112 		} else {
113 			Element componentsElem = XmlUtils.findFirstElementByName("components", rootElem);
114 			componentsElem.removeChild(componentElem);
115 			return true;
116 		}
117 	}
118 
119 	public static String getComponentConfigByRegionId(Document doc,String regionId) {
120 		Element rootElem = (Element) doc.getFirstChild();
121 		Element componentElem = XmlUtils.findFirstElement("components/component[region-id='"+regionId+"']", rootElem);
122 		if ( componentElem == null ) {
123 			return null;
124 		} else {
125 			return XmlUtils.findFirstElement("url", componentElem).getTextContent();
126 		}
127 	}
128 
129 	public static String getComponentConfigByUrl(Document doc,String url) {
130 		Element rootElem = (Element) doc.getFirstChild();
131 		Element componentElem = XmlUtils.findFirstElement("components/component[url='"+url+"']", rootElem);
132 		if ( componentElem == null ) {
133 			return null;
134 		} else {
135 			return XmlUtils.findFirstElement("region-id", componentElem).getTextContent();
136 		}
137 	}
138 
139 
140 }