se.gothiaforum.util.DynamicArticleHandler.java Source code

Java tutorial

Introduction

Here is the source code for se.gothiaforum.util.DynamicArticleHandler.java

Source

/**
 * Copyright 2010 Vstra Gtalandsregionen
 *
 *   This library is free software; you can redistribute it and/or modify
 *   it under the terms of version 2.1 of the GNU Lesser General Public
 *   License as published by the Free Software Foundation.
 *
 *   This library is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU Lesser General Public License for more details.
 *
 *   You should have received a copy of the GNU Lesser General Public
 *   License along with this library; if not, write to the
 *   Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 *   Boston, MA 02111-1307  USA
 *
 */

package se.gothiaforum.util;

import java.util.ArrayList;
import java.util.List;

import se.gothiaforum.actorsarticle.util.ActorsConstants;

import com.liferay.portal.kernel.xml.Document;
import com.liferay.portal.kernel.xml.DocumentException;
import com.liferay.portal.kernel.xml.Element;
import com.liferay.portal.kernel.xml.SAXReaderUtil;

/**
 * This class generate the dynamic element representation from the XML string.
 * 
 * @author simgo3
 */
public class DynamicArticleHandler {

    /**
     * Generate dynamic elements from an XML string.
     * 
     * @param content
     *            the content
     * @return the dynamic element
     */
    public DynamicElement generateDynamicElements(String content) {

        DynamicElement rootDynamicElement = null;

        try {
            if (content != null) {
                Document document;

                document = SAXReaderUtil.read(content);

                Element element = document.getRootElement();

                // Sprk
                // kolla att det finns en struktur

                // SAXReaderUtil.selectNodes("[/@name=title]", document.content());

                List<Element> elements = element.elements(ActorsConstants.ARTICLE_XML_DYNAMIC_ELEMENT);
                String elementContent = element.elementText(ActorsConstants.ARTICLE_XML_DYNAMIC_ELEMENT);

                rootDynamicElement = new DynamicElement(element.getName(), elementContent,
                        generateDynamicElement(elements));
            }

        } catch (DocumentException e) {
            throw new RuntimeException("Unable to generate a dynamic element", e);
        }

        return rootDynamicElement;
    }

    private List<DynamicElement> generateDynamicElement(List<Element> elements) {

        List<DynamicElement> dynamicElementList = new ArrayList<DynamicElement>();

        for (Element e : elements) {
            List<Element> childElements = e.elements(ActorsConstants.ARTICLE_XML_DYNAMIC_ELEMENT);
            String content = e.elementText(ActorsConstants.ARTICLE_XML_DYNAMIC_CONTENT);
            String name = e.attributeValue("name");

            DynamicElement dynamicElement;

            if (childElements.size() > 0) {
                dynamicElement = new DynamicElement(name, content, generateDynamicElement(childElements));
            } else {
                dynamicElement = new DynamicElement(name, content, new ArrayList<DynamicElement>());
            }

            dynamicElementList.add(dynamicElement);
        }
        return dynamicElementList;
    }

}