package fr.imag.adele.apam.maven.plugin.validation.property;
import org.osgi.framework.Version;
/**
* The basic primitive property type
*
* @author vega
*
*/
public enum PrimitiveType implements Type {
STRING {
@Override
public String getName() {
return "string";
}
@Override
public boolean isValue(Object value) {
return value instanceof String;
}
@Override
public Object value(String value) {
return value;
}
@Override
public String toString(Object value) {
return (String) value;
}
@Override
public boolean isAssignableTo(String className) {
return Mapping.isAssignableFrom(className, String.class);
}
@Override
public boolean isAssignableFrom(String className) {
return Mapping.isAssignableFrom(String.class,className);
}
},
INTEGER {
@Override
public String getName() {
return "integer";
}
@Override
public boolean isValue(Object value) {
return value instanceof Integer;
}
@Override
public Object value(String value) {
try {
return Integer.valueOf(value);
}
catch (NumberFormatException invalidValue) {
return null;
}
}
@Override
public String toString(Object value) {
return ((Integer)value).toString();
}
@Override
public boolean isAssignableTo(String className) {
return Mapping.isAssignableFrom(className, Integer.TYPE) ||
Mapping.isAssignableFrom(className, Integer.class);
}
@Override
public boolean isAssignableFrom(String className) {
return Mapping.isAssignableFrom(Integer.TYPE,className) ||
Mapping.isAssignableFrom(Integer.class,className);
}
},
FLOAT {
@Override
public String getName() {
return "float";
}
@Override
public boolean isValue(Object value) {
return value instanceof Float;
}
@Override
public Object value(String value) {
try {
return Float.valueOf(value);
}
catch (NumberFormatException invalidValue) {
return null;
}
}
@Override
public String toString(Object value) {
return ((Float)value).toString();
}
@Override
public boolean isAssignableTo(String className) {
return Mapping.isAssignableFrom(className, Float.TYPE) ||
Mapping.isAssignableFrom(className, Float.class);
}
@Override
public boolean isAssignableFrom(String className) {
return Mapping.isAssignableFrom(Float.TYPE,className) ||
Mapping.isAssignableFrom(Float.class,className);
}
},
BOOLEAN {
@Override
public String getName() {
return "boolean";
}
@Override
public boolean isValue(Object value) {
return value instanceof Boolean;
}
@Override
public Object value(String value) {
return Boolean.valueOf(value);
}
@Override
public String toString(Object value) {
return ((Boolean)value).toString();
}
@Override
public boolean isAssignableTo(String className) {
return Mapping.isAssignableFrom(className, Boolean.TYPE) ||
Mapping.isAssignableFrom(className, Boolean.class);
}
@Override
public boolean isAssignableFrom(String className) {
return Mapping.isAssignableFrom(Boolean.TYPE,className) ||
Mapping.isAssignableFrom(Boolean.class,className);
}
},
VERSION {
@Override
public String getName() {
return "version";
}
@Override
public boolean isValue(Object value) {
return value instanceof Version;
}
@Override
public Object value(String value) {
try {
return Version.parseVersion(value);
}
catch (IllegalArgumentException invalidValue) {
return null;
}
}
@Override
public String toString(Object value) {
return ((Version)value).toString();
}
@Override
public boolean isAssignableTo(String className) {
return Mapping.isAssignableFrom(className, Version.class);
}
@Override
public boolean isAssignableFrom(String className) {
return Mapping.isAssignableFrom(Version.class,className);
}
};
@Override
public String toString() {
return getName();
}
/**
* Primitive types are only assignable to itself and Type.ANY
*/
@Override
public boolean isAssignableTo(Type type) {
return this.equals(type) || type == Type.ANY;
}
}