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

org.semantictools.context.renderer.model.TermInfo Maven / Gradle / Ivy

Go to download

A library used to generate documentation for media types associated with a JSON-LD context

The newest version!
/*******************************************************************************
 * Copyright 2012 Pearson Education
 * 
 * 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.semantictools.context.renderer.model;

public class TermInfo implements Comparable {
  
  public static enum TermCategory {
    NAMESPACE,
    TYPE,
    PROPERTY,
    INDIVIDUAL,
    UNKNOWN
  }
  
  private TermCategory category = TermCategory.UNKNOWN;
  private String termName;
  private String iri;
  private TermValue value;
  
  
  public TermInfo(String termName) {
    this.termName = termName;
    if (termName == null) {
      throw new RuntimeException("termName must be non-null");
    }
  }
  
  public boolean equals(Object obj) {
    if (obj instanceof TermInfo) {
      TermInfo t = (TermInfo) obj;
      return 
          equals(category, t.category) &&
          equals(iri, t.iri) &&
          equals(termName, t.termName)&&
          equals(value, t.value);
    }
    return false;
  }
  
  private boolean equals(Object a, Object b) {
    return (a!=null && a.equals(b) || (a==null && b==null));
  }

  public TermCategory getCategory() {
    return category;
  }
  public void setCategory(TermCategory category) {
    this.category = category;
  }
  public String getTermName() {
    return termName;
  }
  public void setTermName(String term) {
    this.termName = term;
  }
  
  public boolean hasIriValue() {
    return iri != null;
  }
  
  public boolean isCoercedAsIriRef() {
    return value != null && "@id".equals(value.getType());
  }
  
  public boolean hasObjectValue() {
    return value != null;
  }
  
  public String getIri() {
    return value==null ? iri : value.getType();
  }
  public void setIriValue(String iri) {
    this.iri = iri;
  }
  public TermValue getObjectValue() {
    return value;
  }
  public void setObjectValue(TermValue target) {
    this.value = target;
  }
  @Override
  public int compareTo(TermInfo other) {
    int diff = category.ordinal() - other.category.ordinal();
    if (diff == 0) {
      diff = termName.compareTo(other.termName);
    }
    return diff;
  }
  
  public String toString() {
    return getTermName();
  }
  
  

  
  

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy