com.kbotpro.cache.xml.XMLParser.java Source code

Java tutorial

Introduction

Here is the source code for com.kbotpro.cache.xml.XMLParser.java

Source

/*   
   Copyright 2012 Jan Ove Saltvedt
       
   This file is part of KBot.
    
KBot is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
    
KBot 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 General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with KBot.  If not, see <http://www.gnu.org/licenses/>.
       
*/

/*
 * Copyright  2010 Jan Ove Saltvedt.
 * All rights reserved.
 */

package com.kbotpro.cache.xml;

import org.apache.commons.codec.binary.Base64;
import org.jdom.Element;

/**
 * Created by IntelliJ IDEA.
 * User: Jan Ove Saltvedt
 * Date: Mar 6, 2010
 * Time: 5:13:57 PM
 * To change this template use File | Settings | File Templates.
 */
public class XMLParser {
    public String getName(Element element) {
        return element.getAttributeValue("name");
    }

    public Object getValue(Element element) {
        final String type = element.getAttributeValue("type");
        if (type == null) {
            return null;
        }
        if (element.getText() == null) {
            return null;
        }
        if (type.equals("int")) {
            return Integer.parseInt(element.getText());
        }
        if (type.equals("long")) {
            return Long.parseLong(element.getText());
        }
        if (type.equals("double")) {
            return Double.parseDouble(element.getText());
        }
        if (type.equals("float")) {
            return Float.parseFloat(element.getText());
        }
        if (type.equals("boolean")) {
            return Boolean.parseBoolean(element.getText());
        }
        if (type.equals("base64")) {
            return Base64.decodeBase64(element.getText());
        }
        if (type.equals("string")) {
            return element.getText();
        }
        if (type.equals("null")) {
            return null;
        }

        return null;
    }

    public Element createElement(String name, Object value) {
        Element element = new Element("setting");
        element.setAttribute("name", name);
        if (value instanceof Number
                && !(value instanceof Long || value instanceof Double || value instanceof Float)) {
            element.setAttribute("type", "int");
            element.setText(value.toString());
            return element;
        }
        if (value instanceof Long) {
            element.setAttribute("type", "long");
            element.setText(value.toString());
            return element;
        }
        if (value instanceof Double) {
            element.setAttribute("type", "double");
            element.setText(value.toString());
            return element;
        }
        if (value instanceof Float) {
            element.setAttribute("type", "float");
            element.setText(value.toString());
            return element;
        }
        if (value instanceof Boolean) {
            element.setAttribute("type", "boolean");
            element.setText(value.toString());
            return element;
        }
        if (value instanceof byte[]) {
            element.setAttribute("type", "base64");
            element.setText(Base64.encodeBase64String((byte[]) value));
            return element;
        }
        if (value instanceof String) {
            element.setAttribute("type", "string");
            element.setText(value.toString());
            return element;
        }
        if (value == null) {
            element.setAttribute("type", "null");
            return element;
        } else {
            throw new IllegalArgumentException("" + value.getClass() + " not supported");
        }

    }
}