Package org.eurekastreams.server.service.actions.strategies.activity.plugins.rome

Source Code of org.eurekastreams.server.service.actions.strategies.activity.plugins.rome.ActivityStreamsModuleParser

/*
* Copyright (c) 2010 Lockheed Martin Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.eurekastreams.server.service.actions.strategies.activity.plugins.rome;

import java.util.LinkedList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eurekastreams.server.domain.stream.BaseObjectType;
import org.jdom.Element;
import org.jdom.Namespace;

import com.sun.syndication.feed.module.Module;
import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndContentImpl;
import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.sun.syndication.io.ModuleParser;

/**
* Parser for the ROME module.
*
*/
public class ActivityStreamsModuleParser implements ModuleParser
{
    /**
     * Local instance of logger.
     */
    private final Log logger = LogFactory.getLog(ActivityStreamsModuleParser.class);

    /**
     * Gets the namespace URI, needed for ROME module.
     *
     * @return the namespace.
     */
    public String getNamespaceUri()
    {
        return ActivityStreamsModule.URI;
    }

    /**
     * Parse the element and turn it into a module.
     *
     * @param root
     *            the root element.
     * @return the parsed module.
     */
    @SuppressWarnings("unchecked")
    public Module parse(final Element root)
    {
        Namespace myNamespace = Namespace.getNamespace(ActivityStreamsModule.URI);
        ActivityStreamsModule myModule = new ActivityStreamsModuleImpl();

        SyndEntryImpl atomEntry = new SyndEntryImpl();

        Element objElement = root.getChild("object", myNamespace);

        List<Element> children = (List<Element>) objElement.getChildren();
        for (Element child : children)
        {
            if (child.getName().equals("title"))
            {
                atomEntry.setTitle(child.getTextTrim());
            }
            else if (child.getName().equals("content"))
            {
                List<SyndContent> contents = new LinkedList<SyndContent>();
                SyndContent content = new SyndContentImpl();
                content.setValue(child.getTextTrim());
                contents.add(content);
                atomEntry.setContents(contents);
            }
            else if (child.getName().equals("link"))
            {
                atomEntry.setLink(child.getAttributeValue("href"));
            }
            else if (child.getName().equals("summary"))
            {
                SyndContent content = new SyndContentImpl();
                content.setValue(child.getTextTrim());
                atomEntry.setDescription(content);
            }
            else if (child.getName().equals("object-type"))
            {
                try
                {
                    String[] objArr = child.getTextTrim().split("/");
                    String objStr = objArr[objArr.length - 1].toUpperCase();
                    BaseObjectType.valueOf(objStr);

                    myModule.setObjectType(objStr);
                }
                catch (IllegalArgumentException ex)
                {
                    logger.debug("ActivityObject not valid");
                    myModule.setObjectType("NOTE");
                }
            }
        }

        myModule.setAtomEntry(atomEntry);
        return myModule;
    }
}
TOP

Related Classes of org.eurekastreams.server.service.actions.strategies.activity.plugins.rome.ActivityStreamsModuleParser

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.