Package org.osforce.spring4me.web.widget.config.impl

Source Code of org.osforce.spring4me.web.widget.config.impl.XmlConfigParser

package org.osforce.spring4me.web.widget.config.impl;

import java.io.File;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.osforce.spring4me.commons.xml.XMLUtil;
import org.osforce.spring4me.web.widget.config.ConfigParser;
import org.osforce.spring4me.web.widget.config.PageConfig;
import org.osforce.spring4me.web.widget.config.WidgetConfig;
import org.w3c.dom.Element;

/**
*
* @author <a href="mailto:haozhonghu@hotmail.com">gavin</a>
* @since 0.1.0
* @create May 13, 2011 - 4:38:12 PM
* <a href="http://www.opensourceforce.org">开源力量</a>
*/
public class XmlConfigParser implements ConfigParser {

  public XmlConfigParser() {
  }
 
  public PageConfig parse(File xmlPage, Map<String, String> paramMap) {
    Element pageEle = findPageEle(xmlPage, paramMap);
    return parseToPageConfig(pageEle);
  }
 
  protected Element findPageEle(File xml, Map<String, String> paramMap) {
    Element pageEle = XMLUtil.parseToElement(xml);
    if(StringUtils.equals(XMLUtil.getName(pageEle), "pages")) {
      String path = paramMap.get("path");
      String qualifier = paramMap.get("qualifier");
      List<Element> pageEles = XMLUtil.getChildElements(pageEle, "page");
      //
      for(Element tmpEle : pageEles) {
        if(XMLUtil.hasAttributeValue(tmpEle, "path", path) &&
            XMLUtil.hasAttributeValue(tmpEle, "qualifier", qualifier)) {
          return tmpEle;
        }
      }
      //
      for(Element tmpEle : pageEles) {
        if(XMLUtil.hasAttributeValue(tmpEle, "qualifier", qualifier)) {
          return tmpEle;
        }
      }
      // default page element
      for(Element tmpEle : pageEles) {
        if(XMLUtil.hasAttributeValue(tmpEle, "path", path) &&
            !XMLUtil.hasAttribute(tmpEle, "qualifier")) {
          pageEle = tmpEle;
        }
      }
    }
    return pageEle;
  }
 
  protected PageConfig parseToPageConfig(Element pageEle) {
    String parentP = XMLUtil.getAttribute(pageEle, "parent");
    String qualifierP = XMLUtil.getAttribute(pageEle, "qualifier");
    PageConfig pageConfig = new PageConfig(parentP, qualifierP);
    List<Element> placeholderEles = XMLUtil.getChildElements(pageEle, "placeholder");
    for(Element placeholderEle : placeholderEles) {
      String nameP = XMLUtil.getAttribute(placeholderEle, "name");
      List<Element> widgetEles = XMLUtil.getChildElements(placeholderEle, "widget");
      for(Element widgetEle : widgetEles) {
        String nameW = XMLUtil.getAttribute(widgetEle, "name");
        String pathW = XMLUtil.getAttribute(widgetEle, "path");
        String cssClassW = XMLUtil.getAttribute(widgetEle, "cssClass");
        String cacheW = XMLUtil.getAttribute(widgetEle, "cache");
        WidgetConfig widgetConfig = new WidgetConfig(nameW, pathW, cssClassW, cacheW);
        //
        Element titleEle = XMLUtil.getChildElement(widgetEle, "title");
        if(titleEle!=null) {
          String titleW = XMLUtil.getValue(titleEle);
          widgetConfig.setTitle(titleW);
        }
        //
        Element prefsEle = XMLUtil.getChildElement(widgetEle, "prefs");
        if(prefsEle!=null) {
        List<Element> prefEles = XMLUtil.getChildElements(prefsEle);
          for(Element prefEle : prefEles) {
            String key = XMLUtil.getName(prefEle);
            String value = XMLUtil.getValue(prefEle);
            widgetConfig.addPref(key, value);
          }
        }
        pageConfig.add(nameP, widgetConfig);
      }
    }
    return pageConfig;
  }
 
}
TOP

Related Classes of org.osforce.spring4me.web.widget.config.impl.XmlConfigParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.