Package org.springframework.roo.project

Source Code of org.springframework.roo.project.Property

package org.springframework.roo.project;

import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.w3c.dom.Element;

/**
* Simplified immutable representation of a property.
*
* @author Alan Stewart
* @since 1.1
*/
public class Property implements Comparable<Property> {

    private final String name;
    private final String value;

    /**
     * Convenience constructor for creating a property instance from a XML
     * Element
     *
     * @param element containing the property definition (required)
     */
    public Property(final Element element) {
        Validate.notNull(element, "Element required");
        name = element.getNodeName();
        value = element.getTextContent();
    }

    /**
     * Convenience constructor creating a property instance
     *
     * @param name the property name (required)
     */
    public Property(final String name) {
        this.name = name;
        value = "";
    }

    /**
     * Convenience constructor creating a property instance
     *
     * @param name the property name (required)
     * @param value the property value (required)
     */
    public Property(final String name, final String value) {
        Validate.notBlank(name, "Name required");
        Validate.notNull(value, "Value required");
        this.name = name;
        this.value = value;
    }

    public int compareTo(final Property o) {
        if (o == null) {
            throw new NullPointerException();
        }
        int result = name.compareTo(o.name);
        if (result == 0) {
            result = value.compareTo(o.value);
        }
        return result;
    }

    @Override
    public boolean equals(final Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Property other = (Property) obj;
        if (name == null) {
            if (other.name != null) {
                return false;
            }
        }
        else if (!name.equals(other.name)) {
            return false;
        }
        if (value == null) {
            if (other.value != null) {
                return false;
            }
        }
        else if (!value.equals(other.value)) {
            return false;
        }
        return true;
    }

    /**
     * The name of a property
     *
     * @return the name of the property (never null)
     */
    public String getName() {
        return name;
    }

    /**
     * The value of a property
     *
     * @return the value
     */
    public String getValue() {
        return value;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + (name == null ? 0 : name.hashCode());
        result = prime * result + (value == null ? 0 : value.hashCode());
        return result;
    }

    @Override
    public String toString() {
        final ToStringBuilder builder = new ToStringBuilder(this);
        builder.append("name", name);
        builder.append("value", value);
        return builder.toString();
    }
}
TOP

Related Classes of org.springframework.roo.project.Property

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.