org.eclipse.smila.search.templates.messages.nodetransformerregistry.DNodeTransformerCodec.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.smila.search.templates.messages.nodetransformerregistry.DNodeTransformerCodec.java

Source

/***********************************************************************************************************************
 * Copyright (c) 2008 empolis GmbH and brox IT Solutions GmbH. All rights reserved. This program and the accompanying
 * materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: August Georg Schmidt (brox IT Solutions GmbH) - initial API and implementation
 **********************************************************************************************************************/
package org.eclipse.smila.search.templates.messages.nodetransformerregistry;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.smila.search.utils.param.ParameterException;
import org.eclipse.smila.search.utils.param.def.DParameterDefinitionCodec;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;

public abstract class DNodeTransformerCodec {

    /**
     * Constructor.
     */
    private DNodeTransformerCodec() {

    }

    /**
     * @param dNodeTransformer -
     * @param element -
     * @return Element
     * @throws DNodeTransformerRegistryException -
     */
    protected static Element encode(DNodeTransformer dNodeTransformer, Element element)
            throws DNodeTransformerRegistryException {
        final Log log = LogFactory.getLog(DNodeTransformerCodec.class);

        final Document doc = element.getOwnerDocument();
        final Element el = (Element) element
                .appendChild(doc.createElementNS(DNodeTransformerRegistryCodec.NS, "NodeTransformer"));

        el.setAttribute("Name", dNodeTransformer.getName());

        Element elTemp = null;
        elTemp = doc.createElementNS(DNodeTransformerRegistryCodec.NS, "ClassName");
        elTemp.appendChild(doc.createTextNode(dNodeTransformer.getClassName()));
        el.appendChild(elTemp);

        elTemp = doc.createElementNS(DNodeTransformerRegistryCodec.NS, "Description");
        elTemp.appendChild(doc.createTextNode(dNodeTransformer.getDescription()));
        el.appendChild(elTemp);

        try {
            DParameterDefinitionCodec.encode(dNodeTransformer.getParameterDefinition(), el);
        } catch (ParameterException e) {
            log.error("Unable to encode parameters for NodeTransformer [" + dNodeTransformer.getName() + "]: "
                    + e.getMessage(), e);
            throw new DNodeTransformerRegistryException("Unable to encode parameters for NodeTransformer ["
                    + dNodeTransformer.getName() + "]: " + e.getMessage());
        }

        return el;
    }

    protected static DNodeTransformer decode(Element element) throws DNodeTransformerRegistryException {
        final Log log = LogFactory.getLog(DNodeTransformerCodec.class);

        final DNodeTransformer dNodeTransformer = new DNodeTransformer();

        dNodeTransformer.setName(element.getAttribute("Name"));

        final NodeList nl = element.getChildNodes();
        for (int i = 0; i < nl.getLength(); i++) {
            if ("ClassName".equals(nl.item(i).getLocalName())) {
                final Element elTemp = (Element) nl.item(i);
                dNodeTransformer.setClassName(((Text) elTemp.getFirstChild()).getNodeValue());
            } else if ("Description".equals(nl.item(i).getLocalName())) {
                final Element elTemp = (Element) nl.item(i);
                dNodeTransformer.setDescription(((Text) elTemp.getFirstChild()).getNodeValue());
            } else if ("ParameterDefinition".equals(nl.item(i).getLocalName())) {
                try {
                    dNodeTransformer.setParameterDefinition(DParameterDefinitionCodec.decode((Element) nl.item(i)));
                } catch (ParameterException e) {
                    log.error("Unable to decode parameters for NodeTransformer [" + dNodeTransformer.getName()
                            + "]: " + e.getMessage(), e);
                    throw new DNodeTransformerRegistryException("Unable to decode parameters for NodeTransformer ["
                            + dNodeTransformer.getName() + "]: " + e.getMessage());
                }
            }

        }
        return dNodeTransformer;
    }
}