package model.manager.exports.columns; import model.manager.exports.SimpleColumn; import org.celllife.idart.database.hibernate.AttributeType; import org.celllife.idart.database.hibernate.IdentifierType; /** * This enum stores the available {@link SimpleColumn}'s along with their * header and template string. */ public class SimpleColumnsEnum implements IColumnEnum { public static final SimpleColumnsEnum patientId = new SimpleColumnsEnum( "Patient Number", "$!{fn.replaceSeperator($fn.getPatientField(\"Patient\", \"patientId\"))}"); public static final SimpleColumnsEnum firstNames = new SimpleColumnsEnum( "First Name", "$!{fn.replaceSeperator($fn.getPatientField(\"Patient\", \"firstNames\"))}"); public static final SimpleColumnsEnum lastName = new SimpleColumnsEnum("Surname", "$!{fn.replaceSeperator($fn.getPatientField(\"Patient\", \"lastname\"))}"); public static final SimpleColumnsEnum accountStatus = new SimpleColumnsEnum( "Account Status", "$!{fn.getPatientField(\"Patient\", \"accountStatus\")}"); public static final SimpleColumnsEnum dateOfBirth = new SimpleColumnsEnum( "Date of Birth", "$!{fn.formatDate('ymd', $fn.getPatientField(\"Patient\", \"dateOfBirth\"))}"); public static final SimpleColumnsEnum sex = new SimpleColumnsEnum("Sex", "$!{fn.getPatientField(\"Patient\", \"sex\")}"); public static final SimpleColumnsEnum address = new SimpleColumnsEnum( "Patient Address", "$!{fn.replaceSeperator($fn.getPatientField(\"Patient\", \"address1\"))} " + "$!{fn.replaceSeperator($fn.getPatientField(\"Patient\", \"address2\"))} " + "$!{fn.replaceSeperator($fn.getPatientField(\"Patient\", \"address3\"))}"); // not available on iDART interface // nextOfKinName("Treatment Supporter", // "$!{fn.getPatientField(\"Patient\", \"nextOfKinName\")}"), // not available on iDART interface // nextOfKinPhone("Treatment Supporter Phone Number", // "$!{fn.getPatientField(\"Patient\", \"nextOfKinPhone\")}"), public static final SimpleColumnsEnum clinic = new SimpleColumnsEnum("Clinic", "$!{fn.getPatientField(\"Patient\", \"clinic.clinicName\")}"); public static final SimpleColumnsEnum homePhone = new SimpleColumnsEnum( "Home Telephone Number", "$!{fn.getPatientField(\"Patient\", \"homePhone\")}"); public static final SimpleColumnsEnum cellphone = new SimpleColumnsEnum( "Cellphone Number", "$!{fn.getPatientField(\"Patient\", \"cellphone\")}"); public static final SimpleColumnsEnum province = new SimpleColumnsEnum( "Province", "$!{fn.getPatientField(\"Patient\", \"province\")}"); public static SimpleColumnsEnum lastCollectedDate = new SimpleColumnsEnum( "Last Package Collection Date", "$!{fn.formatDate('ymd', $fn.getMostRecentPackageDetail(\"" + PackageDetailsEnum.COLLECTION_DATE + "\"))}"); public static final SimpleColumnsEnum expectedRunoutDate = new SimpleColumnsEnum( "Expected Runout Date", "$!{fn.formatDate('ymd', $fn.getExpectedRunoutDate())}"); public static final SimpleColumnsEnum lastCollectedDrugs = new SimpleColumnsEnum( "Last Package Collection Drugs", "$!{fn.getMostRecentPackageDetail(\"" + PackageDetailsEnum.COLLECTED_DRUGS + "\")}"); public static final SimpleColumnsEnum[] all = new SimpleColumnsEnum[] { patientId, firstNames, lastName, accountStatus, dateOfBirth, sex, address, clinic, homePhone, cellphone, province, lastCollectedDate, expectedRunoutDate, lastCollectedDrugs }; private String columnName; private String template; public SimpleColumnsEnum() { super(); } public SimpleColumnsEnum(String columnName, String template) { this.template = template; this.columnName = columnName; } @Override public String getColumnName() { return columnName; } public void setColumnName(String name) { this.columnName = name; } public String getTemplate() { return template; } public void setTemplate(String template) { this.template = template; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((columnName == null) ? 0 : columnName.hashCode()); result = prime * result + ((template == null) ? 0 : template.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final SimpleColumnsEnum other = (SimpleColumnsEnum) obj; if (columnName == null) { if (other.columnName != null) return false; } else if (!columnName.equals(other.columnName)) return false; if (template == null) { if (other.template != null) return false; } else if (!template.equals(other.template)) return false; return true; } @Override public String toString() { return "SimpleColumnsEnum [columnName=" + columnName + ", template=" + template + "]"; } @Override public String template() { return getColumnName(); } public static SimpleColumnsEnum createFromAttributeType(AttributeType type) { String templateString = "$!{fn.replaceSeperator($fn.getPatientAttribute(\"" + type.getName() + "\"))}"; return new SimpleColumnsEnum(type.getName(), templateString); } public static SimpleColumnsEnum createFromIdentifierType(IdentifierType type) { String templateString = "$!{fn.replaceSeperator($fn.getPatientIdentifier(\"" + type.getName() + "\"))}"; return new SimpleColumnsEnum("ID: " + type.getName(), templateString); } }