DealStatus.java
package com.tradecloud.domain.model.deal;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.*;
@Embeddable
public class DealStatus implements Serializable, State {
// QUOTED,
// ACCEPTED,
// INVOICED,
// SETTLED,
// AUDIT
public static final DealStatus QUOTED = new DealStatus("QUOTED", 0, "dealInformationQuoted");
public static final DealStatus ACCEPTED = new DealStatus("ACCEPTED", 1, "dealInformationAccepted");
public static final DealStatus INVOICED = new DealStatus("INVOICED", 2, "dealInformationInvoiced");
public static final DealStatus SETTLED = new DealStatus("SETTLED", 3, "dealInformationSettled");
public static final DealStatus AUDIT = new DealStatus("AUDIT", 4, "");
@Column(name = "status")
private String statusName;
@Transient
private Integer displaySequence;
@Transient
private static final Map<String, DealStatus> lookup = new HashMap<String, DealStatus>();
@Transient
private static final String EMPTY_OPTION = "{optionValue:'', optionDisplay: ''}";
public static final List<DealStatus> dealStatuses = new ArrayList<DealStatus>();
@Transient
private String messageKey;
static {
lookup.put("QUOTED", QUOTED);
lookup.put("ACCEPTED", ACCEPTED);
lookup.put("INVOICED", INVOICED);
lookup.put("SETTLED", SETTLED);
lookup.put("AUDIT", AUDIT);
dealStatuses.add(QUOTED);
dealStatuses.add(ACCEPTED);
dealStatuses.add(INVOICED);
dealStatuses.add(SETTLED);
dealStatuses.add(AUDIT);
}
public DealStatus(String statusName, Integer displaySequence, String messageKey) {
this.statusName = statusName;
this.displaySequence = displaySequence;
this.messageKey = messageKey;
}
@Deprecated
public DealStatus() {
}
public String getStatusName() {
return statusName;
}
public Integer getDisplaySequence() {
return displaySequence;
}
public String toHTMLSelectOptionJSONString() {
return "{optionValue:'" + statusName + "', optionDisplay: '" + statusName + "'}";
}
public static DealStatus get(String key) {
return lookup.get(key);
}
public static String valuesAsHTMLSelectOptionsJSONString() {
StringBuilder builder = new StringBuilder("[");
// Arrays.sort(dealStatuses, new Comparator<DealStatus>() {
// public int compare(DealStatus o1, DealStatus o2) {
// return o2.getDisplaySequence().compareTo(o1.getDisplaySequence());
// }
// });
if (dealStatuses.size() > 0) {
for (DealStatus dealStatus : dealStatuses) {
if (builder.length() > 1) {
builder.append(",");
}
builder.append(dealStatus.toHTMLSelectOptionJSONString());
}
builder.append(",").append(EMPTY_OPTION);
}
builder.append("]");
return builder.toString();
}
public static boolean isInvalidStateForLinking(DealStatus status, boolean allowQuotedDealsToLinkToFecConfig) {
return (status.equals(DealStatus.QUOTED) && !allowQuotedDealsToLinkToFecConfig) || status.equals(DealStatus.AUDIT);
}
public static String toXML(List<DealStatus> dealStatuses) {
String builder = "<dealstatuses>";
for (DealStatus dealStatus : dealStatuses) {
builder += "<dealstatus>";
builder += "<name>";
builder += dealStatus.getStatusName();
builder += "</name>";
builder += "</dealstatus>";
}
builder += "</dealstatuses>";
return builder;
}
public static String toXML() {
return toXML(dealStatuses);
}
@Override
public String toString() {
return "DealStatus [statusName=" + statusName + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((statusName == null) ? 0 : statusName.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;
DealStatus other = (DealStatus) obj;
if (statusName == null) {
if (other.statusName != null)
return false;
} else if (!statusName.equals(other.statusName))
return false;
return true;
}
@Override
public boolean isValidState() {
return !this.equals(AUDIT);
}
@Override
public String getMessageKey() {
return messageKey;
}
public static Collection<String> allAsStrings() {
return lookup.keySet();
}
}