return this;
}
if ((nFlags & NORMALIZE_PERSISTENCE) != 0 && m_source != null)
{
PersistenceAdapter adapter = m_source.getAdapter();
Field[] fieldArray = adapter.getFields(m_source);
if (fieldArray != null)
{
int nCount = fieldArray.length;
assert nCount > 0;
if (nCount == 1)
{
Field field = fieldArray[0];
first.setSource(field);
first.setType(field.getType());
for (int i = 1; i < m_nOperandCount; ++i)
{
Operator op = m_operandArray[i];
if (op.getValue() == null)
{
op.setType(null);
}
else
{
OID oid = ((OIDHolder)op.getValue()).getOID();
if (oid != null)
{
Object[] valueArray = adapter.getValues(oid, m_source);
if (valueArray.length != 1)
{
throw new TypeMismatchException(getSymbol());
}
op.setValue(valueArray[0]);
op.setType(Primitive.primitiveOf(op.getValue()));
}
else
{
removeOperand(i--);
}
}
}
return normalize(nFlags | NORMALIZE_NORECUR);
}
else
{
OrOperator or = new OrOperator();
for (int i = 1; i < m_nOperandCount; ++i)
{
Operator op = m_operandArray[i];
Object[] valueArray = null;
if (op.getValue() != null)
{
OID oid = ((OIDHolder)op.getValue()).getOID();
if (oid != null)
{
valueArray = adapter.getValues(oid, m_source);
if (valueArray.length != nCount)
{
throw new TypeMismatchException(getSymbol());
}