/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs; import java.util.Comparator; import org.codehaus.jackson.annotate.JsonIgnore; /** * 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; } // 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. * * @deprecated as of 2.0, use {@link #getRequired()} */ @Deprecated @JsonIgnore public Boolean isRequired() { return getRequired(); } /** * @return same as isRequired() */ public Boolean getRequired() { return required == null ? false : required; } /** * @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() */ @Override public String toString() { if (formFieldId == null) { return "null"; } return this.formFieldId.toString(); } /** * @since 1.5 * @see org.openmrs.OpenmrsObject#getId() */ @Override public Integer getId() { return getFormFieldId(); } /** * @since 1.5 * @see org.openmrs.OpenmrsObject#setId(java.lang.Integer) */ @Override public void setId(Integer id) { setFormFieldId(id); } @Override public int compareTo(FormField other) { DefaultComparator pnDefaultComparator = new DefaultComparator(); return pnDefaultComparator.compare(this, other); } /** Provides a default comparator. @since 1.12 **/ public static class DefaultComparator implements Comparator<FormField> { @Override public int compare(FormField ff1, FormField ff2) { if (ff1.getSortWeight() != null || ff2.getSortWeight() != null) { if (ff1.getSortWeight() == null) { return -1; } if (ff2.getSortWeight() == null) { return 1; } int c = ff1.getSortWeight().compareTo(ff2.getSortWeight()); if (c != 0) { return c; } } if (ff1.getPageNumber() != null || ff2.getPageNumber() != null) { if (ff1.getPageNumber() == null) { return -1; } if (ff2.getPageNumber() == null) { return 1; } int c = ff1.getPageNumber().compareTo(ff2.getPageNumber()); if (c != 0) { return c; } } if (ff1.getFieldNumber() != null || ff2.getFieldNumber() != null) { if (ff1.getFieldNumber() == null) { return -1; } if (ff2.getFieldNumber() == null) { return 1; } int c = ff1.getFieldNumber().compareTo(ff2.getFieldNumber()); if (c != 0) { return c; } } if (ff1.getFieldPart() != null || ff2.getFieldPart() != null) { if (ff1.getFieldPart() == null) { return -1; } if (ff2.getFieldPart() == null) { return 1; } int c = ff1.getFieldPart().compareTo(ff2.getFieldPart()); if (c != 0) { return c; } } if (ff1.getField() != null && ff2.getField() != null) { int c = ff1.getField().getName().compareTo(ff2.getField().getName()); if (c != 0) { return c; } } if (ff1.getFormFieldId() == null && ff2.getFormFieldId() != null) { return -1; } if (ff1.getFormFieldId() != null && ff2.getFormFieldId() == null) { return 1; } if (ff1.getFormFieldId() == null && ff2.getFormFieldId() == null) { return 1; } return ff1.getFormFieldId().compareTo(ff2.getFormFieldId()); } } }