package com.biznow.ordernow.model;
public enum OrderStatus {
ModifiedOrder {
@Override
public String getSymbol() {
return "U";
}
@Override
public OrderStatus newStatus(OrderStatus itemNewStatus) {
if(isNewRequestedStatusNull(itemNewStatus)) {
return this;
}
if(itemNewStatus==OrderStatus.Complete)
return ModifiedOrder;
return itemNewStatus;
}
},
Recieved {
@Override
public String getSymbol() {
return "R";
}
@Override
public OrderStatus newStatus(OrderStatus itemNewStatus) {
if(isNewRequestedStatusNull(itemNewStatus)) {
return this;
}
return itemNewStatus;
}
},
Accepted {
@Override
public String getSymbol() {
return "A";
}
@Override
public OrderStatus newStatus(OrderStatus itemNewStatus) {
if(isNewRequestedStatusNull(itemNewStatus)) {
return this;
}
return itemNewStatus;
}
},
Sent {
@Override
public String getSymbol() {
return "S";
}
@Override
public OrderStatus newStatus(OrderStatus itemNewStatus) {
if(isNewRequestedStatusNull(itemNewStatus)) {
return this;
}
return itemNewStatus;
}
}, Complete {
@Override
public String getSymbol() {
return "F";
}
@Override
public OrderStatus newStatus(OrderStatus itemNewStatus) {
if(isNewRequestedStatusNull(itemNewStatus)) {
return this;
}
return OrderStatus.Complete;
}
}, NULL {
@Override
public String getSymbol() {
return "";
}
@Override
public OrderStatus newStatus(OrderStatus itemCurrentStatus) {
return itemCurrentStatus;
}
};
;
public abstract String getSymbol();
public abstract OrderStatus newStatus(OrderStatus itemNewStatus);
protected boolean isNewRequestedStatusNull(OrderStatus itemNewStatus) {
return itemNewStatus==NULL;
}
}