Removed badly named datatype_binging public static field from
Layer0Utils in favor of Bindings.DATATYPE. If you were using the
previous Layer0Utils constant in some place, just replace it.
The problem in the optimized code was that it was constantly converting
SCL types like "Double", "Boolean" etc. to databoard datatypes using the
databoard type parser even though those basic primitive types should
have been already premapped somewhere to prevent the need for any kind
of parsing.
gitlab #242
Change-Id: I336d5ebb6b5dbe080372d5b7304d5608f0472297
if(name != null) name = name.intern();
Set<String> classifications = graph.sync(new ClassificationsRequest(graph.getPrincipalTypes(resource)));
if(name != null) name = name.intern();
Set<String> classifications = graph.sync(new ClassificationsRequest(graph.getPrincipalTypes(resource)));
- VariableBuilder variableBuilder = graph.getPossibleAdapter(resource, VariableBuilder.class);
+ VariableBuilder<?> variableBuilder = graph.getPossibleAdapter(resource, VariableBuilder.class);
- Datatype requiredDataType = graph.getPossibleRelatedValue(resource, L0X.RequiresDataType, Layer0Utils.datatype_binging);
+ Datatype requiredDataType = graph.getPossibleRelatedValue(resource, L0X.RequiresDataType, Bindings.DATATYPE);
String definedUnit = graph.getPossibleRelatedValue(resource, L0X.HasUnit, Bindings.STRING);
String definedUnit = graph.getPossibleRelatedValue(resource, L0X.HasUnit, Bindings.STRING);
@SuppressWarnings("rawtypes")
public static final ThreadLocal SCL_GRAPH = new ThreadLocal();
@SuppressWarnings("rawtypes")
public static final ThreadLocal SCL_GRAPH = new ThreadLocal();
- final public static Binding datatype_binging = Bindings.getBindingUnchecked(Datatype.class);
-
public static Resource literal(WriteGraph g, String value) throws DatabaseException {
Layer0 L0 = Layer0.getInstance(g);
Resource r = g.newResource();
public static Resource literal(WriteGraph g, String value) throws DatabaseException {
Layer0 L0 = Layer0.getInstance(g);
Resource r = g.newResource();
Resource range = graph.getPossibleObject(property, L0.HasRange);
if(range != null && !L0.Value.equals(range)) return range;
Resource range = graph.getPossibleObject(property, L0.HasRange);
if(range != null && !L0.Value.equals(range)) return range;
- Datatype requiredDataType = graph.getPossibleRelatedValue(property, L0X.RequiresDataType, datatype_binging);
+ Datatype requiredDataType = graph.getPossibleRelatedValue(property, L0X.RequiresDataType, Bindings.DATATYPE);
if(requiredDataType != null) return getLiteralType(graph, requiredDataType);
String requiredValueType = graph.getPossibleRelatedValue(property, L0.RequiresValueType, Bindings.STRING);
if(requiredDataType != null) return getLiteralType(graph, requiredDataType);
String requiredValueType = graph.getPossibleRelatedValue(property, L0.RequiresValueType, Bindings.STRING);
Layer0 L0 = Layer0.getInstance(graph);
Layer0X L0X = Layer0X.getInstance(graph);
Layer0 L0 = Layer0.getInstance(graph);
Layer0X L0X = Layer0X.getInstance(graph);
- Datatype literalDatatype = graph.getPossibleRelatedValue(value, L0.HasDataType, datatype_binging);
+ Datatype literalDatatype = graph.getPossibleRelatedValue(value, L0.HasDataType, Bindings.DATATYPE);
if(literalDatatype != null) return getSCLType(literalDatatype);
String literalValueType = graph.getPossibleRelatedValue(value, L0.HasValueType, Bindings.STRING);
if(literalDatatype != null) return getSCLType(literalDatatype);
String literalValueType = graph.getPossibleRelatedValue(value, L0.HasValueType, Bindings.STRING);
- Datatype requiredDataType = graph.getPossibleRelatedValue(predicate, L0X.RequiresDataType, datatype_binging);
+ Datatype requiredDataType = graph.getPossibleRelatedValue(predicate, L0X.RequiresDataType, Bindings.DATATYPE);
if(requiredDataType != null) return getSCLType(requiredDataType);
throw new DatabaseException("Unidentified literal data type for property " + NameUtils.getURIOrSafeNameInternal(graph, predicate));
if(requiredDataType != null) return getSCLType(requiredDataType);
throw new DatabaseException("Unidentified literal data type for property " + NameUtils.getURIOrSafeNameInternal(graph, predicate));
}
public static Datatype getPossibleDatatype(ReadGraph graph, Variable variable) throws DatabaseException {
}
public static Datatype getPossibleDatatype(ReadGraph graph, Variable variable) throws DatabaseException {
+ return getPossibleDatatype(graph, variable, null, true);
+ }
+ private static Datatype getPossibleDatatype(ReadGraph graph, Variable variable, PropertyInfo info, boolean checkPropertyDatatype) throws DatabaseException {
Layer0 L0 = Layer0.getInstance(graph);
Layer0X L0X = Layer0X.getInstance(graph);
Resource property = variable.getPossiblePredicateResource(graph);
Layer0 L0 = Layer0.getInstance(graph);
Layer0X L0X = Layer0X.getInstance(graph);
Resource property = variable.getPossiblePredicateResource(graph);
- if(property != null) {
-// Datatype requiredDataType = graph.getPossibleRelatedValue(property, L0X.RequiresDataType, datatype_binging);
- Datatype requiredDataType = graph.syncRequest(new PossibleRelatedValue<Datatype>(property, L0X.RequiresDataType, datatype_binging));
+ if(checkPropertyDatatype && property != null) {
+ Datatype requiredDataType = graph.syncRequest(new PossibleRelatedValue<Datatype>(property, L0X.RequiresDataType, Bindings.DATATYPE));
if(requiredDataType != null) return requiredDataType;
}
Resource literal = variable.getPossibleRepresents(graph);
if(literal != null) {
if(requiredDataType != null) return requiredDataType;
}
Resource literal = variable.getPossibleRepresents(graph);
if(literal != null) {
- Datatype literalDatatype = graph.getPossibleRelatedValue2(literal, L0.HasDataType, new StandardGraphPropertyVariable(graph, variable, null, literal, L0.HasDataType), datatype_binging);
- if(literalDatatype != null) return literalDatatype;
+ Datatype literalDatatype = graph.getPossibleRelatedValue2(literal, L0.HasDataType, new StandardGraphPropertyVariable(graph, variable, null, literal, L0.HasDataType), Bindings.DATATYPE);
+ if(literalDatatype != null) return literalDatatype;
- String requiredValueType = graph.getPossibleRelatedValue(property, L0.RequiresValueType, Bindings.STRING);
+ String requiredValueType = info != null
+ ? info.requiredValueType
+ : graph.getPossibleRelatedValue(property, L0.RequiresValueType, Bindings.STRING);
if(requiredValueType != null) {
Datatype datatype = getPossibleDatatypeForValueType(requiredValueType);
if(datatype != null) return datatype;
if(requiredValueType != null) {
Datatype datatype = getPossibleDatatypeForValueType(requiredValueType);
if(datatype != null) return datatype;
}
private static Datatype getPossibleDatatypeForValueType(String requiredValueType) throws DatabaseException {
}
private static Datatype getPossibleDatatypeForValueType(String requiredValueType) throws DatabaseException {
arrayType = requiredValueType.substring(1, requiredValueType.length()-1);
}
arrayType = requiredValueType.substring(1, requiredValueType.length()-1);
}
- if(arrayType != null) {
- Datatype arrayDataType = getArrayDataTypeForType(arrayType);
- if(arrayDataType != null)
- return arrayDataType;
- }
+ Datatype arrayDataType = getDatatypeForType(arrayType != null ? arrayType : requiredValueType, arrayType != null);
+ if(arrayDataType != null)
+ return arrayDataType;
Datatype dt = Datatypes.getDatatype(requiredValueType);
if(dt != null) return dt;
Datatype dt = Datatypes.getDatatype(requiredValueType);
if(dt != null) return dt;
- private static Datatype getArrayDataTypeForType(String type) {
- if("Double".equals(type)) return Datatypes.DOUBLE_ARRAY;
- else if("String".equals(type)) return Datatypes.STRING_ARRAY;
- else if("Integer".equals(type)) return Datatypes.INTEGER_ARRAY;
- else if("Long".equals(type)) return Datatypes.LONG_ARRAY;
- else if("Float".equals(type)) return Datatypes.FLOAT_ARRAY;
- else if("Byte".equals(type)) return Datatypes.BYTE_ARRAY;
- else if("Boolean".equals(type)) return Datatypes.BOOLEAN_ARRAY;
- else if("Variant".equals(type)) return Datatypes.VARIANT_ARRAY;
+ private static Datatype getDatatypeForType(String type, boolean isArray) {
+ switch (type) {
+ case "Double": return isArray ? Datatypes.DOUBLE_ARRAY : Datatypes.DOUBLE;
+ case "String": return isArray ? Datatypes.STRING_ARRAY : Datatypes.STRING;
+ case "Integer": return isArray ? Datatypes.INTEGER_ARRAY : Datatypes.INTEGER;
+ case "Long": return isArray ? Datatypes.LONG_ARRAY : Datatypes.LONG;
+ case "Float": return isArray ? Datatypes.FLOAT_ARRAY : Datatypes.FLOAT;
+ case "Byte": return isArray ? Datatypes.BYTE_ARRAY : Datatypes.BYTE;
+ case "Boolean": return isArray ? Datatypes.BOOLEAN_ARRAY : Datatypes.BOOLEAN;
+ case "Variant": return isArray ? Datatypes.VARIANT_ARRAY : Datatypes.VARIANT;
+ }
}
Datatype type = getDatatype(graph, variable);
}
Datatype type = getDatatype(graph, variable);
- if (type == null)
- throw new DatabaseException("No datatype available for variable " + variable.getURI(graph));
return Bindings.getBinding(type);
}
return Bindings.getBinding(type);
}
public static Binding getPossibleDefaultBinding(ReadGraph graph, Variable variable) throws DatabaseException {
Resource property = variable.getPossiblePredicateResource(graph);
public static Binding getPossibleDefaultBinding(ReadGraph graph, Variable variable) throws DatabaseException {
Resource property = variable.getPossiblePredicateResource(graph);
+ PropertyInfo info = null;
- PropertyInfo info = graph.syncRequest(new PropertyInfoRequest(property), TransientCacheAsyncListener.<PropertyInfo>instance());
+ info = graph.syncRequest(new PropertyInfoRequest(property), TransientCacheAsyncListener.<PropertyInfo>instance());
if(info.defaultBinding != null) return info.defaultBinding;
}
if(info.defaultBinding != null) return info.defaultBinding;
}
- Datatype type = getPossibleDatatype(graph, variable);
+ Datatype type = getPossibleDatatype(graph, variable, info, false);
if (type == null) return null;
return Bindings.getBinding(type);
if (type == null) return null;
return Bindings.getBinding(type);
if(literal == null)
return "";
if(literal == null)
return "";
- Datatype literalDatatype = graph.getPossibleRelatedValue2(literal, L0.HasDataType, new StandardGraphPropertyVariable(graph, variable, null, literal, L0.HasDataType), datatype_binging);
+ Datatype literalDatatype = graph.getPossibleRelatedValue2(literal, L0.HasDataType, new StandardGraphPropertyVariable(graph, variable, null, literal, L0.HasDataType), Bindings.DATATYPE);
if(literalDatatype != null) {
String unit = getPossibleUnit(literalDatatype);
if(unit != null) return unit;
if(literalDatatype != null) {
String unit = getPossibleUnit(literalDatatype);
if(unit != null) return unit;
Resource property = variable.getPossiblePredicateResource(graph);
if(property != null) {
Resource property = variable.getPossiblePredicateResource(graph);
if(property != null) {
- Datatype requiredDataType = graph.getPossibleRelatedValue(property, L0X.RequiresDataType, datatype_binging);
+ Datatype requiredDataType = graph.getPossibleRelatedValue(property, L0X.RequiresDataType, Bindings.DATATYPE);
if(requiredDataType != null) {
String unit = getPossibleUnit(requiredDataType);
if(unit != null) return unit;
if(requiredDataType != null) {
String unit = getPossibleUnit(requiredDataType);
if(unit != null) return unit;