com.diffeo.dossier.fc.StringFeature.java Source code

Java tutorial

Introduction

Here is the source code for com.diffeo.dossier.fc.StringFeature.java

Source

/**
 * dossier.fc Feature Collections
 *
 * This software is released under an MIT/X11 open source license.
 * Copyright 2014 Diffeo, Inc.
 *
 */

package com.diffeo.dossier.fc;

import com.fasterxml.jackson.annotation.JsonValue;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;

/**
 * Simple feature implementation that only contains a string.
 *
 * This is used for simple markers and values that are always
 * singletons.  For instance, an entity might have a single entity
 * type from a well-known set, and so a feature collection might
 * contain a <tt>entity_type</tt> feature that is an instance of
 * this class.
 *
 * Two string features are equal if their strings are equal.  Their
 * read-only flag is generally inherited from the containing
 * feature collection.
 */
public class StringFeature implements Feature {
    private String value;
    private boolean readOnly;

    public StringFeature(String v) {
        this.value = v;
        this.readOnly = false;
    }

    public StringFeature() {
        this(null);
    }

    @JsonValue
    public String getValue() {
        return value;
    }

    public void setValue(String v) {
        if (readOnly) {
            throw new UnsupportedOperationException("read-only string value");
        }
        value = v;
    }

    public boolean isReadOnly() {
        return readOnly;
    }

    public void setReadOnly(boolean ro) {
        readOnly = ro;
    }

    /* Object methods */

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (obj == this) {
            return true;
        }
        if (obj.getClass() != getClass()) {
            return false;
        }
        StringFeature rhs = (StringFeature) obj;
        return new EqualsBuilder().append(value, rhs.value).isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder(933, 241).append(value).toHashCode();
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this).append("value", value).toString();
    }
}