OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Blame | Last modification | View Log | RSS feed

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 * 
 * Copyright 2011 OpenConcerto, by ILM Informatique. All rights reserved.
 * 
 * The contents of this file are subject to the terms of the GNU General Public License Version 3
 * only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
 * copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
 * language governing permissions and limitations under the License.
 * 
 * When distributing the software, include this License Header Notice in each file.
 */
 
 package org.openconcerto.xml;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.util.Iterator;

import org.jdom2.Element;

/**
 * To encode and decode using {@link XMLEncoder} and {@link XMLDecoder}.
 * 
 * @author Sylvain CUAZ
 */
public final class XMLDecoderJDOM extends AbstractXMLDecoder<Element, RuntimeException> {

    @Override
    protected String getAttributeValue(Element elem, String attrName) {
        return elem.getAttributeValue(attrName);
    }

    @Override
    protected String getLocalName(Element elem) {
        return elem.getName();
    }

    @Override
    protected String getElementText(Element elem) {
        return elem.getText();
    }

    @Override
    protected Element getFirstChild(Element elem) {
        return elem.getChildren().get(0);
    }

    @Override
    protected String toString(Element elem) {
        return JDOM2Utils.output(elem);
    }

    @Override
    protected Children<Element> createChildren(final Element elem) {
        return new Children<Element>() {

            private final Iterator<Element> iter = elem.getChildren().iterator();

            @Override
            public Element getNextChild() {
                if (!this.iter.hasNext())
                    return null;

                final Element res = this.iter.next();
                assert res != null;
                return res;
            }
        };
    }

    protected XMLDecoderJDOM() {
    }
}