/*
* OpenClinica is distributed under the
* GNU Lesser General Public License (GNU LGPL).
* For details see: http://www.openclinica.org/license
* copyright 2003-2005 Akaza Research
*/
package org.akaza.openclinica.bean.submit;
import org.akaza.openclinica.bean.core.AuditableEntityBean;
import org.akaza.openclinica.bean.core.ItemDataType;
import org.akaza.openclinica.bean.oid.ItemOidGenerator;
import org.akaza.openclinica.bean.oid.OidGenerator;
import java.util.ArrayList;
/**
* <P>
* ItemBean.java.
*
* @author thickerson
*/
public class ItemBean extends AuditableEntityBean implements Comparable {
private String description = "";
private String units = "";
private boolean phiStatus = false;
private int itemDataTypeId = 0;
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((crfName == null) ? 0 : crfName.hashCode());
result = prime * result + ((dataType == null) ? 0 : dataType.hashCode());
result = prime * result + ((datasetItemMapKey == null) ? 0 : datasetItemMapKey.hashCode());
result = prime * result + defId;
result = prime * result + ((defName == null) ? 0 : defName.hashCode());
result = prime * result + ((description == null) ? 0 : description.hashCode());
result = prime * result + itemDataTypeId;
result = prime * result + ((itemMeta == null) ? 0 : itemMeta.hashCode());
result = prime * result + ((itemMetas == null) ? 0 : itemMetas.hashCode());
result = prime * result + ((itemDataElements == null) ? 0 : itemDataElements.hashCode());
result = prime * result + itemReferenceTypeId;
result = prime * result + ((oid == null) ? 0 : oid.hashCode());
result = prime * result + ((oidGenerator == null) ? 0 : oidGenerator.hashCode());
result = prime * result + (phiStatus ? 1231 : 1237);
result = prime * result + (selected ? 1231 : 1237);
result = prime * result + statusId;
result = prime * result + ((units == null) ? 0 : units.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
ItemBean other = (ItemBean) obj;
if (crfName == null) {
if (other.crfName != null)
return false;
} else if (!crfName.equals(other.crfName))
return false;
if (dataType == null) {
if (other.dataType != null)
return false;
} else if (!dataType.equals(other.dataType))
return false;
if (datasetItemMapKey == null) {
if (other.datasetItemMapKey != null)
return false;
} else if (!datasetItemMapKey.equals(other.datasetItemMapKey))
return false;
if (defId != other.defId)
return false;
if (defName == null) {
if (other.defName != null)
return false;
} else if (!defName.equals(other.defName))
return false;
if (description == null) {
if (other.description != null)
return false;
} else if (!description.equals(other.description))
return false;
if (itemDataTypeId != other.itemDataTypeId)
return false;
if (itemMeta == null) {
if (other.itemMeta != null)
return false;
} else if (!itemMeta.equals(other.itemMeta))
return false;
if (itemMetas == null) {
if (other.itemMetas != null)
return false;
} else if (!itemMetas.equals(other.itemMetas))
return false;
if (itemReferenceTypeId != other.itemReferenceTypeId)
return false;
if (oid == null) {
if (other.oid != null)
return false;
} else if (!oid.equals(other.oid))
return false;
if (oidGenerator == null) {
if (other.oidGenerator != null)
return false;
} else if (!oidGenerator.equals(other.oidGenerator))
return false;
if (phiStatus != other.phiStatus)
return false;
if (selected != other.selected)
return false;
if (statusId != other.statusId)
return false;
if (units == null) {
if (other.units != null)
return false;
} else if (!units.equals(other.units))
return false;
return true;
}
private ItemDataType dataType;
private int itemReferenceTypeId = 0;
private int statusId = 1;
private ItemFormMetadataBean itemMeta;// not in DB, for display
private ArrayList itemMetas;// not in DB, one item can have multiple meta
private ArrayList<ItemDataBean> itemDataElements;
private boolean selected = false; // not in DB, used for creating dataset
private String defName = ""; // not in DB
private int defId; //not in DB
private String crfName = ""; // not in DB
private String oid;
private OidGenerator oidGenerator;
private String datasetItemMapKey = ""; // which is
// study_event_defintion_id+"_"+item_id;
// not in DB - YW 3-7-2008
public ItemBean() {
dataType = ItemDataType.ST;
itemMetas = new ArrayList();
this.oidGenerator = new ItemOidGenerator();
}
/**
* @return Returns the description.
*/
public String getDescription() {
return description;
}
/**
* @param description
* The description to set.
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return Returns the itemDataTypeId.
*/
public int getItemDataTypeId() {
return dataType.getId();
}
/**
* @param itemDataTypeId
* The itemDataTypeId to set.
*/
public void setItemDataTypeId(int itemDataTypeId) {
dataType = ItemDataType.get(itemDataTypeId);
// this.itemDataTypeId = itemDataTypeId;
}
/**
* @return Returns the itemReferenceTypeId.
*/
public int getItemReferenceTypeId() {
return itemReferenceTypeId;
}
/**
* @param itemReferenceTypeId
* The itemReferenceTypeId to set.
*/
public void setItemReferenceTypeId(int itemReferenceTypeId) {
this.itemReferenceTypeId = itemReferenceTypeId;
}
/**
* @return Returns the phiStatus.
*/
public boolean isPhiStatus() {
return phiStatus;
}
/**
* @param phiStatus
* The phiStatus to set.
*/
public void setPhiStatus(boolean phiStatus) {
this.phiStatus = phiStatus;
}
/**
* @return Returns the statusId.
*/
public int getStatusId() {
return statusId;
}
/**
* @param statusId
* The statusId to set.
*/
public void setStatusId(int statusId) {
this.statusId = statusId;
}
/**
* @return Returns the units.
*/
public String getUnits() {
return units;
}
/**
* @param units
* The units to set.
*/
public void setUnits(String units) {
this.units = units;
}
/**
* @return Returns the dataType.
*/
public ItemDataType getDataType() {
return dataType;
}
/**
* @param dataType
* The dataType to set.
*/
public void setDataType(ItemDataType dataType) {
this.dataType = dataType;
}
/**
* @return Returns the itemMeta.
*/
public ItemFormMetadataBean getItemMeta() {
return itemMeta;
}
/**
* @param itemMeta
* The itemMeta to set.
*/
public void setItemMeta(ItemFormMetadataBean itemMeta) {
this.itemMeta = itemMeta;
}
/**
* @return Returns the itemMetas.
*/
public ArrayList getItemMetas() {
return itemMetas;
}
/**
* @param itemMetas
* The itemMetas to set.
*/
public void setItemMetas(ArrayList itemMetas) {
this.itemMetas = itemMetas;
}
/**
* @return Returns the itemMetas.
*/
public ArrayList<ItemDataBean> getItemDataElements() {
return itemDataElements;
}
public void addItemDataElement(ItemDataBean el) {
if ( itemDataElements == null){
itemDataElements = new ArrayList<ItemDataBean>();
}
itemDataElements.add(el);
}
/**
* @param itemMetas
* The itemMetas to set.
*/
public void setItemDataElements(ArrayList<ItemDataBean> itemDataElements) {
this.itemDataElements = itemDataElements;
}
/**
* @return Returns the selected.
*/
public boolean isSelected() {
return selected;
}
/**
* @param selected
* The selected to set.
*/
public void setSelected(boolean selected) {
this.selected = selected;
}
public int compareTo(Object o) {
if (!o.getClass().equals(this.getClass())) {
return 0;
}
ItemBean arg = (ItemBean) o;
if (!getItemMetas().isEmpty() && !arg.getItemMetas().isEmpty()) {
ItemFormMetadataBean m1 = (ItemFormMetadataBean) getItemMetas().get(0);
ItemFormMetadataBean m2 = (ItemFormMetadataBean) arg.getItemMetas().get(0);
return m1.getOrdinal() - m2.getOrdinal();
}
//fix here
else if (!itemDataElements.isEmpty() && !arg.getItemDataElements().isEmpty()) {
ItemDataBean m1 = (ItemDataBean) getItemDataElements().get(0);
ItemDataBean m2 = (ItemDataBean) arg.getItemDataElements().get(0);
return m1.getOrdinal() - m2.getOrdinal();
}
else {
return getName().compareTo(arg.getName());
}
}
/**
* @return Returns the defName.
*/
public String getDefName() {
return defName;
}
/**
* @param defName
* The defName to set.
*/
public void setDefName(String defName) {
this.defName = defName;
}
/**
* @return Returns the crfName.
*/
public String getCrfName() {
return crfName;
}
/**
* @param crfName
* The crfName to set.
*/
public void setCrfName(String crfName) {
this.crfName = crfName;
}
public String getOid() {
return oid;
}
public void setOid(String oid) {
this.oid = oid;
}
public OidGenerator getOidGenerator() {
return oidGenerator;
}
public void setOidGenerator(OidGenerator oidGenerator) {
this.oidGenerator = oidGenerator;
}
public String getDatasetItemMapKey() {
return datasetItemMapKey;
}
public void setDatasetItemMapKey(String key) {
this.datasetItemMapKey = key;
}
public int getDefId() {
return defId;
}
public void setDefId(int defId) {
this.defId = defId;
}
}