/**
* 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;
/**
* The FormField object relates/orders the <code>fields</code> on a <code>form</code> A form can
* have many 0 to n fields associated with it in a hierarchical manor. This FormField object governs
* what/how that takes place
*
* @see org.openmrs.Form
* @see org.openmrs.Field
*/
public class FormField extends BaseOpenmrsMetadata implements java.io.Serializable, Comparable<FormField> {
public static final long serialVersionUID = 3456L;
// Fields
protected Integer formFieldId;
protected FormField parent;
protected Form form;
protected Field field;
protected Integer fieldNumber;
protected String fieldPart;
protected Integer pageNumber;
protected Integer minOccurs;
protected Integer maxOccurs;
protected Boolean required = false;
protected Float sortWeight;
// Constructors
/** default constructor */
public FormField() {
}
/** constructor with id */
public FormField(Integer formFieldId) {
this.formFieldId = formFieldId;
}
/**
* Compares two objects for similarity
*
* @param obj
* @return boolean true/false whether or not they are the same objects
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object obj) {
if (obj instanceof FormField) {
FormField f = (FormField) obj;
if (this.getFormFieldId() != null && f.getFormFieldId() != null)
return (this.getFormFieldId().equals(f.getFormFieldId()));
/*
* return (this.getFormField().equals(f.getFormField()) &&
* this.getForm().equals(f.getForm()) && this.getField().equals(f.getField()));
*/
}
return false;
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
if (this.getFormFieldId() == null)
return super.hashCode();
return this.getFormFieldId().hashCode();
}
/**
* Sort order for the form fields in the schema. Attempts: 1) sortWeight 2) fieldNumber 3)
* fieldPart 4) fieldName
*
* @param f FormField to compare this object to
* @return -1, 0, or +1 depending on the difference between the FormFields
*/
public int compareTo(FormField f) {
if (getSortWeight() != null || f.getSortWeight() != null) {
if (getSortWeight() == null)
return -1;
if (f.getSortWeight() == null)
return 1;
int c = getSortWeight().compareTo(f.getSortWeight());
if (c != 0)
return c;
}
if (getPageNumber() != null || f.getPageNumber() != null) {
if (getPageNumber() == null)
return -1;
if (f.getPageNumber() == null)
return 1;
int c = getPageNumber().compareTo(f.getPageNumber());
if (c != 0)
return c;
}
if (getFieldNumber() != null || f.getFieldNumber() != null) {
if (getFieldNumber() == null)
return -1;
if (f.getFieldNumber() == null)
return 1;
int c = getFieldNumber().compareTo(f.getFieldNumber());
if (c != 0)
return c;
}
if (getFieldPart() != null || f.getFieldPart() != null) {
if (getFieldPart() == null)
return -1;
if (f.getFieldPart() == null)
return 1;
int c = getFieldPart().compareTo(f.getFieldPart());
if (c != 0)
return c;
}
if (getField() != null && f.getField() != null) {
int c = getField().getName().compareTo(f.getField().getName());
if (c != 0)
return c;
}
if (getFormFieldId() == null && f.getFormFieldId() != null)
return -1;
if (getFormFieldId() != null && f.getFormFieldId() == null)
return 1;
if (getFormFieldId() == null && f.getFormFieldId() == null)
return 1;
return getFormFieldId().compareTo(f.getFormFieldId());
}
// Property accessors
/**
* @return Returns the formFieldId.
*/
public Integer getFormFieldId() {
return formFieldId;
}
/**
* @param formFieldId The formFieldId to set.
*/
public void setFormFieldId(Integer formFieldId) {
this.formFieldId = formFieldId;
}
/**
* @return Returns the parent FormField.
*/
public FormField getParent() {
return parent;
}
/**
* @param parent The formField to set as parent.
*/
public void setParent(FormField parent) {
this.parent = parent;
}
/**
* @return Returns the form.
*/
public Form getForm() {
return form;
}
/**
* @param form The form to set.
*/
public void setForm(Form form) {
this.form = form;
}
/**
* @return Returns the field.
*/
public Field getField() {
return field;
}
/**
* @param field The field to set.
*/
public void setField(Field field) {
this.field = field;
}
/**
* @return Returns the fieldNumber.
*/
public Integer getFieldNumber() {
return fieldNumber;
}
/**
* @param fieldNumber The fieldNumber to set.
*/
public void setFieldNumber(Integer fieldNumber) {
this.fieldNumber = fieldNumber;
}
/**
* @return Returns the fieldPart.
*/
public String getFieldPart() {
return fieldPart;
}
/**
* @param fieldPart The fieldPart to set.
*/
public void setFieldPart(String fieldPart) {
this.fieldPart = fieldPart;
}
/**
* @return Returns the pageNumber.
*/
public Integer getPageNumber() {
return pageNumber;
}
/**
* @param pageNumber The pageNumber to set.
*/
public void setPageNumber(Integer pageNumber) {
this.pageNumber = pageNumber;
}
/**
* @return Returns the minOccurs.
*/
public Integer getMinOccurs() {
return minOccurs;
}
/**
* @param minOccurs The minOccurs to set.
*/
public void setMinOccurs(Integer minOccurs) {
this.minOccurs = minOccurs;
}
/**
* @return Returns the maxOccurs.
*/
public Integer getMaxOccurs() {
return maxOccurs;
}
/**
* @param maxOccurs The maxOccurs to set.
*/
public void setMaxOccurs(Integer maxOccurs) {
this.maxOccurs = maxOccurs;
}
/**
* @return Returns the required status.
*/
public Boolean isRequired() {
return (required == null ? false : required);
}
/**
* @return same as isRequired()
*/
public Boolean getRequired() {
return isRequired();
}
/**
* @param required The required status to set.
*/
public void setRequired(Boolean required) {
this.required = required;
}
/**
* @return Returns the sortWeight.
*/
public Float getSortWeight() {
return sortWeight;
}
/**
* @param sortWeight The weight to order the formFields on.
*/
public void setSortWeight(Float sortWeight) {
this.sortWeight = sortWeight;
}
/**
* @see java.lang.Object#toString()
*/
public String toString() {
if (formFieldId == null)
return "null";
return this.formFieldId.toString();
}
/**
* @since 1.5
* @see org.openmrs.OpenmrsObject#getId()
*/
public Integer getId() {
return getFormFieldId();
}
/**
* @since 1.5
* @see org.openmrs.OpenmrsObject#setId(java.lang.Integer)
*/
public void setId(Integer id) {
setFormFieldId(id);
}
}