private void cacheMetadata()

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();
        }
    }