All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.articulate.sigma.SimpleElement Maven / Gradle / Ivy

Go to download

Sigma knowledge engineering system is an system for developing, viewing and debugging theories in first order logic. It works with Knowledge Interchange Format (KIF) and is optimized for the Suggested Upper Merged Ontology (SUMO) www.ontologyportal.org.

There is a newer version: 2.10
Show newest version
/** *****************************************************************
 * @(#)SimpleDOMParser.java
 * From DevX
 * http://www.devx.com/xml/Article/10114
 * Further modified for Articulate Software by Adam Pease 12/2005
 */

package com.articulate.sigma;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**  *****************************************************************
 * SimpleElement is the only node type for
 * simplified DOM model.  Note that all CDATA values are stored with
 * reserved any characters '>' '<' converted to > and <
 * respectively.
 */
public class SimpleElement {

    private String tagName;
    private String text;
    private HashMap attributes;
    private ArrayList childElements;

    public SimpleElement(String tagName) {
        this.tagName = tagName;
        attributes = new HashMap();
        childElements = new ArrayList();
    }

    public String getTagName() {
        return tagName;
    }

    public void setTagName(String tagName) {
        this.tagName = tagName;
    }

    public String getText() {

        if (text != null && text != "")
            return SimpleDOMParser.convertToReservedCharacters(text);
        else
            return text;
    }

    public void setText(String text) {

        if (!StringUtil.emptyString(text))
            this.text = SimpleDOMParser.convertFromReservedCharacters(text.trim());
        else
            this.text = text.trim();
    }

    public String getAttribute(String name) {

        String attribute = (String) attributes.get(name);
        if (attribute != null && attribute != "")
            return SimpleDOMParser.convertToReservedCharacters(attribute);
        else
            return attribute;
    }

    public Set getAttributeNames() {
        return attributes.keySet();
    }

    public void setAttribute(String name, String value) {

        if (!StringUtil.emptyString(value))
            value = SimpleDOMParser.convertFromReservedCharacters(value);
        attributes.put(name, value);
    }

    public void addChildElement(SimpleElement element) {
        childElements.add(element);
    }

    public ArrayList getChildElements() {
        return childElements;
    }

    /** *****************************************************************
     * @return the first child with the given tag name, null if none
     */
     public SimpleElement getChildByFirstTag(String tag) {

         if (childElements == null || childElements.size() < 1)
             return null;
         for (int i = 0; i < childElements.size(); i++) {
             SimpleElement se = childElements.get(i);
             if (se.tagName.equals(tag))
                 return se;
         }
         return null;
     }

    /** *****************************************************************
    */
    public String toString(int indent, boolean forFile) {

        StringBuffer strindent = new StringBuffer();
        for (int i = 0; i < indent; i++) {
            strindent.append("  ");
        }
        StringBuffer result = new StringBuffer();
        result.append(strindent.toString() + "<" + getTagName() + " ");
        HashSet names = new HashSet();
        names.addAll(getAttributeNames());
        Iterator it = names.iterator();
        while (it.hasNext()) {
            String attName = (String) it.next();
            String value = getAttribute(attName);
            if (forFile)
                value = SimpleDOMParser.convertFromReservedCharacters(value);
            result.append(attName + "=\"" + value + "\" ");
        }
        ArrayList children = getChildElements();
        if (children.size() == 0 && (getText() == null || getText().equals("null")))
            result.append("/>\n");
        else {
            result.append(">\n");
            if (getText() != null && getText() != "" && !getText().equals("null")) {
                if (forFile)
                    result.append(SimpleDOMParser.convertFromReservedCharacters(getText()));
                else
                    result.append(getText() );
                result.append("\n");
            }
            for (int i = 0; i < children.size(); i++) {
                SimpleElement element = (SimpleElement) children.get(i);
                result.append(element.toString(indent+1,forFile));
            }
            result.append(strindent.toString() + "\n");
        }

        return result.toString();
    }

    /** *****************************************************************
    */
    public String toString() {

        return toString(0,false);
    }

    /** *****************************************************************
    */
    public String toFileString() {

        return toString(0,true);
    }
    /** *****************************************************************
    */
    public String toFileString(int indent) {

        return toString(indent,true);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy