oVTR.setRange(oValueOfExpression, "=");
}
return oVTR;
}
else if (in_oExpression instanceof TCGOCLOperation) {
TCGOCLOperation oOperation = (TCGOCLOperation)in_oExpression;
Map<TCGOCLAtom, Pair<ValueType, ValueType>> colAtomToValueRanges =
new LinkedHashMap<TCGOCLAtom, Pair<ValueType, ValueType>>();
for(TCGOCLAtom oAtom : in_colCurrentValueTypeRanges.keySet()) {
if(!(in_colCurrentValueTypeRanges.get(oAtom) instanceof OrderedValueTypeRange)) {
return null;
}
OrderedValueTypeRange oVTR =
(OrderedValueTypeRange)in_colCurrentValueTypeRanges.get(oAtom);
OrderedValueType oMaxVT = oVTR.getMaxValue();
if(!oVTR.isMaxIncluded())
oMaxVT = oMaxVT.getLowerValueMinDistance();
OrderedValueType oMinVT = oVTR.getMinValue();
if(!oVTR.isMinIncluded())
oMinVT = oMinVT.getUpperValueMinDistance();
colAtomToValueRanges.put(oAtom, new Pair<ValueType, ValueType>(
oMinVT, oMaxVT));
}
Pair<ValueType, ValueType> oValueTypePair =
m_oMinValue.createValueFromExpression(
oOperation.getRight(), in_colCurrentValueAssignment,
colAtomToValueRanges);
if(oValueTypePair != null) {
OrderedValueType oFirstValue = (OrderedValueType)oValueTypePair.getFirst();
OrderedValueType oSecondValue = (OrderedValueType)oValueTypePair.getSecond();
OrderedValueTypeRange<OVT> oVTR = new OrderedValueTypeRange<OVT>(