public int getTuplePosition(int axisIndex, Tuple tuple)
{
if (axisIndex > axes.length)
{
throw new JRRuntimeException("OLAP result doesn't contain Axis(" + axisIndex + ").");
}
String[] memberUniqueNames = tuple.getMemberUniqueNames();
JROlapResultAxis axis = axes[axisIndex];
int tupleCount = axis.getTupleCount();
int pos = -1;
for (int i = 0; i < tupleCount; i++)
{
JROlapMemberTuple memberTuple = axis.getTuple(i);
JROlapMember[] resMembers = memberTuple.getMembers();
if (resMembers.length == memberUniqueNames.length)
{
boolean eq = true;
for (int j = 0; eq && j < resMembers.length; ++j)
{
if (!memberUniqueNames[j].equals(resMembers[j].getUniqueName()))
{
eq = false;
}
}
if (eq)
{
pos = i;
break;
}
}
}
if (pos == -1)
{
StringBuffer sb = new StringBuffer();
sb.append('(');
for (int i = 0; i < memberUniqueNames.length; i++)
{
if (i > 0)
{
sb.append(',');
}
sb.append(memberUniqueNames[i]);
}
throw new JRRuntimeException("No such tuple " + sb + " on axis " + axisIndex + ".");
}
return pos;
}