package io.lumify.web.clientapi.model;
import com.fasterxml.jackson.annotation.JsonValue;
import java.math.BigDecimal;
import java.util.Date;
public enum PropertyType {
DATE("date"),
STRING("string"),
GEO_LOCATION("geoLocation"),
IMAGE("image"),
BINARY("binary"),
CURRENCY("currency"),
DOUBLE("double"),
BOOLEAN("boolean"),
INTEGER("integer");
public static final String ORG_SECUREGRAPH_TYPE_GEO_POINT = "org.securegraph.type.GeoPoint";
private final String text;
PropertyType(String text) {
this.text = text;
}
@Override
public String toString() {
return this.text;
}
@JsonValue
public String getText() {
return text;
}
public static PropertyType convert(String property) {
for (PropertyType pt : PropertyType.values()) {
if (pt.toString().equalsIgnoreCase(property)) {
return pt;
}
}
return STRING;
}
public static Class getTypeClass(PropertyType propertyType) {
switch (propertyType) {
case DATE:
return Date.class;
case STRING:
return String.class;
case GEO_LOCATION:
try {
return Class.forName(ORG_SECUREGRAPH_TYPE_GEO_POINT);
} catch (ClassNotFoundException e) {
throw new RuntimeException("Could not find class: " + ORG_SECUREGRAPH_TYPE_GEO_POINT);
}
case IMAGE:
return byte[].class;
case BINARY:
return byte[].class;
case CURRENCY:
return BigDecimal.class;
case BOOLEAN:
return Boolean.class;
case DOUBLE:
return Double.class;
case INTEGER:
return Integer.class;
default:
throw new RuntimeException("Unhandled property type: " + propertyType);
}
}
}