String [] fixedUpNames = new String[dataNames.length];
for (int i=dataNames.length; i>0; )
if (dataNames[--i].charAt(0) == '!')
fixedUpNames[i] = fixupName(dataNames[i]);
SaveableData value;
for (int p=0; p < prefixes.length; p++) {
// get the next prefix
prefix = prefixes[p];
// remove the name of the orderBy data element, & the preceeding /
prefix = prefix.substring(0, prefix.length() - tailLen);
if (baseLen > prefix.length())
result.setRowName(p+1, "");
else
result.setRowName(p+1, prefix.substring(baseLen));
// look up the data for this row.
for (int d=0; d < dataNames.length; d++)
if (dataNames[d].startsWith("![(")) {
dataName = DataRepository.anonymousPrefix + "/" +
prefix + "/" + fixedUpNames[d];
value = data.getSimpleValue(dataName);
if (value == null) try {
value = ValueFactory.create
(dataName, dataNames[d], data, prefix);
data.putValue(dataName, value);
} catch (MalformedValueException mve) { }
result.setData(p+1, d+1,
value==null ?null :value.getSimpleValue());
} else if (dataNames[d].startsWith("\"")) { try {
result.setData(p+1, d+1, new StringData(dataNames[d]));
} catch (MalformedValueException mve) {
result.setData(p+1, d+1, null);