1. Enum Class
public enum ContainerPropertyConstants {
RETAILER("retailer"),
LINED("isLined"),
BAGGING("bagging"),
MISSING("missing"),
MOVABLE("movable"),
RESERVABLE("reservable"),
CONTAINED_DELIVERY_TOTE("hasContainerDeliveryTote"),
DAMAGED("isDamaged"),
DIRTY("isDirty"),
TAINTED("isTainted"),
CONTAINED_STOCK("hasContainedStock"),
UNKNOWN("unknown");
private String value;
private ContainerPropertyConstants(String value) {
this.value = value;
}
public String getValue() {
return value;
}
@Override
public String toString() {
return this.getValue();
}
public static ContainerPropertyConstants getEnum(String propertyKey) {
for(ContainerPropertyConstants v : values()) {
if(v.getValue().equals(propertyKey.trim())) {
return v;
}
}
return UNKNOWN;
}
}
2. Use Enum Class
private BinAttributes getBinAttributes(Map<PropertyKey, PropertyValue> properties, BinAttributes.Builder builder) {
properties.forEach((k, v) -> {
switch (ContainerPropertyConstants.getEnum(k.toString())) {
case LINED:
break;
case MOVABLE:
builder.setAccessibleToPhoenix(Boolean.valueOf(v.getPropertyValue()));
break;
case RESERVABLE:
break;
case CONTAINED_DELIVERY_TOTE:
break;
case DAMAGED:
builder.setDamaged(Boolean.valueOf(v.getPropertyValue()));
break;
case DIRTY:
builder.setContaminated( Boolean.valueOf(v.getPropertyValue()));
break;
case TAINTED:
builder.setTainted(Boolean.valueOf(v.getPropertyValue()));
break;
case CONTAINED_STOCK:
break;
case UNKNOWN:
throw new IllegalArgumentException("Phoenix container property [" + k + "] not recognised.");
default:
logger.info("Currently cannot handle container property [{}]", k);
break;
}
});
return builder.build();
}