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

org.gedcomx.records.FieldValue Maven / Gradle / Ivy

There is a newer version: 3.34.0
Show newest version
/**
 * Copyright Intellectual Reserve, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.gedcomx.records;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.webcohesion.enunciate.metadata.qname.XmlQNameEnumRef;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.gedcomx.common.Attribution;
import org.gedcomx.common.Note;
import org.gedcomx.common.ResourceReference;
import org.gedcomx.common.URI;
import org.gedcomx.conclusion.Conclusion;
import org.gedcomx.conclusion.Document;
import org.gedcomx.links.Link;
import org.gedcomx.rt.GedcomxConstants;
import org.gedcomx.rt.GedcomxModelVisitor;
import org.gedcomx.source.SourceDescription;
import org.gedcomx.source.SourceReference;
import org.gedcomx.types.ConfidenceLevel;
import org.gedcomx.types.FieldValueStatusType;
import org.gedcomx.types.FieldValueType;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;


/**
 * An element representing a value in a record field.
 */
@XmlType ( name = "FieldValue" )
@com.webcohesion.enunciate.metadata.Facet( GedcomxConstants.FACET_GEDCOMX_RECORD )
@JsonInclude ( JsonInclude.Include.NON_NULL )
public final class FieldValue extends Conclusion {

  /**
   * @see FieldValueType
   */
  private URI type;
  private String labelId;
  private String text;
  private URI datatype;
  private URI resource;
  /**
   * @see FieldValueStatusType
   */
  private URI status;

  public FieldValue() {
  }

  public FieldValue(String text) {
    this.text = text;
  }

  @Override
  public FieldValue id(String id) {
    return (FieldValue) super.id(id);
  }

  @Override
  public FieldValue extensionElement(Object element) {
    return (FieldValue) super.extensionElement(element);
  }

  @Override
  public FieldValue link(String rel, URI href) {
    return (FieldValue) super.link(rel, href);
  }

  @Override
  public FieldValue link(Link link) {
    return (FieldValue) super.link(link);
  }

  @Override
  public FieldValue lang(String lang) {
    return (FieldValue) super.lang(lang);
  }

  @Override
  public FieldValue confidence(URI confidence) {
    return (FieldValue) super.confidence(confidence);
  }

  @Override
  public FieldValue confidence(ConfidenceLevel confidence) {
    return (FieldValue) super.confidence(confidence);
  }

  @Override
  public FieldValue source(SourceReference sourceReference) {
    return (FieldValue) super.source(sourceReference);
  }

  @Override
  public FieldValue source(SourceDescription source) {
    return (FieldValue) super.source(source);
  }

  @Override
  public FieldValue note(Note note) {
    return (FieldValue) super.note(note);
  }

  @Override
  public FieldValue attribution(Attribution attribution) {
    return (FieldValue) super.attribution(attribution);
  }

  @Override
  public FieldValue analysis(ResourceReference analysis) {
    return (FieldValue) super.analysis(analysis);
  }

  @Override
  public FieldValue analysis(Document analysis) {
    return (FieldValue) super.analysis(analysis);
  }

  @Override
  public FieldValue analysis(URI analysis) {
    return (FieldValue) super.analysis(analysis);
  }

  @Override
  public FieldValue sortKey(String sortKey) {
    return (FieldValue) super.sortKey(sortKey);
  }

  /**
   * The type of the field value.
   *
   * @return The type of the field value.
   */
  @XmlAttribute
  @XmlQNameEnumRef (FieldValueType.class)
  public URI getType() {
    return type;
  }

  /**
   * The type of the field value.
   *
   * @param type The type of the field value.
   */
  public void setType(URI type) {
    this.type = type;
  }

  /**
   * Build out this field value with a type.
   *
   * @param type The type.
   * @return this.
   */
  public FieldValue type(URI type) {
    setType(type);
    return this;
  }

  /**
   * Build out this field value with a type.
   *
   * @param type The type.
   * @return this.
   */
  public FieldValue type(FieldValueType type) {
    setKnownType(type);
    return this;
  }

  /**
   * The known type of the field value.
   *
   * @return The type of the field value.
   */
  @XmlTransient
  @JsonIgnore @org.codehaus.jackson.annotate.JsonIgnore
  public FieldValueType getKnownType() {
    return getType() == null ? null : FieldValueType.fromQNameURI(getType());
  }

  /**
   * The type of the field value.
   *
   * @param type The type of the field value.
   */
  @JsonIgnore @org.codehaus.jackson.annotate.JsonIgnore
  public void setKnownType(FieldValueType type) {
    setType(type == null ? null : type.toQNameURI());
  }

  /**
   * The id of the label applicable to this field value.
   *
   * @return The id of the label applicable to this field value.
   */
  @XmlAttribute
  public String getLabelId() {
    return labelId;
  }

  /**
   * The id of the label applicable to this field value.
   *
   * @param labelId The id of the label applicable to this field value.
   */
  public void setLabelId(String labelId) {
    this.labelId = labelId;
  }

  /**
   * Build out this field value with a label id.
   *
   * @param labelId The label id.
   * @return this.
   */
  public FieldValue labelId(String labelId) {
    setLabelId(labelId);
    return this;
  }

  /**
   * The text value.
   *
   * @return The text value.
   */
  public String getText() {
    return text;
  }

  /**
   * The text value.
   *
   * @param text The text value.
   */
  public void setText(String text) {
    this.text = text;
  }

  /**
   * Build out this field value with text.
   * @param text the text.
   * @return this.
   */
  public FieldValue text(String text) {
    setText(text);
    return this;
  }

  /**
   * The datatype of the text value of the field.
   *
   * @return The datatype of the text value of the field.
   */
  @XmlAttribute
  public URI getDatatype() {
    return datatype;
  }

  /**
   * The datatype of the text value of the field.
   *
   * @param datatype The datatype of the text value of the field.
   */
  public void setDatatype(URI datatype) {
    this.datatype = datatype;
  }

  /**
   * Build out this field value with a data type.
   * @param datatype The data type.
   * @return this
   */
  public FieldValue datatype(URI datatype) {
    setDatatype(datatype);
    return this;
  }

  /**
   * URI that resolves to the value of the field.
   *
   * @return URI that resolves to the value of the field.
   */
  @XmlAttribute
  public URI getResource() {
    return resource;
  }

  /**
   * URI that resolves to the value of the field.
   *
   * @param resource URI that resolves to the value of the field.
   */
  public void setResource(URI resource) {
    this.resource = resource;
  }

  /**
   * Build out this field value with a resource.
   * @param resource The resource.
   * @return this.
   */
  public FieldValue resource(URI resource) {
    setResource(resource);
    return this;
  }

  /**
   * The status of this FieldValue.
   *
   * @see org.gedcomx.types.FieldValueStatusType
   * @return URI of the field value status type of this field value.
   */
  public URI getStatus() {
    return status;
  }

  /**
   * The status of this FieldValue.
   *
   * @param status The status.
   * @see org.gedcomx.types.FieldValueStatusType
   */
  public void setStatus(URI status) {
    this.status = status;
  }

  /**
   * The known type of the field.
   *
   * @return The type of the field.
   */
  @XmlTransient
  @JsonIgnore @org.codehaus.jackson.annotate.JsonIgnore
  public FieldValueStatusType getKnownStatus() {
    return getType() == null ? null : FieldValueStatusType.fromQNameURI(getType());
  }

  /**
   * The type of the field.
   *
   * @param status The field value status type of the field.
   */
  @JsonIgnore @org.codehaus.jackson.annotate.JsonIgnore
  public void setKnownStatus(FieldValueStatusType status) {
    setType(status == null ? null : status.toQNameURI());
  }

  /**
   * Accept a visitor.
   *
   * @param visitor The visitor to accept.
   */
  public void accept(GedcomxModelVisitor visitor) {
    visitor.visitFieldValue(this);
  }

  /**
   * Provide a simple toString() method.
   */
  @Override
  public String toString() {
    return labelId + ": " + text;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy