in rdb/src/main/java/org/apache/tuscany/das/rdb/graphbuilder/impl/ResultSetRow.java [160:201]
private void cacheMetadata() {
tablePropertyNames = new String[resultSetSize + 1];
columnPropertyNames = new String[resultSetSize + 1];
isPKColumn = new boolean[resultSetSize + 1];
String tablePropertyName = null;
boolean isPK;
List pkColumnList = new ArrayList();
// loop thru indexes
for (int i = 1; i <= resultSetSize; i++) {
columnPropertyNames[i] = metadata.getColumnPropertyName(i);
tablePropertyName = metadata.getTablePropertyName(i);
tablePropertyNames[i] = tablePropertyName;
List indexes = (List) indexesByTablePropertyName.get(tablePropertyName);
if (indexes == null) {
indexes = new ArrayList();
indexesByTablePropertyName.put(tablePropertyName, indexes);
}
indexes.add(new Integer(i));
isPK = metadata.isPKColumn(i);
isPKColumn[i] = isPK;
if (isPK) {
pkColumnList.add(new Integer(i));
}
}
// reorganize indexes by table property name
for (Iterator itTablePropertyNames = indexesByTablePropertyName.keySet().iterator(); itTablePropertyNames.hasNext(); ) {
tablePropertyName = (String) itTablePropertyNames.next();
List indexes = (List) indexesByTablePropertyName.get(tablePropertyName);
int count = indexes.size();
int[] indexArray = new int[count];
for (int i = 0; i < count; i++) {
indexArray[i] = ((Integer) indexes.get(i)).intValue();
}
indexesByTablePropertyName.put(tablePropertyName, indexArray);
}
// reorganize indexes for PKs
int count = pkColumnList.size();
indexesForPKs = new int[count];
for (int i = 0; i < count; i++) {
indexesForPKs[i] = ((Integer) pkColumnList.get(i)).intValue();
}
}