GenericStoreDataArray.java
package hu.ddsi.java.database;
import java.lang.reflect.Field;
import eu.javaexperience.interfaces.ObjectWithProperty;
import eu.javaexperience.interfaces.ObjectWithPropertyStorage;
public class GenericStoreDataArray implements ObjectWithProperty
{
final GenericStoreDataType primitivType;
int dimensions;
public GenericStoreDataArray(GenericStoreDataType primitiveType,int dimension)
{
this.primitivType = primitiveType;
this.dimensions = dimension;
}
public GenericStoreDataType getDataType()
{
return primitivType;
}
public int getDimensionNumber()
{
return dimensions;
}
public static GenericStoreDataArray determineGenericStoreData(Field f)
{
return determineGenericStoreData(f, f.getType(),0);
}
private static GenericStoreDataArray determineGenericStoreData(Field f,Class<?> cls,int level)
{
if(cls.isArray())
return determineGenericStoreData(f, cls.getComponentType(), level+1);
return new GenericStoreDataArray(GenericStoreDataType.getStoreType(cls,f.getAnnotations()), level);
}
@Override
public Object get(String key)
{
return PROPS.get(this, key);
}
@Override
public String[] keys()
{
return PROPS.keys();
}
protected static ObjectWithPropertyStorage<GenericStoreDataArray> PROPS = new ObjectWithPropertyStorage<>();
static
{
PROPS.addExaminer("dimensions", (e)->e.dimensions);
PROPS.addExaminer("storageType", (e)->e.primitivType);
}
}