RelationshipType.java

/**
 * The contents of this file are subject to the OpenMRS Public License
 * Version 1.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://license.openmrs.org
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * Copyright (C) OpenMRS, LLC.  All Rights Reserved.
 */
package org.openmrs;

/**
 * Defines a type of relationship between two people in the database. <br/>
 * <br/>
 * A relationship is two-way. There is a name for the relationship in both directions. <br/>
 * <br/>
 * For example: <br/>
 * a) physician Joe<br/>
 * b) patient Bob<br/>
 * Joe is the "physician of" Bob <u>and</u> Bob is the patient of Joe. Once you can establish one of
 * the two relationships, you automatically know the other. <br/>
 * <br/>
 * ALL relationships are two-way and can be defined as such. <br/>
 * <br/>
 * RelationshipTypes should be defined as <b>gender non-specific</b> For example: A mother and her
 * son. Instead of having a RelationshipType defined as mother-son, it should be defined as
 * Parent-child. (This avoids the duplicative types that would come out like father-son,
 * father-daughter, mother-daughter) <br/>
 * <br/>
 * In English, we run into a tricky RelationshipType with aunts and uncles. We have chosen to define
 * them as aunt/uncle-niece/nephew.
 */
public class RelationshipType extends BaseOpenmrsMetadata implements java.io.Serializable {
	
	public static final long serialVersionUID = 4223L;
	
	// Fields
	
	private Integer relationshipTypeId;
	
	private String aIsToB;
	
	private String bIsToA;
	
	private Integer weight = 0;
	
	private Boolean preferred = false;
	
	// Constructors
	
	/** default constructor */
	public RelationshipType() {
	}
	
	/** constructor with id */
	public RelationshipType(Integer relationshipTypeId) {
		this.relationshipTypeId = relationshipTypeId;
	}
	
	// Property accessors
	
	/**
	 * @return Returns the relationshipTypeId.
	 */
	public Integer getRelationshipTypeId() {
		return relationshipTypeId;
	}
	
	/**
	 * @param relationshipTypeId The relationshipTypeId to set.
	 */
	public void setRelationshipTypeId(Integer relationshipTypeId) {
		this.relationshipTypeId = relationshipTypeId;
	}
	
	/**
	 * @return the weight
	 */
	public Integer getWeight() {
		return weight;
	}
	
	/**
	 * @param weight the weight to set
	 */
	public void setWeight(Integer weight) {
		this.weight = weight;
	}
	
	/**
	 * The java bean specifications says that if an attribute has the second letter capitalized (as
	 * the "I" is), the initial "a" is not to be capitalized. Both Spring and Hibernate use this
	 * "getter" definition
	 * 
	 * @return the aIsToB
	 */
	public String getaIsToB() {
		return aIsToB;
	}
	
	/**
	 * @param aisToB the aIsToB to set
	 */
	public void setaIsToB(String aisToB) {
		aIsToB = aisToB;
	}
	
	/**
	 * @return the bIsToA
	 */
	public String getbIsToA() {
		return bIsToA;
	}
	
	/**
	 * @deprecated use isPreferred(). This method is kept around for Spring/Hibernate's use
	 * @return the preferred status
	 */
	@SuppressWarnings("unused")
	private Boolean getPreferred() {
		return isPreferred();
	}
	
	/**
	 * "Preferred" relationship types are those that should be shown as default types when
	 * adding/editing a person's relationships
	 * 
	 * @return the preferred status
	 */
	public Boolean isPreferred() {
		return preferred;
	}
	
	/**
	 * "Preferred" relationship types are those that should be shown as default types when
	 * adding/editing a person's relationships
	 * 
	 * @param preferred sets the preferred status of this relationship type
	 */
	public void setPreferred(Boolean preferred) {
		this.preferred = preferred;
	}
	
	/**
	 * @param bisToA the bIsToA to set
	 */
	public void setbIsToA(String bisToA) {
		bIsToA = bisToA;
	}
	
	/**
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		return getaIsToB() + "/" + getbIsToA();
	}
	
	/**
	 * @since 1.5
	 * @see org.openmrs.OpenmrsObject#getId()
	 */
	public Integer getId() {
		return getRelationshipTypeId();
	}
	
	/**
	 * @since 1.5
	 * @see org.openmrs.OpenmrsObject#setId(java.lang.Integer)
	 */
	public void setId(Integer id) {
		setRelationshipTypeId(id);
		
	}
	
}